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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4301|回復: 8
收起左側

為什么單片機LCD1602只亮不顯示內容?

[復制鏈接]
ID:1026819 發表于 2022-5-15 20:42 來自手機 | 顯示全部樓層 |閱讀模式
20220515203730(1).png
  1. #include <reg51.h>
  2. #include"intrins.h"

  3. sbit lcd_rs=P2^0;
  4. sbit lcd_rw=P2^1;
  5. sbit lcd_e=P2^2;

  6. sbit led1=P1^0;
  7. sbit led2=P1^1;
  8. sbit led3=P1^2;

  9. sbit key1=P1^4;
  10. sbit key2=P1^5;
  11. sbit key3=P1^6;
  12. sbit key4=P1^7;

  13. sbit so=P2^3;
  14. sbit sclk=P2^4;
  15. sbit cs=P2^5;

  16. sbit motor=P3^0;
  17. sbit jiare=P3^1;
  18. sbit beep=P3^7;

  19. unsigned char tr[]="0123456789";
  20. unsigned char KeyValue=0,sz[4];

  21. void Delay10ms(unsigned char delaytime)               
  22. {
  23.     unsigned char i, j,k;

  24.     for(k=0; k<delaytime; k++)
  25.     {
  26.         i = 20;
  27.         j = 113;
  28.         do
  29.         {
  30.             while (--j);
  31.         }
  32.         while (--i);
  33.     }
  34. }

  35. void delay(unsigned int x)
  36. {
  37.   unsigned char i;
  38.         while(x--)
  39.         {
  40.                 for(i=0;i<120;i++);
  41. }
  42. }


  43. void lcd_write_cmd(unsigned char cmd) //寫命令函數
  44. {
  45.         lcd_rs=0;
  46.         lcd_rw=0;
  47.         P0=cmd;
  48.         delay(5);
  49.         lcd_e=1;
  50.         delay(5);
  51.         lcd_e=0;
  52. }
  53. void lcd_write_date(unsigned char date) //寫數據函數
  54. {
  55.         lcd_rs=1;
  56.         lcd_rw=0;
  57.         P0=date;
  58.         delay(5);
  59.         lcd_e=1;
  60.         delay(5);
  61.         lcd_e=0;
  62. }
  63. void lcd_init()        //LCD初始化函數
  64. {
  65.         lcd_write_cmd(0x38);
  66.         lcd_write_cmd(0x0c);
  67.         lcd_write_cmd(0x06);
  68.         lcd_write_cmd(0x01);
  69. }

  70. void Key_Scan()
  71. {
  72.     KeyValue = 0;
  73.     if(key1 == 0)                //增加按鍵按下
  74.     {
  75.         Delay10ms(1);
  76.         if(key1 == 0)
  77.         {
  78.             KeyValue = 1;
  79.             while(key1 == 0);                //等待按鍵釋放
  80.         }
  81.     }
  82.     if(key2 == 0)                //減少按鍵按下
  83.     {
  84.         Delay10ms(1);
  85.         if(key2 == 0)
  86.         {
  87.             KeyValue = 2;
  88.             while(key2 == 0);                //等待按鍵釋放
  89.         }
  90.     }
  91.                   if(key3 == 0)                //減少按鍵按下
  92.     {
  93.         Delay10ms(1);
  94.         if(key3 == 0)
  95.         {
  96.             KeyValue = 3;
  97.             while(key3 == 0);                //等待按鍵釋放
  98.         }
  99.     }
  100.                   if(key4 == 0)                //減少按鍵按下
  101.     {
  102.         Delay10ms(1);
  103.         if(key4 == 0)
  104.         {
  105.             KeyValue = 4;
  106.             while(key4 == 0);                //等待按鍵釋放
  107.         }
  108.     }
  109. }

  110. unsigned int max6675_read()        //讀取溫度值
  111. {
  112.         unsigned char i;
  113.         unsigned long max_6675=0;
  114.         cs=1;
  115.         _nop_();
  116.         _nop_();
  117.         cs=0;
  118.         for(i=0;i<16;i++)
  119.         {
  120.                 max_6675<<=1;
  121.                 _nop_();
  122.                 sclk=1;
  123.                 if(so==1){max_6675=max_6675|0x01;}
  124.                 else max_6675=max_6675|0x00;
  125.                 _nop_();
  126.                 sclk=0;
  127.         }
  128.          max_6675<<=1;        //去掉最高位
  129.          max_6675>>=4;        //去掉后3位保留14位溫度數據
  130.          max_6675=(max_6675+1)*1024/4096-24;
  131.          if(max_6675<=0){max_6675=0;}
  132.          return max_6675+1;
  133. }

  134. void max6675_display(unsigned int num) //顯示讀取到的溫度數值
  135. {
  136. //        unsigned char sz[4];
  137.         unsigned char i;
  138.         sz[0]=num/1000;
  139.         sz[1]=num%1000/100;
  140.         sz[2]=num%1000%100/10;
  141.         sz[3]=num%10;
  142.         lcd_write_cmd(0x80); //寫命令函數
  143.         lcd_write_date('T');
  144.         lcd_write_date('e');
  145.         lcd_write_date('m');
  146.         lcd_write_date('p');
  147.         lcd_write_date(':');
  148.         for(i=1;i<4;i++)
  149.         {
  150.            lcd_write_date(0x30+sz[i]); //寫數據函數
  151.         
  152.         }
  153.                 delay(100);
  154. }


  155. void main()
  156. {
  157.         unsigned char c=0;
  158.         unsigned int wendu,wenduh=300,wendul=100;
  159.         
  160.         lcd_init();
  161.         
  162.         max6675_read();
  163.         delay(100);//延時返回max6675狀態
  164.         while(1)
  165.         {
  166.                 Key_Scan();
  167.                 if(KeyValue==1)
  168.                         wendul--;
  169.                 else if(KeyValue==2)
  170.                         wendul++;
  171.                 else if(KeyValue==3)
  172.                         wenduh--;
  173.                 else if(KeyValue==4)
  174.                         wenduh++;
  175.                 wendu=max6675_read();
  176.                 if(wendu>wenduh)
  177.                 {
  178.                         beep=0;
  179.                         motor=0;
  180.                         jiare=1;
  181.                 }else if(wendu<wendul)
  182.                 {
  183.                         beep=0;
  184.                         motor=1;
  185.                         jiare=0;
  186.                 }else {
  187.                         beep=1;
  188.                         motor=1;
  189.                         jiare=1;
  190.                 }
  191.                
  192.                 if(wendu>300)
  193.                 {
  194.                         led1=0;
  195.                         led2=1;
  196.                         led3=1;
  197.                 }else if(wendu<100)
  198.                 {
  199.                         led1=1;
  200.                         led2=0;
  201.                         led3=1;
  202.                 }else
  203.                 {
  204.                         led1=1;
  205.                         led2=1;
  206.                         led3=0;
  207.                 }
  208.                 lcd_write_cmd(0x80+0x40); //寫命令函數
  209.                 lcd_write_date(wendul/100+0x30);
  210.                 lcd_write_date(wendul%100/10+0x30);
  211.                 lcd_write_date(wendul%10+0x30);
  212.                
  213.                 lcd_write_cmd(0x80+0x40+6); //寫命令函數
  214.                 lcd_write_date(wenduh/100+0x30);
  215.                 lcd_write_date(wenduh%100/10+0x30);
  216.                 lcd_write_date(wenduh%10+0x30);
  217.                
  218.                 max6675_display(wendu);
  219.                
  220. }
  221.         
  222.         
  223. }
