找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4286|回复: 9
打印 上一主题 下一主题
收起左侧

LCD12864之前能正常显示,但一段时间后全屏显示“翱”字

  [复制链接]
跳转到指定楼层
楼主
有检查过硬件电路,测试表明都是通的。软件编程方面请各位大神帮忙纠纠错。


单片机源码:
  1. //****************************************
  2. //lcd12864写命令
  3. //****************************************
  4. void write_12864com(uchar com)
  5. {
  6.    Busy();
  7.    rw=0;
  8.    rs=0;
  9.    delay_50us(1);
  10.    P0=com;
  11.    E=1;
  12.    delay_50us(10);
  13.    E=0;
  14.    delay_50us(2);
  15. }

  16. //****************************************
  17. //lcd12864测忙
  18. //****************************************
  19. void Busy()
  20. {
  21.   uchar busy;
  22.   do
  23.   {
  24.     E=0;
  25.         rs=0;
  26.         rw=1;
  27.         delay_50ms(1);
  28.         E=1;
  29.         busy=P0;
  30.         delay_50ms(1);
  31.         E=0;
  32.   }
  33.    while(busy&0x80);
  34. }

  35. //****************************************
  36. //lcd12864写数据
  37. //****************************************
  38. void write_12864dat(uchar dat)
  39. {
  40.    Busy();
  41.    rw=0;
  42.    rs=1;
  43.    E=0;
  44.    P0=dat;
  45.    delay_50us(1);
  46.    E=1;
  47.    delay_50us(10);
  48.    E=0;
  49.    delay_50us(2);
  50. }

  51. //****************************************
  52. //lcd12864初始化
  53. //****************************************
  54. void initial_LCD()
  55. {
  56.   RST=1;
  57.   delay_50ms(2);
  58.   write_12864com(0x30); //功能设置
  59.   delay_50us(4);
  60.   write_12864com(0x30); //再次设置
  61.   delay_50us(4);
  62.   write_12864com(0x0f); //显示设置,游标设置 0X0C
  63.   delay_50us(4);
  64.   write_12864com(0x01);  //清屏
  65.   delay_50ms(1);
  66.   write_12864com(0x02);  
  67.   delay_50us(10);     
  68. }


  69. //****************************************
  70. //lcd12864初始显示
  71. //****************************************
  72. void display_initial()
  73. {
  74.   uchar i,j;
  75.   write_12864com(0x80); //LCD地址第一行
  76.   for(i=0;i<16;i++)
  77.   {
  78.      write_12864dat(table1[i]);
  79.          delay_50us(1);

  80.   }
  81. write_12864com(0x88);//lcd地址第三行
  82.   for(j=0;j<16;j++)
  83.   {
  84.      write_12864dat(table2[j]);
  85.          delay_50us(1);

  86.   }

  87.   initial_LCD();
  88. }

  89. //****************************************
  90. //lcd12864清屏
  91. //****************************************
  92. void display_clear()
  93. {
  94.    write_12864com(0x01);  //清屏
  95.   delay_50us(2);
  96. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:341935 发表于 2018-5-31 09:21 | 只看该作者
我在退出外部中断时候偶尔会发生这个情况。感觉是单片机飞了!尚未找到解决途径!
回复

使用道具 举报

板凳
ID:191910 发表于 2018-5-31 09:30 | 只看该作者
你这刷新上应该有问题的
回复

使用道具 举报

地板
ID:342119 发表于 2018-5-31 13:53 | 只看该作者
数组越界了吧
回复

使用道具 举报

5#
ID:214999 发表于 2019-3-10 16:14 来自手机 | 只看该作者
有没解决好,我调出来显示也是这样。
回复

使用道具 举报

6#
ID:477932 发表于 2019-3-14 10:49 | 只看该作者
你这是字符占的位置不对,造成后面的字型乱码,汉字是16*16,字符是8*16,要显示小数点要空一格(8*16)才能正常。当然这样不好看,因此要写字符显示函数,网上有案例,你看看别人怎么写的

评分

参与人数 1黑币 +8 收起 理由
zhengchong60 + 8

查看全部评分

回复

使用道具 举报

7#
ID:469870 发表于 2019-3-14 11:05 | 只看该作者
字符串位置设置有问题,汉字与字符串串了,建议添加字符显示函数。
回复

使用道具 举报

8#
ID:734023 发表于 2020-4-28 23:20 | 只看该作者
辑或 发表于 2019-3-14 11:05
字符串位置设置有问题,汉字与字符串串了,建议添加字符显示函数。

字符显示函数是什么呀
回复

使用道具 举报

9#
ID:592807 发表于 2020-4-29 09:09 | 只看该作者
这种问题一般处在主函数里面。比如while
回复

使用道具 举报

10#
ID:282850 发表于 2020-4-29 10:42 | 只看该作者
一般是字库越界造成,字库查找时跑到字库外取的错误点阵。程序问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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