久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

lcd1602只有一行白塊,求助

[復制鏈接]
跳轉到指定樓層
樓主
做的可調計時器,仿真的時候正確的,但是燒錄進去只有一行白塊。
查了資料可能是lcd初始化的問題。也加了延時,但是沒用,對比度也調過了。
  1. #include <REGX52.H>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar sec;
  5. uchar min;
  6. uchar hour;
  7. sfr AUXR =0x8E;
  8. sbit k1=P3^1;
  9. sbit k2=P3^0;
  10. sbit k3=P3^2;
  11. sbit k4=P3^3;
  12. uchar led1,led2,led3,led4,led5,led6,led7,led8;
  13. code uchar display[]="TIME:" ;

  14. sbit RS=P2^0;
  15. sbit RW=P2^1;
  16. sbit E=P2^2;

  17. #define input P0

  18. void Delay10ms()                //@11.0592MHz
  19. {
  20.         unsigned char i, j;

  21.         i = 18;
  22.         j = 235;
  23.         do
  24.         {
  25.                 while (--j);
  26.         } while (--i);
  27. }


  28. void write_command(uchar com)  //寫入命令
  29. {
  30.    Delay10ms();
  31.    E=0;
  32.    RS=0;
  33.    RW=0;
  34.    input=com;
  35.    Delay10ms();
  36.    E=1;
  37.    Delay10ms();
  38.    E=0;
  39.    Delay10ms();
  40. }
  41. void write_data(uchar da)           //寫入數據
  42. {
  43.    
  44.    E=0;
  45.    RS=1;
  46.    RW=0;
  47.    input=da;
  48.    Delay10ms();
  49.    E=1;
  50.    Delay10ms();
  51.    E=0;
  52.    Delay10ms();
  53. }

  54. void lcd_initial() //lcd初始化
  55. {
  56.    Delay10ms();
  57.    write_command(0x01);
  58.    Delay10ms();
  59.    write_command(0x38);
  60.    Delay10ms();
  61.    write_command(0x0c);
  62.    Delay10ms();
  63.    write_command(0x06);
  64.    Delay10ms();
  65.    write_command(0x01);
  66.    Delay10ms();
  67.    write_command(0x80);
  68.    Delay10ms();

  69. }

  70. void lcd_pos(uchar pos)
  71. {
  72.          write_command(pos|0x80) ;

  73. }

  74. void string(uchar *da)//輸入字符
  75. {
  76.          uchar i;
  77.         for(i=0;i<16;i++)
  78.         {
  79.                 if(*(da+i)=='\0')break;
  80.                 write_data(*(da+i)) ;
  81.         }
  82. }

  83. void jinwei()        //時間進位函數
  84. {
  85.          sec++;
  86.         if(sec==60)
  87.         {
  88.                 sec=0;
  89.                 min++;
  90.         }
  91.         if(min==60)
  92.         {
  93.                 sec=0;
  94.                 min=0;
  95.                 hour++;
  96.         }
  97.                 if(hour==24)
  98.         {
  99.                 sec=0;
  100.                 min=0;
  101.                 hour=0;
  102.         }
  103. }

  104. void Timer0Init(void)                //1毫秒@11.0592MHz
  105. {
  106.         AUXR &= 0x7F;                //定時器時鐘12T模式
  107.         TMOD &= 0xF0;                //設置定時器模式
  108.         TL0 = 0x66;                //設置定時初值
  109.         TH0 = 0xFC;                //設置定時初值
  110.         TF0 = 0;                //清除TF0標志
  111.         TR0 = 1;                //定時器0開始計時
  112.         ET0=1;
  113.         EA=1;
  114. }


  115.   void timer() interrupt 1
  116.   {
  117.           static uint k=0;
  118.         TL0 = 0x66;                //設置定時初值
  119.         TH0 = 0xFC;
  120.         k++;
  121.         if(k==2000)
  122.         {
  123.                 k=0;
  124.                 jinwei();
  125.         }
  126.   }
  127. void time()        //時間顯示
  128. {
  129.          lcd_pos(0x05);
  130.         write_data(led8+'0');

  131.         lcd_pos(0x06);
  132.         write_data(led7+'0');

  133.         lcd_pos(0x07);
  134.         write_data(':');

  135.         lcd_pos(0x08);
  136.         write_data(led5+'0');

  137.         lcd_pos(0x09);
  138.         write_data(led4+'0');

  139.                 lcd_pos(0x0a);
  140.         write_data(':');

  141.         lcd_pos(0x0b);
  142.         write_data(led2+'0');

  143.         lcd_pos(0x0c);
  144.         write_data(led1+'0');
  145. }


  146. void keys()//按鈕功能
  147. {
  148.          uchar flag;
  149.         if (k1==0)
  150.         {
  151.                 Delay10ms();
  152.                 flag=1;
  153.                 TR0=0;
  154.         }
  155.         if(TR0==0)
  156.         {
  157.                 if(k2==0)
  158.                 {
  159.                 Delay10ms();
  160.                 hour++;
  161.                 }
  162.                 if(k3==0)
  163.                 {
  164.                 Delay10ms();
  165.                 min++;
  166.                 }
  167.                
  168.          }
  169.         if(k4==0)
  170.                 {
  171.            Delay10ms();
  172.            TR0=1;
  173.            flag=0;
  174.                 }
  175. led1=sec%10;
  176. led2=sec/10;

  177. led4=min%10;
  178. led5=min/10;

  179. led7=hour%10;
  180. led8=hour/10;
  181. }               


  182. main()
  183. {
  184.         Delay10ms();
  185.         lcd_initial();
  186.          Delay10ms();
  187.          string(display);//顯示時間
  188.         Timer0Init();
  189.         
  190.         Delay10ms();
  191.         led1=0;
  192.         led2=0;
  193.         led4=0;
  194.         led5=0;
  195.         led7=0;
  196.         led8=0;
  197.         sec=0;
  198.         min=0;
  199.         hour=0;
  200.         string(display);//顯示時間
  201.         while(1)
  202.         {
  203.                 time();
  204.                 keys();
  205.         }
  206. }