復制代碼
回復

使用道具 舉報

ID:390416 發表于 2022-5-15 21:38 | 顯示全部樓層
LCD1602液晶最新資料 說明了具體的時間要求http://www.zg4o1577.cn/bbs/dpj-205768-1.html
回復

使用道具 舉報

ID:74146 發表于 2022-5-15 22:24 | 顯示全部樓層
一個最簡單又最高效的辦法:打開proteus的模板工程,里面搜索LCD1602,選擇51單片機的工程。嘗試運行觀察效果。然后再與你自己連接的模型做對比。
回復

使用道具 舉報

ID:1026496 發表于 2022-5-15 23:02 | 顯示全部樓層
EA 硬件上沒有拉高,建議拉高試試
回復

使用道具 舉報

ID:771738 發表于 2022-5-16 07:24 | 顯示全部樓層
調RV1(對比度)試試!
回復

使用道具 舉報

ID:161164 發表于 2022-5-16 10:01 | 顯示全部樓層
代碼測試正常
2022-05-16_095945.png


回復

使用道具 舉報

ID:1012735 發表于 2022-5-16 14:53 | 顯示全部樓層
在 lcd_write_cmd(),write_date() 兩函數中最前面行加一句:lcd_e=0 試試
   
回復

使用道具 舉報

ID:16255 發表于 2022-5-17 09:52 | 顯示全部樓層

你這個VEE的接法不對。在Proteus中沒影響,但實際電路中肯定不行。
回復

使用道具 舉報

ID:161164 發表于 2022-5-17 10:48 來自手機 | 顯示全部樓層
mengsiu 發表于 2022-5-17 09:52
你這個VEE的接法不對。在Proteus中沒影響,但實際電路中肯定不行。

我只是復制樓主的仿真圖來確認是代碼問題還是仿真有問題
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品视频播放 | 九九热这里只有精品6 | 亚洲精品久久久久久久久久久久久 | 999久久久 | 色综合久 | 中文字幕乱码一区二区三区 | 亚洲国产精品一区二区三区 | 亚洲网站在线观看 | 欧美亚洲另类在线 | 亚洲综合一区二区三区 | 91成人免费看片 | 人人看人人爽 | 精品成人69xx.xyz | 亚洲91精品 | 久久精品91久久久久久再现 | 狠狠干天天干 | 成人高清网站 | 91大片| 男人天堂网址 | 伊人艹 | 91伊人| 欧美aⅴ | 自拍视频一区二区三区 | 色狠狠一区 | 99在线免费观看 | 国产精品无码专区在线观看 | 国产1区2区3区 | 久久高清免费视频 | 亚洲精品视频一区 | 欧美多人在线 | 欧美成人手机在线 | h视频免费观看 | 久久国产精品精品 | 精品一区二区三区四区在线 | 久久在视频| 在线观看 亚洲 | 一区二区三区在线看 | 亚洲免费在线 | 久久久激情视频 | 午夜精品久久久久久久久久久久久 | 欧美成人精品在线 |