搜索
bottom↓
回复: 6

ST7920芯片控制的12864液晶的反白

[复制链接]

出0入0汤圆

发表于 2011-10-27 20:44:56 | 显示全部楼层 |阅读模式
针对ST7920芯片控制的12864液晶,我给大家讲一课,认真听哦

先熟悉一个重要概念
在ST7920中,字符显示的DDRAM和图形的GDRAM是相互独立的,而最后显示到液晶上的结果,是两个RAM中数据的异或。

先写上程序,然后分析一下,这样大家比较容易懂!

//反白或显示图片 参数格式:X坐标(16bit),Y坐标(1bit),X0坐标(16bit),Y0坐标(1bit)*/
void con_disp (uchar data1,uchar data2,uchar x0,uchar y0,uchar xl,uchar yl)
{
    uchar i,j;
   for(j=0;j<yl;j++)
   {
       for(i=0;i<xl;i++)
     {
        write_com(0x34);     // 扩展功能
        write_com(y0+j);      // 写Y坐标
        write_com(x0+i);     // 写X坐标
        write_com(0x30);     // 普通功能
        write_data(data1);
        write_data(data2);
    }
  }
    write_com(0x36);      // 开绘图显示
}

1、这个函数,X0,Y0是左上角坐标,X1,Y1分别是列数(水平坐标)和行数(垂直坐标)。因为水平坐标是以二字节(16位)为单位,一次性要写入两字节(data1,data2),因此如果要反白则(data1,data2都为0XFF),如果要绘图(data1,data2可以为其它,此绘图函数主要用来绘制导航标头的)。


2、写入资料到内部RAM(包括DDRAM、GDRAM等)是基本操作指令,因此之前  要写write_com(0X30);
   写DDRAM地址是基本操作指令,因此之前要写write_com(0X30);
   写GDRAM地址是扩展操作指令,因此之前要写write_com(0X34);(此时要关绘图显示),然后写完GDRAM数据,最后要开绘图显示write_com(0X36);

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2011-10-27 20:47:00 | 显示全部楼层
回复【楼主位】chenguanghua
-----------------------------------------------------------------------

二、对于整屏既有图象又有文本,则可以用两种方式实现:
  1、 首先文本DDRAM写入要写的字符,其余全部空格(即0X00),然后再在没有字符的地方(即非点亮的晶格中,0X00)绘入图象。DDRAM与GDRAM异或后就可以整屏实现图象与文本。参见程序实例1。
  2、 首先图象GDRAM绘入要绘的图象,其余全部用con_disp()反白(或显示图象)函数(见程序实例1)写入0X00,然后再在没有图象的地方(即0X00)处写入文本。同样DDRAM与GDRAM异或后就可以整屏实现图象与文本。参见程序实例2.

  注意:根据最后显示到液晶上的结果,是两个RAM中数据的异或结果,我们可以知道,con_disp()反白(或显示图象)函数只能对文本字符进行反白,而不能对图形进行反白,因为con_disp()反白(或显示图象)函数本身是一个绘图函数,数据是写到GDRAM中去,只能与DDRAM(文本)异或,而不能与GDRAM(图象)异或。那么图象如何反白呢?我们在绘入图象时可以用按位取反符号“~”,如write_data(~date),这样就可以对你要绘入的图象进行取反了!如果用con_disp()反白(或显示图象)函数对GDRAM进行反白,就会出现重叠覆盖现象

出85入85汤圆

发表于 2011-10-29 10:57:02 | 显示全部楼层
好,顶楼主。好好学习一下……

出0入0汤圆

发表于 2012-12-4 10:27:22 | 显示全部楼层
好资料mark!!!!

出0入0汤圆

发表于 2013-3-25 16:56:17 | 显示全部楼层
资料不错,只是示例一和示例二在哪儿呢?

出0入0汤圆

发表于 2013-5-20 21:45:05 | 显示全部楼层
chenguanghua 发表于 2011-10-27 20:47
回复【楼主位】chenguanghua
-----------------------------------------------------------------------
...

想请教一下,这段程序是不是汉字的反白,能不能实现单个字符的反白呢

出0入0汤圆

发表于 2013-11-9 17:33:36 | 显示全部楼层
好的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 05:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表