找回密码
 立即注册

QQ登录

只需一步,快速开始

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

lcd1602进行仿真没有显示,检查了很久都没发现问题

[复制链接]
跳转到指定楼层
楼主
为什么lcd1602进行仿真没有显示,检查了很久都没发现,有那位大哥可以说一下吗?
其中有些程序是其他功能的,被我注释掉了。这是我仿真图

  1. #include<reg51.h>
  2. #include<instrins.h>
  3. sbit rs=P2^0;                                                                     //位定义
  4. sbit rw=P2^1;
  5. sbit ep=P2^2;
  6. sbit sounder=P2^7;
  7. usigned char code byTable0[]={"welcome to"};
  8. usigned char code byTable1[]={"www*jyumcu*com"};
  9. usigned char code byTable2[]={"S0S1S2S3S4S5S6S7"};
  10. usigned char code byKeyTable0[]={" 1 1 1 1 1 1 1 1"};
  11. void inittimer(void)                                                              //  定时器t0初始化
  12. {
  13.   TMOD=0x01;
  14.   TH0=0xfc;
  15.   TL0=0x18;
  16.   ET0=1;
  17.   EA=1;
  18.   TR0=1;
  19. }
  20. void delayms(int z)                                                              //延时程序
  21. {
  22.    unsigned int x,y;
  23.    for(x=z;x>0;x--)
  24.     for(y=123;>0;y--);
  25. }
  26. /*bit lcdtestbusy(void)   //听说忙信号检查会影响仿真所以将他注释了
  27. {
  28.   bit btresult;
  29.   rs=0;
  30.   rw=1;
  31.   ep=1;
  32.   _nop_();
  33.   _nop_();
  34.   _nop_();
  35.   _nop_();
  36.   btresult=(bit)(P0&0x80);
  37.   ep=0;
  38.   return btresult;
  39. }*/
  40. void lcdwritecommand(unsigned char bycommand) //写指令
  41. {
  42.    usigned char data bycounter=0;
  43.    while(lcdtestbusy)
  44.    {
  45.      bycounter++;
  46.          if(bycounter==225)
  47.          {
  48.            return ;
  49.          }
  50.    }
  51.    rs=0;
  52.    rw=0;
  53.    ep=0;
  54.    P0=bycommand;
  55.    _nop_();
  56.    _nop_();
  57.    _nop_();
  58.    _nop_();
  59.    ep=1;
  60.    _nop_();
  61.    _nop_();
  62.    _nop_();
  63.    _nop_();
  64.    ep=0;

  65. }
  66. void lcdsetposition(unsigned char byposition)     //位置1行或2行
  67. {
  68.             lcdwritecommand(0x80|byposition) ;
  69. }
  70. void lcdwritedata(unsigned char bydata)
  71. {
  72.    unsigned char data bycunter=0;
  73.    whlie(lcdtestbusy())
  74.    {
  75.       bycounter++;
  76.      if(bycounter==225)
  77.          {
  78.                return ;
  79.          }
  80.    }
  81.    rs=1;
  82.    rw=0;
  83.    ep=0;
  84.    P0=bydata;
  85.     _nop_();
  86.         _nop_();
  87.         _nop_();
  88.         _nop_();
  89.         ep=1;
  90.         _nop_();
  91.         _nop_();
  92.     _nop_();
  93.         _nop_();
  94.         ep=0;
  95. }
  96. void lcdinit()                                                    //lcd初始化
  97. {
  98.     lcdwritecommand(0x38);
  99.         delayms(1);
  100.         lcdwritecommand(0x0c);
  101.         delayms(1);
  102.         lcdwritecommand(0x06);
  103.         delayms(1);
  104.         lcdwritecommand(0x01);
  105.         delayms(2);
  106. }
  107. void main(void)                               //主函数
  108. {
  109.             unsigned char data i,bykeyvalue;
  110.          inittimer0();
  111.          lcdinit();
  112.          lcdssetposition(0);
  113.          i=0;
  114.          while(byTable0[i]!='\0')
  115.          {
  116.                   lcdwritecommand(byTable0[i]);
  117.                 i++;
  118.                 delayms(1);
  119.          }
  120.          lcdsetposition(0x40);
  121.          i=0;
  122.                   while(byTable1[i]!='\0')
  123.          {
  124.                   lcdwritecommand(byTable1[i]);
  125.                 i++;
  126.                 delayms(1);
  127.          }
  128.                  delayms(3000);
  129.         lcdwritecommand(0x01);
  130.         lcdsetposition(0);
  131.         i=0;
  132.          while(byTable2[i]!='\0')
  133.          {
  134.                   lcdwritecommand(byTable2[i]);
  135.                 i++;
  136.                 delayms(1);
  137.          }
  138. /*         while(1)//原来是蜂鸣器的程序
  139.          {
  140.            bykeyvalue=P1;
  141.            (bit)(bykeyvalue&0x01)=(bit)(bykeyvalue&0x01);
  142.            for(i=0;i<8;i++)
  143.            {
  144.               bykeytable[2*i+1]=bykeyvalue[i]+(bykeyvalue&0x01);
  145.                   bykeyvalue=_cror_(bykeyvalue,1);
  146.            }
  147.            lcdsetposition(ox40);
  148.            i=0;
  149.            while(bykeytable[i]!='\0')
  150.            {
  151.              lcdwritedata(bykeytable[i]);
  152.                  i++;
  153.                  delayms(1);
  154.            }
  155.          }          */
  156. }
  157. void timer0 interrupt 1     //中断程序
  158. {
  159.           TL=0x18;
  160.          TH=0xfc;
复制代码

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

使用道具 举报

沙发
ID:239318 发表于 2018-3-26 22:42 来自手机 | 只看该作者
可能是程序某些细节问题
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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