[STC单片机] LCD12864B反白指令使用问题

[复制链接]
548|16
 楼主 | 2018-6-10 23:03 | 显示全部楼层 |阅读模式
本帖最后由 一叶倾城wwq 于 2018-6-11 22:50 编辑

使用反白指令后,(我写了反白指令后写地址也是不行)只能同时反白一三行和二四行,说明书说的任意一行呢?我使用的是12864B,而且反白行还会闪烁,本来闪烁很快的,我加了延时才闪的慢一点,如何让它固定反白一行且不闪烁呢?情况如下图请各位前辈指点迷津
程序如下:/*********************************************
FunctionName: writeWord
FunctionInfo: 练习写汉字函数
Input:        no
Output:       no
注:
**********************************************/
void writeWord(void)
{
  uchar        tab[2]  ={"出"};  //注意一个汉字占两个字节
  uchar tab1[44]={"下雨天,想看蓝天白云;对了,出门记得带伞^_^ "};  //最后这个占4字节
  uchar i;

  wr_cmd(0x30);
  wr_cmd(0x30);             //基本指令集            
  wr_cmd(0x0C);             //整体显示  

  wr_cmd(0x80);          //行
  //wr_dat(tab[0]);               
  //wr_dat(tab[1]);         
  for(i=0;i<4;i++)  
    {
         wr_dat(tab1[i*2]);
         wr_dat(tab1[i*2+1]);  //一个汉字两个字节需一次写入
        }
  wr_cmd(0x90);
  for(i=4;i<11;i++)  
    {
         wr_dat(tab1[i*2]);
         wr_dat(tab1[i*2+1]);
        }
  wr_cmd(0x88);
  for(i=11;i<14;i++)  
    {
         wr_dat(tab1[i*2]);
         wr_dat(tab1[i*2+1]);
        }
  wr_cmd(0x98);
  for(i=14;i<22;i++)  
    {
         wr_dat(tab1[i*2]);
         wr_dat(tab1[i*2+1]);
        }   
   reverseWhite(1);   //反白显示 在写完数据后写指令
   delay_ms(1000);
}

/*********************************************
FunctionName: reverseWhite
FunctionInfo: 反白显示函数
Input:        row
Output:       no
注:
**********************************************/
void reverseWhite(uchar row)
{
  uchar x,y;
  wr_cmd(0x34);
  wr_cmd(0x34);        //扩充指令集
  switch(row)
    {
         case 1:
              {
                   wr_cmd(0x04);                 //反白显示第一行
                   //wr_cmd(0x80);                //测试能不能写地址->不能   
                   break;
                  }               
         case 2: wr_cmd(0x05);break;//wr_cmd(0x90);
         case 3: wr_cmd(0x06);break;
         case 4: wr_cmd(0x07);break;
         default : break;
        }
}

D:\用户目录\我的图片\反白一行1.jpg
D:\用户目录\我的图片\反白一行.jpg

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
| 2018-6-11 08:29 | 显示全部楼层
仔细核对手册和驱动
| 2018-6-11 08:43 | 显示全部楼层
程序贴出来,是什么主控IC?自带字库的ST7920?
| 2018-6-11 08:51 | 显示全部楼层
程序符合规格书的要求吗?
可以把程序传上来,让大家给你分析分析。
 楼主 | 2018-6-11 09:37 | 显示全部楼层
ayb_ice 发表于 2018-6-11 08:29
仔细核对手册和驱动

手册上对于反白只是用了几句话说明,晚上我会再好好看看,不行再贴出请大家分析
 楼主 | 2018-6-11 09:39 | 显示全部楼层
henangongda123 发表于 2018-6-11 08:43
程序贴出来,是什么主控IC?自带字库的ST7920?

晚上我再试试其他方法,因为是在家自己玩的,现在手头没有程序,晚上会贴出,感谢帮助,第一次在发帖,^_^
 楼主 | 2018-6-11 09:41 | 显示全部楼层
dushanwu 发表于 2018-6-11 08:51
程序符合规格书的要求吗?
可以把程序传上来,让大家给你分析分析。

感谢帮助,晚上我会贴出,再和大家讨论
 楼主 | 2018-6-11 22:52 | 显示全部楼层
henangongda123 发表于 2018-6-11 08:43
程序贴出来,是什么主控IC?自带字库的ST7920?

前辈说哦对了,带字库,控制器ST7920!厉害
| 2018-6-11 23:19 | 显示全部楼层
一叶倾城wwq 发表于 2018-6-11 22:52
前辈说哦对了,带字库,控制器ST7920!厉害

反白我也忘记的差不多了,等下我查查之前写过的程序看看
| 2018-6-11 23:32 | 显示全部楼层
1. 闪的太快的原因是你的主函数可能在不断的调用这个写液晶屏子函数writeWord(),液晶屏就不停的刷新数据,并且你没有清屏操作。
2. 液晶屏执行每条指令都需要一定的时间,一般是几十us,特殊的清屏指令需要时间更长,建议你每条指令直接都要加上延时,这样指令才能被正确无误的执行。
| 2018-6-11 23:42 | 显示全部楼层
反白是会闪,我的也是,正在找问题,都忘的差不多了
| 2018-6-12 00:04 | 显示全部楼层
楼主,我试了一下,你在主函数里面对某一行写了地址之后,不要再写了,反白就一直有效,不会闪;另外,如你所说,要先写地址,再开反白;还有,反白一行,另外一行也反白,这好像是这种液晶屏的BUG,跟液晶屏RAM地址有关系,百度一下,网上有资料怎么规避这个问题。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主 | 2018-6-12 09:14 | 显示全部楼层
henangongda123 发表于 2018-6-11 23:32
1. 闪的太快的原因是你的主函数可能在不断的调用这个写液晶屏子函数writeWord(),液晶屏就不停的刷新数据 ...

清屏操作确实是没注意,我觉得也不太需要,初始化清屏过,我确实需要再主函数里不断执行,因为我后面需要改变显示内容和反白行,像选择菜单一样;另外我的写指令和写数据已经在写的函数里延时过了,后面再写应该不用延时了;对于反白两行的问题,我再查查解决方法。
感谢您的热心帮助
| 2018-6-12 09:40 | 显示全部楼层
这种液晶不需要刷新,如果没有新内容就表写数据,除非有数据变更
| 2018-6-12 11:28 | 显示全部楼层
我用的都是不带字库的,自己做点阵,需要反白显示时,就把点阵数据取反后送出,想怎么反白都行啊。
 楼主 | 2018-6-12 13:37 | 显示全部楼层
cjseng 发表于 2018-6-12 11:28
我用的都是不带字库的,自己做点阵,需要反白显示时,就把点阵数据取反后送出,想怎么反白都行啊。 ...

唉,当时做板子选器件时考虑不周啊,只能将就着用了
 楼主 | 2018-6-12 13:37 | 显示全部楼层
whtwhtw 发表于 2018-6-12 09:40
这种液晶不需要刷新,如果没有新内容就表写数据,除非有数据变更

嗯,前辈说的是,写完之后就让它去做别的事
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

关闭

热门推荐上一条 /4 下一条

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