大神帮我看看,我的12864打点程序为什么只能话竖线,横线就被后面的覆盖了,只剩下最后一个点?
u8 DrawDots(u8 x,u8 y,u8 color)//打点函数 //x,y为128*64 点阵的坐标
{
u8 row,xlabel,xlabel_bit;
u8 Read_H=0,Read_L=0;
Write_LCD_Command(0x34); //扩充指令
Write_LCD_Command(0x36); //绘图指令
xlabel=x>>4; //确定水平坐标地址
xlabel_bit=x & 0x0F; // 细分水平坐标中的第几位
if(y<32) row=y;
else { row=y-32; xlabel+=8; }
Write_LCD_Command(row+0x80);
Write_LCD_Command(xlabel+0x80);
Read_Data();
Read_H=Read_Data();
Read_L=Read_Data();
Write_LCD_Command(row+0x80);
Write_LCD_Command(xlabel+0x80); //水平坐标地址+基址=显示的水平地址
if(xlabel_bit<8)
{
switch(color)
{
case 0:Read_H &=(~(0x01<<(7-xlabel_bit))); break; //变暗 ,看不见
case 1:Read_H |=(0x01<<(7-xlabel_bit)); break; //变亮 ,看得见
case 2:Read_H ^=(0x01<<(7-xlabel_bit)); break; //反转
default:break;
}
Write_LCD_Data(Read_H);
Write_LCD_Data(Read_L);
}
else
{
switch(color)
{
case 0:Read_L &=(~(0x01<<(15-xlabel_bit))); break; //变暗 ,看不见
case 1:Read_L |=(0x01<<(15-xlabel_bit)); break; //变亮 ,看得见
case 2:Read_L ^=(0x01<<(15-xlabel_bit)); break; //反转
default:break;
}
Write_LCD_Data(Read_H);
Write_LCD_Data(Read_L);
}
Write_LCD_Command(0x30);//恢复正常模式
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
看数据手册吧,有些不支持串口READ,不过可以用缓存实现读,12864缓存1KB。
一周热门 更多>