欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3411|回復: 8
打印 上一主題 下一主題
收起左側

單片機LCD1602不顯示數字,程序有問題 求幫助

[復制鏈接]
跳轉到指定樓層
樓主

程序,謝謝各位大佬
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit RS=P2^0;
  5. sbit RW=P2^1;
  6. sbit E=P2^2;
  7. #define LCD1602_GPIO P1
  8. void LCD1602_WriteCom(uchar com);
  9. void LCD1602_WriteDat(uchar dat);
  10. void LCD1602_Init();
  11. void Delayms(uint a);
  12. uchar Disp_PromNUM[]="NUM:";
  13. uchar Disp_PromNAME[]="NAME:";
  14. uchar Disp_Num[]="1730120526";
  15. uchar Disp_Name[]="SHI LEI";
  16. void main(void)
  17. {
  18.    uchar i;
  19.    LCD1602_Init();
  20.    for(i=0;Disp_PromNUM[i]!='\0';i++)
  21.    {
  22.       LCD1602_WriteDat(Disp_PromNUM[i]);
  23.           Delayms(2);
  24.    }
  25.    LCD1602_WriteCom(0x84);
  26.    for(i=0;i<8;i++)
  27.    {
  28.       LCD1602_WriteDat(Disp_Num[i]);
  29.           Delayms(2);
  30.    }
  31.    LCD1602_WriteCom(0xc0);
  32.    for(i=0;Disp_PromNAME[i]!='\0';i++)
  33.    {
  34.       LCD1602_WriteDat(Disp_PromNAME[i]);
  35.           Delayms(2);
  36.    }
  37.    LCD1602_WriteCom(0xC5);
  38.    for(i=0;Disp_Name[i]!='\0';i++)
  39.    {
  40.       LCD1602_WriteDat(Disp_Name[i]);
  41.           Delayms(2);
  42.    }
  43.    while(1);
  44. }
  45. void LCD1602_WriteCom(uchar com)
  46. {
  47.    E=0;
  48.    RS=0;
  49.    RW=0;
  50.    LCD1602_GPIO=com;
  51.    Delayms(1);
  52.    E=1;
  53.    Delayms(5);
  54.    E=0;
  55. }
  56. void LCD1602_WriteDat(uchar dat)
  57. {
  58.    E=0;
  59.    RS=1;
  60.    RW=0;
  61.    LCD1602_GPIO=dat;
  62.    Delayms(1);
  63.    E=1;
  64.    Delayms(5);
  65.    E=0;
  66. }
  67. void LCD1602_Init()
  68. {
  69.    LCD1602_WriteCom(0x38);
  70.    LCD1602_WriteCom(0x0c);
  71.    LCD1602_WriteCom(0x06);
  72.    LCD1602_WriteCom(0x01);
  73.    LCD1602_WriteCom(0x80);
  74. }
  75. void Delayms(uint a)
  76. {
  77.    uint i,j;
  78.    for(j=0;j<a;j++)
  79.    {
  80.       for(i=o;i<125:i++);
  81.    }
  82. }   
復制代碼

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:592807 發表于 2020-4-16 08:43 | 只看該作者
你的LCD帶字庫嗎?
回復

使用道具 舉報

板凳
ID:213173 發表于 2020-4-16 09:37 | 只看該作者
程序沒有問題,是樓主抄錯了。
錯誤:for(i=o;i<125:i++);
正確:for(i=0;i<125;i++);
回復

使用道具 舉報

地板
ID:70069 發表于 2020-4-16 09:50 | 只看該作者
void Delayms(uint a)
{
   uint i,j;
   for(j=0;j<a;j++)
   {
      for(i=0;i<125;i++);//i=0不是o,125后面是;,不是:
   }
}   
回復

使用道具 舉報

5#
ID:729252 發表于 2020-4-16 09:55 | 只看該作者
1、首先判斷IO設置是否正確:向并口寫入指令,將指令讀回比較是否正確(或用萬用表測量);
回復

