欢迎来到天天文库
浏览记录
ID:37837657
大小:119.00 KB
页数:5页
时间:2019-06-01
《12864显示文字+图像》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、引用12864液晶原理分析3他山之石2010-07-2120:52:05阅读7评论0字号:大中小小峰的12864液晶原理分析3一、ST7920控制IC的LCD12864实现反白显示从使用手册上可知,扩展指令里的0x03+行号即可实现反白对应行。但是ST7920控制器的128×64点阵液晶其实原理上等同256×32点阵,第三行对应的DDRAM地址紧接第一行;第四行对应的DDRAM地址紧接第二行。所以128×64点阵的液晶执行反白功能时实用意义不大,因为用户对第一行执行反白显示操作时,第三行必然也反白显示;第二行反白,第四行也必然反白。其实还是有办法做到单行反白的,
2、解决方法就是混用图形显示和字符显示。其理论支持在于:在ST7920中,字符显示的DDRAM和图形的GDRAM是相互独立的,而最后显示到液晶上的结果,是两个RAM中数据的异或。具体来说:假如某个点上,绘图RAM的没有绘图(数据为0),而字符RAM上有点阵(数据为1),那么异或的结果就是1,也就是说正常显示字符;当字符上RAM没有点阵的时候,异或的结果是0,自然也就不显示了。假如该点上绘图RAM绘图了(数据为1),当字符RAM上有点阵(数据为1时),异或的结果为0,效果就是反白显示;如果字符RAM没有点阵(数据为0时),异或结果为1,效果就是显示绘图的背景。所以,如
3、果要在某个地方反白显示,那么就在该点绘图并且写字,如果要取消反白,就重新用全0擦掉那个地方的绘图!这样一来可以实现任何地方、任意大小的反白显示,反而比原指令中的单行反白的功能更好更强大。二、对于整屏既有图象又有文本,则可以用两种方式实现:1、首先文本DDRAM写入要写的字符,其余全部空格(即0X00),然后再在没有字符的地方(即非点亮的晶格中,0X00)绘入图象。DDRAM与GDRAM异或后就可以整屏实现图象与文本。参见程序实例1。2、首先图象GDRAM绘入要绘的图象,其余全部用con_disp()反白(或显示图象)函数(见程序实例1)写入0X00,然后再在没有
4、图象的地方(即0X00)处写入文本。同样DDRAM与GDRAM异或后就可以整屏实现图象与文本。参见程序实例2.注意:根据最后显示到液晶上的结果,是两个RAM中数据的异或结果,我们可以知道,con_disp()反白(或显示图象)函数只能对文本字符进行反白,而不能对图形进行反白,因为con_disp()反白(或显示图象)函数本身是一个绘图函数,数据是写到GDRAM中去,只能与DDRAM(文本)异或,而不能与GDRAM(图象)异或。那么图象如何反白呢?我们在绘入图象时可以用按位取反符号“~”,如write_data(~date),这样就可以对你要绘入的图象进行取反了!
5、如果用con_disp()反白(或显示图象)函数对GDRAM进行反白,就会出现重叠覆盖现象,如下图:。。。第一幅图被反白函数覆盖了//////////////////////////////////////////////////程序实例1:(con_disp()反白(或显示图象)函数)//反白或显示图片参数格式:(H)8bit数据,(L)8bit数据,X0坐标(16bit),Y0坐标(1bit),X坐标(16bit),Y坐标(1bit)*/voidcon_disp(uchardata1,uchardata2,ucharx0,uchary0,ucharxl,uc
6、haryl){uchari,j;for(j=0;j7、ata2),因此如果要反白则(data1,data2都为0XFF),如果要绘图(data1,data2可以为其它,此绘图函数主要用来绘制导航标头的)。2、写入资料到内部RAM(包括DDRAM、GDRAM等)是基本操作指令,因此之前要写write_com(0X30);写DDRAM地址是基本操作指令,因此之前要写write_com(0X30);写GDRAM地址是扩展操作指令,因此之前要写write_com(0X34);(此时要关绘图显示),然后写完GDRAM数据,最后要开绘图显示write_com(0X36);////////////////////////////8、////////////
7、ata2),因此如果要反白则(data1,data2都为0XFF),如果要绘图(data1,data2可以为其它,此绘图函数主要用来绘制导航标头的)。2、写入资料到内部RAM(包括DDRAM、GDRAM等)是基本操作指令,因此之前要写write_com(0X30);写DDRAM地址是基本操作指令,因此之前要写write_com(0X30);写GDRAM地址是扩展操作指令,因此之前要写write_com(0X34);(此时要关绘图显示),然后写完GDRAM数据,最后要开绘图显示write_com(0X36);////////////////////////////
8、////////////
此文档下载收益归作者所有