12864液晶显示图片原理(完整版) 下载本文

______________________________________________________________________________________________________________

wr_lcd(comm,0x30); //但因为是分块,要有个for(i=0;i<2;i++)的循环。

if(cpl_sign==1) // 图片反选 {

wr_lcd(dat,~menu_pic[menu_num][j*4+i*2]); //写入一字节

wr_lcd(dat,~menu_pic[menu_num][j*4+i*2+1]); //再写入一字节 }

else // 正常显示 {

wr_lcd(dat,menu_pic[menu_num][j*4+i*2]);

wr_lcd(dat,menu_pic[menu_num][j*4+

精品资料

______________________________________________________________________________________________________________

i*2+1]); } }

y++; //垂直地址要由软件设定自动加1

if(y==32&&menu_num<3)

{x+=8;y=0;} // 上下屏切换。0/1/2三幅图Y坐标由16加了

} //16行,跳入下半屏,水平坐标X变成0X80+08,垂直坐标变成0X80+00 wr_lcd(comm,0x36); }

精品资料

______________________________________________________________________________________________________________

(旁边还未处理)待续……

精品资料

______________________________________________________________________________________________________________

一、ST7920控制IC的LCD12864实现反白显示

从使用手册上可知,扩展指令里的0x03+行号即可实现反白对应行。但是ST7920 控制器的128×64 点阵液晶其实原理上等同256×32 点阵,第三行对应的DDRAM 地址紧接第一行;第四行对应的DDRAM 地址紧接第二行。所以128×64 点阵的液晶执行反白功能时实用意义不大,因为用户对第一行执行反白显示操作时,第三行必然也反白显示;第二行反白,第四行也必然反白。

其实还是有办法做到单行反白的,解决

精品资料

______________________________________________________________________________________________________________

方法就是混用图形显示和字符显示。其理论支持在于:在ST7920中,字符显示的DDRAM和图形的GDRAM是相互独立的,而最后显示到液晶上的结果,是两个RAM中数据的异或。

具体来说:假如某个点上,绘图RAM的没有绘图(数据为0),而字符RAM上有点阵(数据为1),那么异或的结果就是1,也就是说正常显示字符;当字符上RAM没有点阵的时候,异或的结果是0,自然也就不显示了。假如该点上绘图RAM绘图了(数据为1),当字符RAM上有点阵(数据为1时),异或的结果为0,效果就是反白显示;如果字符RAM没有点阵(数据为0时),异或结果为1,效果就是显示绘图

精品资料