找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机驱动lcd12864乱码

[复制链接]
跳转到指定楼层
楼主
ID:278457 发表于 2020-9-12 17:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
视频: 1.rar (1.15 MB, 下载次数: 7)
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #include<stdlib.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. #define LCD_data P0   //数据口
  7. #define ushort unsigned short int
  8. ushort b;

  9. /*******引脚定义*******/
  10. sbit LCD_RS=P3^5;
  11. sbit LCD_RW=P3^6;
  12. sbit LCD_EN=P3^4;
  13. sbit LCD_PSB=P3^7;
  14. sbit wela=P2^6;
  15. sbit dula=P2^7;
  16. uchar code dis1[]={"abcdefg"};
  17. uchar code dis2[]={"您好"};
  18. uchar code dis3[]={"欢迎光临"};
  19. uchar code dis4[]={"www.baidu.com"};

  20. uchar code dis5[]={"数值:"};
  21. uchar dis6[5]={"L 000"};
  22. uchar dis7[5]={"R 000"};
  23. uchar code dis8[]={""};

  24. /*******延时函数*******/
  25. void delay_1ms(uint x)
  26. {
  27.         uint i,j;
  28.     for(j=0;j<x;j++)
  29.       for(i=0;i<110;i++);
  30. }

  31. void quzhi()
  32. {
  33.   uint f=dis6[5],g=dis7[5];
  34.    for(f=0;f<5;f++)
  35.     for(g=0;g<5;g++);
  36. }

  37. /*******写指令*******/
  38. void write_cmd(uchar cmd)
  39. {
  40.         LCD_RS=0;
  41.     LCD_RW=0;
  42.     LCD_EN=0;
  43.     P0=cmd;
  44.     delay_1ms(5);
  45.     LCD_EN=1;
  46.     delay_1ms(5);
  47.     LCD_EN=0;
  48. }

  49. /*******显示数据*******/
  50. void write_dat(uchar dat)
  51. {
  52.         LCD_RS=1;
  53.     LCD_RW=0;
  54.     LCD_EN=0;
  55.     P0=dat;
  56.     delay_1ms(5);
  57.     LCD_EN=1;
  58.     delay_1ms(5);
  59.     LCD_EN=0;
  60. }

  61. /*******设定初始显示位置*******/
  62. void lcd_pos(uchar x,uchar y)
  63. {
  64.         uchar pos;
  65.     if(x==0)
  66.           x=0x82;
  67.         else if(x==1)
  68.       x=0x91;
  69.         else if(x==2)
  70.       x=0x8A;
  71.         else if(x==3)
  72.       x=0x98;
  73.         pos=x+y;
  74.     write_cmd(pos);
  75. }

  76. void lcd_pos2(uchar x,uchar y)
  77. {
  78.         uchar pos2;
  79.     if(x==0)
  80.           x=0x80;
  81.         else if(x==1)
  82.       x=0x93;
  83.         else if(x==2)
  84.       x=0x8B;
  85.         else if(x==3)
  86.       x=0x98;
  87.         pos2=x+y;
  88.     write_cmd(pos2);
  89. }

  90. /*******LCD初始化程序*******/
  91. void lcd_init()
  92. {
  93.         LCD_PSB=1;                 //并口方式
  94.         write_cmd(0x30);           
  95.     delay_1ms(5);
  96.     write_cmd(0x0c);           //显示开,关光标
  97.         delay_1ms(5);
  98.     write_cmd(0x01);           //清除LCD的显示内容
  99.         delay_1ms(5);
  100. }

  101. /*******LCD数据显示位置*******/
  102. void shuju()
  103. {
  104.    uchar i;
  105.    lcd_pos(0,0);                               //第一行
  106. while(dis1[i]!='\0')
  107.   {                        
  108.    write_dat(dis1[i]);
  109.    i++;
  110.   }  
  111.    lcd_pos(1,0);                               //第二行
  112.    i=0;
  113. while(dis2[i]!='\0')
  114.   {
  115.    write_dat(dis2[i]);
  116.    i++;
  117.   }
  118.    lcd_pos(2,0);                               //第三行
  119.    i=0;
  120. while(dis3[i]!='\0')
  121.   {
  122.    write_dat(dis3[i]);
  123.    i++;
  124.   }
  125.    lcd_pos(3,0);                               //第四行
  126.    i=0;
  127. while(dis4[i]!='\0')
  128.   {
  129.    write_dat(dis4[i]);
  130.    i++;
  131.   }
  132.   delay_1ms(2000);
  133.   write_cmd(0x01);
  134.   lcd_pos2(0,0);                              //第一行
  135.   i=0;
  136. while(dis5[i]!='\0')
  137.   {
  138.    write_dat(dis5[i]);
  139.    i++;
  140.   }
  141. lcd_pos2(1,0);                              //第二行
  142. i=0;
  143. while(dis6[i]!='\0')
  144.   {
  145.    write_dat(dis6[i]);
  146.    i++;
  147.   }
  148. lcd_pos2(2,0);                              //第三行
  149. i=0;
  150. while(dis7[i]!='\0')
  151.   {
  152.    write_dat(dis7[i]);
  153.    i++;
  154.   }
  155. lcd_pos2(3,0);                              //第四行
  156. i=0;
  157. while(dis8[i]!='\0')
  158.   {
  159.    write_dat(dis8[i]);
  160.    i++;
  161.   }
  162. }

  163. /*******主程序*******/
  164. void main()
  165. {
  166.     uchar i;
  167.     wela=0;
  168.     dula=0;
  169.         TMOD=0x01;
  170.         TH0=(65536-45872)/256;
  171.     TL0=(65536-45872)%256;
  172.         EA=1;
  173.         ET0=1;
  174.         TR0=1;
  175.         delay_1ms(10);
  176.         lcd_init();
  177.     shuju();
  178.     quzhi();
  179.     while(1)
  180.      {
  181.        lcd_pos2(2,0);                               //第三行
  182.            i=0;
  183.        while(dis7[i]!='\0')
  184.         {
  185.          write_dat(dis7[i]);
  186.          i++;
  187.         }
  188.        lcd_pos2(1,0);                              //第二行
  189.        i=0;
  190.       while(dis6[i]!='\0')
  191.       {
  192.         write_dat(dis6[i]);
  193.         i++;
  194.       }
  195.     }
  196. }

  197. void T0_time() interrupt 1
  198. {
  199.         TH0=(65536-45872)/256;
  200.     TL0=(65536-45872)%256;
  201.     b++;
  202.     dis7[2]='0'+b;
  203.      if (b>9)
  204.            {
  205.         b=0;
  206.        }
  207.     dis7[3]='0'+b;
  208.      if (b>99)
  209.            {
  210.         b=0;
  211.        }
  212.     dis7[4]='0'+b;
  213.      if (b>999)
  214.            {
  215.         b=0;
  216.        }
  217.     dis6[2]='0'+b;
  218.      if (b>9)
  219.            {
  220.         b=0;
  221.        }
  222.     dis6[3]='0'+b;
  223.      if (b>9)
  224.            {
  225.         b=0;
  226.        }
  227.     dis6[4]='0'+b;
  228.      if (b>9)
  229.            {
  230.         b=0;
  231.        }
  232. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:584814 发表于 2020-9-15 09:33 | 只看该作者
排除硬件肯定是程序问题。帖多少代码都不表示可以通吃任何12864的屏。
回复

使用道具 举报

板凳
ID:790159 发表于 2020-9-16 10:38 | 只看该作者
调试点阵,先不要显示文字等信息,先用全黑测试一下,全黑没有问题了在测试显示
回复

使用道具 举报

地板
ID:790159 发表于 2020-9-16 10:39 | 只看该作者
全黑不能显示,那么重点检查驱动与液晶屏初始化参数
回复

使用道具 举报

5#
ID:278457 发表于 2021-12-16 01:07 | 只看该作者
我试过了,也调试了,没有起到什么用
回复

使用道具 举报

6#
ID:232791 发表于 2021-12-17 14:12 | 只看该作者
搞点图片吧,不然还得下载你的rar,多麻烦
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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