使用道具 舉報

6#
ID:729252 發表于 2020-4-16 09:57 | 只看該作者
2、在指令發送讀回正確的前提下,若還是無顯示,適當增加延時再試;
回復

使用道具 舉報

7#
ID:729252 發表于 2020-4-16 09:59 | 只看該作者
1、首先檢測端口指令是否發送正確:發送后設置斷點,檢驗端口電平是否你設置的值(高低電平都要試一遍);
2、適當增加延時驗證
3、指令是否正確?
回復

使用道具 舉報

8#
ID:729252 發表于 2020-4-16 10:06 | 只看該作者
1、端口驗證:LCD屏的各個接口IO通過CPU設置高低電平判斷是否正確;
2、適當增加延時時間驗證;
3、指令是否正確;
回復

使用道具 舉報

9#
ID:155507 發表于 2020-4-16 10:24 | 只看該作者
void Delayms(uint a)
{
   uint i,j;
   for(j=0;j<a;j++)
   {
      for(i=o;i<125:i++);
   }
}   


給你改了,對比一下就知道哪里錯了。


  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit RS=P2^0;
  5. sbit RW=P2^1;
  6. sbit E=P2^2;
  7. #define LCD1602_GPIO P1
  8. void LCD1602_WriteCom(uchar com);
  9. void LCD1602_WriteDat(uchar dat);
  10. void LCD1602_Init();
  11. void Delayms(uint a);
  12. uchar Disp_PromNUM[]="NUM:";
  13. uchar Disp_PromNAME[]="NAME:";
  14. uchar Disp_Num[]="1730120526";
  15. uchar Disp_Name[]="SHI LEI";
  16. void main(void)
  17. {
  18.    uchar i;
  19.    LCD1602_Init();
  20.    for(i=0;Disp_PromNUM[i]!='\0';i++)
  21.    {
  22.       LCD1602_WriteDat(Disp_PromNUM[i]);
  23.           Delayms(2);
  24.    }
  25.    LCD1602_WriteCom(0x84);
  26.    for(i=0;i<8;i++)
  27.    {
  28.       LCD1602_WriteDat(Disp_Num[i]);
  29.           Delayms(2);
  30.    }
  31.    LCD1602_WriteCom(0xc0);
  32.    for(i=0;Disp_PromNAME[i]!='\0';i++)
  33.    {
  34.       LCD1602_WriteDat(Disp_PromNAME[i]);
  35.           Delayms(2);
  36.    }
  37.    LCD1602_WriteCom(0xC5);
  38.    for(i=0;Disp_Name[i]!='\0';i++)
  39.    {
  40.       LCD1602_WriteDat(Disp_Name[i]);
  41.           Delayms(2);
  42.    }
  43.    while(1);
  44. }
  45. void LCD1602_WriteCom(uchar com)
  46. {
  47.    E=0;
  48.    RS=0;
  49.    RW=0;
  50.    LCD1602_GPIO=com;
  51.    Delayms(1);
  52.    E=1;
  53.    Delayms(5);
  54.    E=0;
  55. }
  56. void LCD1602_WriteDat(uchar dat)
  57. {
  58.    E=0;
  59.    RS=1;
  60.    RW=0;
  61.    LCD1602_GPIO=dat;
  62.    Delayms(1);
  63.    E=1;
  64.    Delayms(5);
  65.    E=0;
  66. }
  67. void LCD1602_Init()
  68. {
  69.    LCD1602_WriteCom(0x38);
  70.    LCD1602_WriteCom(0x0c);
  71.    LCD1602_WriteCom(0x06);
  72.    LCD1602_WriteCom(0x01);
  73.    LCD1602_WriteCom(0x80);
  74. }
  75. void Delayms(uint a)
  76. {
  77.    uint i,j;
  78.    for(j=0;j<a;j++)
  79.    {
  80.       for(i=0;i<125;i++);
  81.     }
  82.   }
  83.   
復制代碼
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表