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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1877|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

求助!請(qǐng)問為啥單片機(jī)+LCD1602顯示的是這樣子的?問題如下

[復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 8 黑幣 回復(fù)本帖可獲得 8 黑幣獎(jiǎng)勵(lì)! 每人限 1 次
跳轉(zhuǎn)到指定樓層
樓主
LCD顯示正常應(yīng)該是是溫度Wd:00  H00  L00,濕度Sd:00% H00% L00% ,但是仿真圖顯示出來的是不對(duì)的;另外就是按鍵函數(shù)那塊,按鍵不起溫濕度選擇加減,而且對(duì)應(yīng)的LED報(bào)警也是不對(duì)的;最后就是DHT11溫濕度傳感也可能有問題。全部代碼如下,希望有大佬可以解決一下。

單片機(jī)源程序如下:
  1. #include <reg52.h>                 
  2. #define uchar unsigned char  
  3. #define uint  unsigned int         
  4. #include<intrins.h>
  5. sbit beep = P1^0;  
  6. uchar a_a;
  7. bit flag_300ms ;
  8. uchar key_can;                 
  9. sbit wh_led = P1^4;  
  10. sbit wl_led = P1^3;
  11. sbit sh_led = P1^5;
  12. sbit sl_led = P1^6;
  13. uchar flag_en = 1;
  14. uchar menu_1;  
  15. uint t_high = 30,t_low = 10;
  16. uint s_high = 30,s_low = 10;
  17. void delay_1ms(uint q)
  18. {
  19.         uint i,j;
  20.         for(i=0;i<q;i++)
  21.                 for(j=0;j<120;j++);
  22. }
  23. sbit dht11=P1^1;
  24. uchar table_dht11[5]={1,2,3,4,5};
  25. uchar code table_num[]="0123456789abcdefg";
  26. sbit rs=P2^0;        
  27. sbit rw=P2^1;        
  28. sbit e =P2^2;         
  29. void delay_uint(uint q)
  30. {
  31.         while(q--);
  32. }
  33. void write_com(uchar com)      
  34. {
  35.         e=0;
  36.         rs=0;
  37.         rw=0;
  38.         P0=com;
  39.         delay_uint(25);
  40.         e=1;                          
  41.         delay_uint(100);
  42.         e=0;
  43. }
  44. void write_data(uchar dat)   
  45. {
  46.         e=0;
  47.         rs=1;
  48.         rw=0;
  49.         P0=dat;
  50.         delay_uint(25);
  51.         e=1;                           //éÏéyÑØÖ′DD
  52.         delay_uint(100);
  53.         e=0;        
  54. }
  55. void write_zifu(uchar hang,uchar add,uchar date)
  56. {
  57.         if(hang==1)   
  58.                 write_com(0x80+add);
  59.         else
  60.                 write_com(0x80+0x40+add);
  61.         write_data(date);        
  62. }
  63. void write_sfm2(uchar hang,uchar add,uint date)
  64. {
  65.         if(hang==1)   
  66.                 write_com(0x80+add);
  67.         else
  68.                 write_com(0x80+0x40+add);
  69.         write_data(0x30+date/10%10);
  70.         write_data(0x30+date%10);        
  71. }
  72. void write_string(uchar hang,uchar add,uchar *p)
  73. {
  74.         if(hang==1)   
  75.                 write_com(0x80+add);
  76.         else
  77.                 write_com(0x80+0x40+add);
  78.                 while(1)                                                                                                                 
  79.                 {
  80.                         if(*p == '\0')  break;
  81.                         write_data(*p);
  82.                         p++;
  83.                 }        
  84. }
  85. void init_1602()               //LCD16023õê¼»ˉoˉêy
  86. {
  87.         write_com(0x38);        
  88.         write_com(0x0c);
  89.         write_com(0x06);
  90.         delay_uint(1000);
  91.         write_string(1,0,"Wd:00  H00  L00   ");        
  92.         write_string(2,0,"Sd:00% H00% L00% ");        
  93.         write_zifu(1,5,0xdf);
  94.         write_zifu(1,10,0xdf);        
  95.         write_zifu(1,15,0xdf);        
  96.         write_sfm2(1,3,table_dht11[2]);         
  97.         write_sfm2(2,3,table_dht11[0]);   
  98.         write_sfm2(1,7,t_high);         
  99.         write_sfm2(2,7,s_high);   
  100.         write_sfm2(1,10,t_low);         
  101.         write_sfm2(2,10,s_low);   

  102. }
  103. void time_init()         
  104. {
  105.         EA   = 1;                 
  106.         TMOD = 0X01;
  107.         ET0  = 1;                  
  108.         TR0  = 1;               
  109. }
  110. uchar key_can;         //°′¼ü

  111. void key()            
  112. {
  113.         static uchar key_new;
  114.         key_can = 20;              
  115.         P3 |= 0xf0;    //¸ßËÄλ
  116.         if((P3 & 0xf0) != 0xf0)        
  117.         {
  118.                 delay_1ms(1);            
  119.                 if(((P3 & 0xf0) != 0xf0) && (key_new == 1))  
  120.                 {                                                
  121.                         key_new = 0;
  122.                         switch(P3 & 0xf0)
  123.                         {
  124.                                 case 0xd0: key_can = 1; break;        
  125.                                 case 0xb0: key_can = 2; break;           
  126.                                 case 0x70: key_can = 3; break;           
  127.                         }
  128.                 }                        
  129.         }
  130.         else
  131.                 key_new = 1;        
  132. }
  133. void key_with()
  134. {
  135.         if(key_can == 1)         
  136.         {
  137.                 menu_1 ++;
  138.                 if(menu_1 > 2)
  139.                 {
  140.                         menu_1 = 0;
  141.                         init_1602();
  142.                 }
  143.         }
  144.         if(menu_1 == 1)                        
  145.         {
  146.                 if(key_can == 2)
  147.                 {
  148.                         t_high ++ ;               
  149.                         if(t_high > 99)
  150.                                 t_high = 99;
  151.                 }
  152.                 if(key_can == 3)
  153.                 {
  154.                         t_high -- ;               
  155.                         if(t_high <= t_low)
  156.                                 t_high = t_low + 1;
  157.                 }
  158.                 write_sfm2(1,8,t_high);         
  159.                 write_com(0x80+8);            
  160.                 write_com(0x0f);                  
  161.         }        
  162.         if(menu_1 == 2)                        
  163.         {
  164.                 if(key_can == 2)
  165.                 {
  166.                         t_low ++ ;                        
  167.                         if(t_low >= t_high)
  168.                                 t_low = t_high - 1;
  169.                 }
  170.                 if(key_can == 3)                        
  171.                 {
  172.                         t_low -- ;                        
  173.                         if(t_low <= 1)
  174.                                 t_low = 1;
  175.                 }
  176.                 write_sfm2(1,13,t_low);
  177.                 write_com(0x80+13);         
  178.                 write_com(0x0f);               
  179.         }
  180.         if(menu_1 == 3)               
  181.         {
  182.                 if(key_can == 2)
  183.                 {
  184.                         s_high ++ ;               
  185.                         if(s_high > 99)
  186.                                 s_high = 99;
  187.                 }
  188.                 if(key_can == 3)
  189.                 {
  190.                         s_high -- ;               
  191.                         if(s_high <= s_low)
  192.                                 s_high = s_low + 1;
  193.                 }
  194.                 write_sfm2(2,8,s_high);         
  195.                 write_com(0x80+0x40+8);           
  196.                 write_com(0x0f);                  
  197.         }        
  198.         if(menu_1 == 4)               
  199.         {
  200.                 if(key_can == 2)
  201.                 {
  202.                         s_low ++ ;                        
  203.                         if(s_low >= s_high)
  204.                                 s_low = s_high - 1;
  205.                 }
  206.                 if(key_can == 3)                        
  207.                 {
  208.                         s_low -- ;                        
  209.                         if(s_low <= 1)
  210.                                 s_low = 1;
  211.                 }
  212.                 write_sfm2(2,13,s_low);           
  213.                 write_com(0x80+0x40+13);            
  214.                 write_com(0x0f);                    
  215.         }               
  216. }
  217. void dst11()
  218. {
  219.         uchar i,j;                        
  220.         dht11 = 0;        
  221.         delay_1ms(5);
  222.         dht11 = 1;
  223.         delay_uint(4);         
  224.         if(dht11 == 0)         
  225.         {
  226.                 while(dht11 == 0);
  227.                 while(dht11 == 1);         
  228.                 for(i=0;i<5;i++)
  229.                 {
  230.                         for(j=0;j<8;j++)
  231.                         {
  232.                                 table_dht11[i] <<= 1;
  233.                                 while(dht11 == 1);
  234.                                 delay_uint(4);         
  235.                                 if(dht11 == 1)
  236.                                 {
  237.                                         table_dht11[i] |= 0x01;
  238.                                         while(dht11 == 1);         
  239.                                 }                        
  240.                         }                        
  241.                 }                        
  242.         }
  243.         dht11 = 1;
  244. }
  245. void clock_h_l()
  246. {
  247.         static uchar value,value1,value2,value3,value4;
  248.         if((table_dht11[2] >= t_high))
  249.         {                        
  250.                 value1 ++;                  
  251.                 if(value1 > 2)
  252.                 {
  253.                         wh_led = 0;                 
  254.                 }               
  255.         }
  256.         else
  257.         {
  258.                 value1 = 0;
  259.                 wh_led = 1;                 
  260.         }
  261.         if((table_dht11[2] <= t_low))
  262.         {                        
  263.                 value2 ++;                 
  264.                 if(value2 > 2)
  265.                 {
  266.                         wl_led = 0;                  
  267.                 }               
  268.         }
  269.         else
  270.         {
  271.                 value2 = 0;
  272.                 wl_led = 1;                 
  273.         }
  274.         if((table_dht11[0] >= s_high))
  275.         {
  276.                 value3 ++;                 
  277.                 if(value3 > 2)
  278.                 {
  279.                         sh_led = 0;               
  280.                 }
  281.         }else
  282.         {
  283.                 value3 = 0;        
  284.                 sh_led = 1;                 
  285.         }
  286.         if((table_dht11[0] <= s_low))
  287.         {
  288.                 value4 ++;                 
  289.                 if(value4 > 2)
  290.                 {
  291.                         sl_led = 0;                  
  292.                 }
  293.         }else
  294.         {
  295.                 value4 = 0;        
  296.                 sl_led = 1;                 
  297.         }
  298.         if((wh_led == 0) || (wl_led == 0) || (sh_led == 0) || (sl_led == 0))
  299.         {
  300.                 value ++;
  301.                 if(value >= 2)
  302.                         if(flag_en == 1)
  303.                         beep = ~beep;           
  304.         }
  305.         else
  306.         {
  307.                 beep = 1;
  308.                 value = 0;
  309.                 flag_en = 1;
  310.         }
  311. }  
  312. void main()
  313. {               
  314.         beep = 0;                                
  315.         delay_1ms(150);
  316.         P0 = P1 = P2 = P3 = 0xff;
  317.         time_init();         
  318.         init_1602();        
  319.         dst11();           
  320.         while(1)
  321.         {
  322.                 if(flag_300ms == 1)
  323.                 {
  324.                         flag_300ms = 0;
  325.                         dst11();               
  326.                         write_sfm2(2,3,table_dht11[0]);   
  327.                         write_sfm2(1,3,table_dht11[2]);         
  328.                         clock_h_l();   
  329.                 }
  330.                 key();
  331.                 if(key_can < 10)
  332.                 {
  333.                         key_with();                           
  334.                         if(key_can == 3)
  335.                         {
  336.                                 flag_en = 0;   
  337.                         }
  338.                 }
  339.                 delay_1ms(1);
  340.         }
  341. }
  342. void time0_int() interrupt 1   
  343. {        
  344.         static uchar value;
  345.         TH0 = 0x3c;
  346.         TL0 = 0xb0;     
  347.         value ++;         
  348.         if(value % 6 == 0)
  349.         {
  350.                 flag_300ms = 1;           
  351.                 value = 0;        
  352.         }
  353. }
復(fù)制代碼

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

使用道具 舉報(bào)

沙發(fā)
ID:390416 發(fā)表于 2021-5-8 12:14 | 只看該作者
我發(fā)了個(gè)貼子 更新了LCD1602的時(shí)間要求 你可以先去看看 照著改動(dòng)
回復(fù)

使用道具 舉報(bào)

板凳
ID:913310 發(fā)表于 2021-5-8 12:24 | 只看該作者

仿真圖在這里
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: h网站在线观看 | 久在线视频播放免费视频 | 一区二区三区四区五区在线视频 | av国产精品 | 欧美日韩国产精品一区 | 一区二区三区四区在线免费观看 | 人人99 | 区一区二在线观看 | 成人欧美 | 欧美黄页 | 日韩免费一区二区 | 久久久久国产精品一区二区 | 欧美极品在线观看 | 日韩视频一级 | 国产传媒在线播放 | 久久视频免费观看 | 国产午夜视频 | 精品视频一区二区三区 | 国产91久久久久蜜臀青青天草二 | 一级全黄视频 | av在线视| 国产精品毛片av | 中文字幕人成乱码在线观看 | 日韩性在线 | 国产日韩欧美二区 | 久久久精品天堂 | 国产在线色 | 国产视频一视频二 | 97起碰| 97av视频在线| 午夜国产羞羞视频免费网站 | 欧美一区二区三区在线看 | 国精产品一品二品国精在线观看 | 黄色大片免费网站 | 欧美一区二区三区在线视频 | 国产亚洲一区二区三区在线 | 久久精品一区 | 日本黄色的视频 | 黄网站免费观看 | 国产我和子的乱视频网站 | 日韩美香港a一级毛片免费 国产综合av |