- 打点绘图,适用于在屏幕上打稀疏的几个点,不能用于横行连续打点
- void LCD_draw_point(u8 x, u8 y)
- {
- u8 x_byte, x_bit; //在横坐标的哪一个字节,哪一个位
- u8 y_byte, y_bit; //在纵坐标的哪一个字节,哪一个位
- x_byte=x/16; //算出它在哪一个字节(地址)
- //注意一个地址是16位的
- x_bit=x%16; //(取模)算出它在哪一个位
- y_byte=y/32; //y是没在哪个字节这个说法
- //这里只是确定它在上半屏(32行为一屏)还是下半屏
- //0:上半屏 1:下半屏
- y_bit=y%32; //y_bit确定它是在第几行
- LCD_write_com(0x34); //打开扩展指令集
-
- LCD_write_com(0x80+y_bit); //垂直地址(上) 貌似与说明书正好相反
- LCD_write_com(0x80+x_byte+8*y_byte); //先写水平坐标(下) 貌似与说明书正好相反 ???????
-
- //具体参照数据手册
- //下半屏的水平坐标起始地址为0x88
- //(+8*y_byte)就是用来确定在上半屏还是下半屏
- if(x_bit<8) //如果x_bit位数小于8
- {
- LCD_write_dat(0x01<<(7-x_bit)); //写高字节。因为坐标是从左向右的
- //而GDRAM高位在左,低位在右
- LCD_write_dat(0x00); //低字节全部填0
- }
- else
- {
- LCD_write_dat(0x00); //高字节全部填0
- LCD_write_dat(0x01<<(15-x_bit));
- }
- LCD_write_com(0x36); //打开绘图显示
- LCD_write_com(0x30); //回到基本指令集
- }
复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>