復制代碼



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

使用道具 舉報

沙發
ID:96682 發表于 2022-10-31 12:06 | 只看該作者
硬件檢查一下看哪里有錯
回復

使用道具 舉報

板凳
ID:121859 發表于 2022-10-31 12:19 | 只看該作者
首先需要排除硬件上的問題,如果硬件沒有毛病,那么初始化那里做些處理,0x38指令多寫幾遍試試。
回復

使用道具 舉報

地板
ID:161164 發表于 2022-10-31 13:06 | 只看該作者
代碼看上去沒問題
仿真也沒問題



應該是硬件問題
請檢查接線
特別是RS/EN這兩根線
回復

使用道具 舉報

5#
ID:1049868 發表于 2022-10-31 13:28 | 只看該作者
lkc8210 發表于 2022-10-31 13:06
代碼看上去沒問題
仿真也沒問題

lcd1602是直接插在單片機的卡槽里的
回復

使用道具 舉報

6#
ID:384109 發表于 2022-10-31 13:58 | 只看該作者
P0沒接上拉電阻吧,最好是查忙,而不是用延時
回復

使用道具 舉報

7#
ID:16255 發表于 2022-10-31 14:36 | 只看該作者
人中狼 發表于 2022-10-31 13:58
P0沒接上拉電阻吧,最好是查忙,而不是用延時

我的程序都是直接延時的,目前未出現過問題。
只要延時足夠,數據是肯定傳輸完成的。對于1602這種顯示屏,數據量又不大,完全沒有必要爭分奪秒的。
回復

使用道具 舉報

8#
ID:783421 發表于 2022-10-31 19:35 | 只看該作者
lkc8210 發表于 2022-10-31 13:06
代碼看上去沒問題
仿真也沒問題

可能是P0沒有接上拉電阻,驅動能力太弱吧
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文在线a在线 | 欧美精品中文字幕久久二区 | 国产性生活一级片 | 色爱综合网| 天天躁人人躁人人躁狂躁 | 久在线 | 国产在线www | 91婷婷韩国欧美一区二区 | 最新超碰 | 久久精品99| 一级毛片免费 | 久久www免费人成看片高清 | 青青草原综合久久大伊人精品 | 国内精品视频在线观看 | 天天操天天操 | 国产高清视频在线观看播放 | 国内精品久久久久久 | 天天操综合网 | 久久精品 | 国产精品一区二区在线 | 亚洲黄色成人网 | 久在线视频播放免费视频 | 国产精品久久久乱弄 | 日韩精品视频在线 | 亚洲一区综合 | 国产一区不卡 | 亚洲精品一区二区三区蜜桃久 | 福利成人 | 黄 色 毛片免费 | 欧美1级 | 成人a视频| 国产欧美精品一区二区 | 精品欧美一区二区在线观看欧美熟 | 免费观看一级特黄欧美大片 | 中文字幕亚洲无线 | 国产一级片免费视频 | 久久久久久久一区二区三区 | 欧美日在线| 福利视频网站 | 91免费电影| 欧美精品一区二区三区在线四季 |