標題: 自己照著書寫的單片機程序,但是運行了LCD1602上面什么都不顯示,問下哪有問題? [打印本頁]

作者: wangliqi23    時間: 2022-12-21 19:02
標題: 自己照著書寫的單片機程序,但是運行了LCD1602上面什么都不顯示,問下哪有問題?
#include <reg51.h>
#include <intrins.h>
sbit DB=P0;
sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
void delay(unsigned int z)
{
        unsigned int x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}

void write_dat(unsigned char dat)
{        
        RW=0;RS=1;
        DB=dat;
delay(5);
        E=1;
delay(5);
        E=0;
}
void write_com(unsigned char com)
{        
        RW=0;RS=0;
        DB=com;
        delay(5);
        E=1;
        delay(5);
        E=0;
}
void lcd_1602init()
{
   RW=0;
         E=0;
        write_com(0x3c);
        write_com(0x0c);
        write_com(0x06);
        write_com(0x01);
        write_com(0x80);
}
void write_sfm(unsigned char add,unsigned char date)
{
        unsigned char shi,ge;
        shi=date/10;
        ge=date%10;
        write_com(0x80+add);
        write_dat(0x30+shi);
        write_dat(0x30+ge);
}
void main()
{
        lcd_1602init();
        while(1)
        {
                write_com(0xc0);
                write_dat('2');
        }
}


捕獲.JPG (354.79 KB, 下載次數(shù): 211)

捕獲.JPG

作者: wulin    時間: 2022-12-21 21:13
抄的不仔細,也沒有認真檢查。


  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define DB P0
  4. sbit RS=P2^0;
  5. sbit RW=P2^1;
  6. sbit E=P2^2;
  7. void delay(unsigned int z)
  8. {
  9.         unsigned int x,y;
  10.         for(x=z;x>0;x--)
  11.                 for(y=110;y>0;y--);
  12. }

  13. void write_dat(unsigned char dat)
  14. {        
  15.         RW=0;
  16.         RS=1;
  17.         DB=dat;
  18.         delay(5);
  19.         E=1;
  20.         delay(5);
  21.         E=0;
  22. }
  23. void write_com(unsigned char com)
  24. {        
  25.         RW=0;
  26.         RS=0;
  27.         DB=com;
  28.         delay(5);
  29.         E=1;
  30.         delay(5);
  31.         E=0;
  32. }
  33. void lcd_1602init()
  34. {
  35.         RW=0;
  36.         E=0;
  37.         write_com(0x38);
  38.         write_com(0x0c);
  39.         write_com(0x06);
  40.         write_com(0x01);
  41. //        write_com(0x80);
  42. }
  43. void write_sfm(unsigned char add,unsigned char date)
  44. {
  45.         unsigned char shi,ge;
  46.         shi=date/10;
  47.         ge=date%10;
  48.         write_com(0x80+add);
  49.         write_dat(0x30+shi);
  50.         write_dat(0x30+ge);
  51. }
  52. void main()
  53. {
  54.         lcd_1602init();
  55.         write_sfm(0,20);//寫第一行
  56.         while(1)
  57.         {
  58.                 write_com(0xc0);//寫第二行
  59.                 write_dat('2');
  60.                 write_dat('0');
  61.         }
  62. }
復制代碼




作者: 人人學會單片機    時間: 2022-12-21 21:29
LCD1602液晶最新資料 說明了具體的時間要求 http://www.torrancerestoration.com/bbs/dpj-205768-1.html
作者: lkc8210    時間: 2022-12-21 21:46
把第3行的sbit DB=P0;
改為#define  DB P0

把write_com(0x3C);
改為write_com(0x38);
作者: 陳潤源home    時間: 2022-12-21 22:14
sbit DB=P0;   P0是8位   sbit是位定義   
作者: npn    時間: 2022-12-21 22:22
RV1可能是假的,換成兩個電阻試試。
作者: wangliqi23    時間: 2022-12-26 13:24
陳潤源home 發(fā)表于 2022-12-21 22:14
sbit DB=P0;   P0是8位   sbit是位定義

好的,謝謝

作者: wangliqi23    時間: 2022-12-26 13:24
wulin 發(fā)表于 2022-12-21 21:13
抄的不仔細,也沒有認真檢查。

好的 謝謝
作者: wangliqi23    時間: 2022-12-26 13:24
lkc8210 發(fā)表于 2022-12-21 21:46
把第3行的sbit DB=P0;
改為#define  DB P0

好的 謝謝
作者: wangliqi23    時間: 2022-12-26 13:24
人人學會單片機 發(fā)表于 2022-12-21 21:29
LCD1602液晶最新資料 說明了具體的時間要求 http://www.torrancerestoration.com/bbs/dpj-205768-1.html

好的謝謝   




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1