μC/GUI在MSGl9264液晶上的移植
U8 CacheByte=Cache[Adrl; //获得显示RAM的数值
if(c) //根据颜色修改显示RAM的值
CacheBytel=Mask; //对应位“置1”
else
CacheByte&=~Mask; //对应位清零
LCD_WRITE(Adr,CacheByte);
//把CacheByte写入液晶显存并更改
Cache[Adr]的值为CacheByte
}
函数的参数x,y代表要画点的位置(x为横坐标,y为纵坐标),参数c代表要画点的颜色。在函数内部,U8为μC/GUI提供的数据格式(相当于unsigned char),Mask为屏蔽字,Adr为x,y对应显示Cache的地址。
以把液晶的(5,5)处点亮为例,此时x=5,y=5,c=1,可计算出Mask=00100000,Adr=40(表示在Cache[40]处存有(5,5)点的颜色值)。由于c=1,所以应把Cache[40]中对应位“置1”,这是通过CacheByte的值“或”上Mask的值00100000实现的。最后通过调用LCD_WRITE函数把得到的新CacheByte值写入液晶对应的地址即可点亮该点。类似地,若要使某点不亮(c=0),则应该把对应位“清零”,这可以通过CacheByte&=~Mask这条命令实现。
画点函数中调用的LCD_Write函数可如下实现:
static void LCD_Write(int Adr,U8 Byte){
if(CacheIAdrl!=Byte){ //若写入值与原值不符则
把写入值保存到显示RAM中
Cache[Adr]=Byte;
if(LCD_Adr!=Adr){
LCD_SETADR(Adr); //设置液晶的起始行、起始列和CSA、CSB
}
LCD_WRITEl(Bytc);
}}
由于此液晶由三块64x64的液晶组成,LCD_SETADR函数除了设置液晶的起始行、起始列外还应根据Ad
《μC/GUI在MSGl9264液晶上的移植(第4页)》