找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机12864显示4行的程序有问题,求帮助

[复制链接]
跳转到指定楼层
楼主
ID:586957 发表于 2019-8-6 11:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个是12864显示4行的程序,第一行是“0123456789”,每一位再随机变化,第二三四行显示如程序中写的,想请教大神为啥什么也不显示呢,感觉程序没有错误的呜呜

单片机源程序如下:
  1. #include<reg52.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. sbit rs=P2^6;
  8. sbit en=P2^5;
  9. sbit rw=P2^7;
  10. sbit psb=P3^2;
  11. sbit wela=P3^7;
  12. sbit dula=P3^6;
  13. uchar dis1[10];
  14. uchar dis2[]="www.tian";
  15. uchar dis3[]="Îò°®Äú";
  16. uchar dis4[]="~~~~~~";
  17. void delayms(uchar xms)
  18. {
  19.                 uint i,j;
  20.                 for(i=xms;i>0;i--)
  21.                         for(j=110;j>0;j--);
  22. }

  23. void write_com(uchar cmd)
  24. {
  25.                 rs=0;
  26.                 rw=0;
  27.           en=0;
  28.           P0=cmd;
  29.           delayms(5);
  30.           en=1;
  31.           delayms(5);
  32.           en=0;
  33. }

  34. void write_data(uchar dat)
  35. {
  36.                 rs=1;
  37.                 rw=0;
  38.           en=0;
  39.           P0=dat;
  40.           delayms(5);
  41.           en=1;
  42.           delayms(5);
  43.           en=0;
  44. }

  45. void lcd_pos(uchar X,uchar Y)
  46. {
  47.                 uint pos;
  48.                 if(X==0)
  49.                 {X=0x80;}
  50.                 else if(X==1)
  51.                 {X=0x90;}
  52.                 else if(X==2)
  53.                 {X=0x88;}
  54.                 else if(X==3)
  55.                 {X=0x98;}
  56.                 pos=X+Y;
  57.                 write_com(pos);
  58. }

  59. void makerand()
  60. {
  61.   uint ran;
  62.         ran=rand();
  63.         dis1[0]=ran/10000+0x30;
  64.         dis1[1]=ran%10000/1000+0x30;
  65.         dis1[2]=ran%1000/100+0x30;
  66.         dis1[3]=ran%100/10+0x30;
  67.         dis1[4]=ran%10+0x30;
  68.         ran=rand();
  69.         dis1[5]=ran/10000+0x30;
  70.         dis1[6]=ran%10000/1000+0x30;
  71.         dis1[7]=ran%1000/100+0x30;
  72.         dis1[8]=ran%100/10+0x30;
  73.         dis1[9]=ran%10+0x30;
  74. }

  75. void lcd_init()
  76. {
  77.         psb=1;
  78.         en=0;
  79.         write_com(0x30);
  80.         delayms(5);        
  81.         write_com(0x03);
  82.         delayms(5);
  83.         write_com(0x0c);
  84.         delayms(5);
  85.         write_com(0x01);
  86.         delayms(5);
  87. }

  88. void main()
  89. {
  90.         uchar i;
  91.         write_com(0x80);
  92.         lcd_init();
  93.         wela=0;
  94.   dula=0;        
  95.         delayms(10);
  96.         lcd_pos(1,0);
  97.         i=0;
  98.         while(dis2[i]!='\0')
  99.         {
  100.           write_data(dis2[i]);
  101.                 delayms(50);
  102.                 i++;
  103.         }
  104.         lcd_pos(2,0);
  105.         i=0;
  106.         while(dis3[i]!='\0')
  107.         {
  108.           write_data(dis3[i]);
  109.                 delayms(50);
  110.                 i++;
  111.         }
  112.         lcd_pos(3,0);
  113.         i=0;
  114.         while(dis4[i]!='\0')
  115.         {
  116.           write_data(dis4[i]);
  117.                 delayms(50);
  118.                 i++;
  119.         }
  120.         while(1)
  121.         {
  122.                 lcd_pos(0,0);
  123.                 makerand();
  124.                 for(i=0;i<10;i++)
  125.                 {
  126.                         write_data(dis1[i]);
  127.                         delayms(3000);
  128.                 }
  129.         }
  130. }

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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