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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 18461|回復: 26
收起左側

51單片機控制DHT11在1602上顯示溫濕度的程序

  [復制鏈接]
ID:199245 發表于 2018-3-15 19:33 | 顯示全部樓層 |閱讀模式
需要的拿去

單片機源程序如下:
  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. typedef bit BOOL;
  5. sbit io = P2^0;
  6. sbit rs = P2^6;  
  7. sbit rw = P2^5;
  8. sbit ep = P2^7;
  9. uchar data_byte;
  10. uchar RH,RL,TH,TL;
  11. /********延時模塊***********/
  12. void delay(uchar ms)
  13. {  // 延時子程序
  14. uchar i;
  15. while(ms--)
  16. {
  17.   for(i = 0;i<250;i++);  
  18. }
  19. }
  20. void delay1()//延時10us
  21. {
  22. uchar i;
  23. i--;
  24. i--;
  25. i--;
  26. i--;
  27. i--;
  28. i--;
  29. }
  30. void longdelay(uchar s) //長延時
  31. {
  32. while(s--)
  33. {
  34.   delay(60);
  35. }
  36. }
  37. BOOL lcd_bz()//測試LCD忙碌狀態
  38. {
  39. BOOL result;  
  40. rs = 0;  
  41. rw = 1;
  42. ep = 1;
  43. result = (BOOL)(P0 & 0x80);
  44. ep = 0;  
  45. return result;  
  46. }
  47. void write_cmd(uchar cmd)// 寫指令
  48. {  
  49. while(lcd_bz());
  50. rs = 0;
  51. rw = 0;
  52. ep = 0;
  53. P0 = cmd;
  54. ep = 1;
  55. ep = 0;
  56. }
  57. void write_addr(uchar addr)//寫地址
  58. {
  59. write_cmd(addr|0x80);
  60. }
  61. void write_byte(uchar dat)//寫字節
  62. {  
  63. while(lcd_bz());
  64. rs = 1;
  65. rw = 0;
  66. ep = 0;
  67. P0 = dat;          
  68. ep = 1;
  69. ep = 0;
  70. }
  71. void lcd_init()// 初始化
  72. {
  73. write_cmd(0x38);
  74. delay(1);
  75.   write_cmd(0x08);
  76. delay(1);
  77. write_cmd(0x01);
  78. delay(1);
  79. write_cmd(0x06);
  80. delay(1);  
  81. write_cmd(0x0c);
  82. delay(1);
  83. }
  84. void display(uchar addr, uchar q)//在某一地址上顯示一字節
  85. {
  86. delay(10);
  87. write_addr(addr);
  88. write_byte(q);
  89. longdelay(2);
  90. }
  91. void start()//開始信號
  92. {
  93. io=1;
  94. delay1();
  95. io=0;
  96. delay(20);//>18ms  
  97. io=1;
  98. delay1();//20-40us
  99. delay1();
  100. delay1();
  101. delay1();
  102. delay1();
  103. }
  104. uchar receive_byte()//接收一個字節
  105. {
  106. uchar i,temp,count;
  107. for(i=0;i<8;i++)
  108. {
  109.    count=2;  
  110.   while((!io)&&count++)//等待50us低電平結束
  111.   temp=0;
  112.   delay1();
  113.   delay1();
  114.   delay1();
  115.   delay1();
  116.    if(io==1)
  117.   temp=1;
  118.   count=2;
  119.   while((io)&&count++);
  120.   if(count==1)break;
  121. data_byte<<=1;
  122.   data_byte|=temp;
  123. }
  124. return data_byte;
  125. }
  126. void receive()//接收數據
  127. {
  128. uchar T_H,T_L,R_H,R_L,check,num_check;
  129.    uchar count;
  130. start();//開始信號
  131. io=1;
  132. if(!io)//讀取DHT11響應信號
  133. {
  134.   count=2;
  135.   while((!io)&&count++);//DHT11高電平80us是否結束
  136.   count=2;
  137.   while((io)&&count++);
  138.   R_H=receive_byte();
  139.   R_L=receive_byte();
  140.   T_H=receive_byte();
  141.   T_L=receive_byte();
  142.   check=receive_byte();
  143.   io=0;//拉低延時50us
  144.   delay1();
  145.    delay1();
  146.   delay1();
  147.   delay1();
  148.   delay1();
  149.   io=1;
  150.   num_check=R_H+R_L+T_H+T_L;
  151.   if(num_check=check)
  152.   {
  153.    RH=R_H;
  154. RL=R_L;
  155. TH=T_H;
  156. TL=T_L;
  157. check=num_check;
  158.   }
  159. }
  160. }
  161. void main()
  162. {
  163. lcd_init();
  164. delay(10);
  165. while(1)
  166. {
  167.   receive();
  168.   delay(100);
  169.   display(0x00,'R');
  170.   display(0x01,':');
  171.   display(0x02,RH/10+0x30);
  172.    display(0x03,RH%10+0x30);
  173.   display(0x04,'%');
  174.   display(0x40,'T');
  175.   display(0x41,':');                                
  176.   display(0x42,TH/10+0x30);
  177.   display(0x43,TH%10+0x30);
  178. display(0x44,0xdf);
  179.   display(0x45,0x43);
  180. }
  181. }
復制代碼

所有資料51hei提供下載:
程序.rar (29.75 KB, 下載次數: 344)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:427492 發表于 2019-7-14 21:35 | 顯示全部樓層
我找到一個時序是對的,你們可以參考一下:
/*********************** DHT11測試模塊***************************************/
void start()//開始信號
{
         io=0;
         delay(18);//>18ms
         io=1;
         delay1();//20-40us
         delay1();
         delay1();
         delay1();
}
uchar receive_byte()//接收一個字節
{
         uchari;
         for(i=0;i<8;i++)
         {      
             data_byte<<=1;                                                                   //循環左移
                  while(!io);                                                                        //每發送一位數據間隔50us低電平
                  delay1();delay1();delay1();delay1();        //延遲40us
                  if(io==1)
                  {
                    data_byte=data_byte|0x01;
                    while(io);
                  }
                  else
                  {
                   data_byte=data_byte|0x00;
                  }
         }
         returndata_byte;
}
void receive()//接收數據
{
         ucharT_H,T_L,R_H,R_L,check;
         start();//開始信號
         io=1;
         if(!io)//讀取DHT11響應信號
         {
   while(!io) ;                                    //判斷輸出低電平
   while( io) ;                                                            //判斷輸出高電平
         R_H=receive_byte();      
         R_L=receive_byte();
         T_H=receive_byte();
         T_L=receive_byte();
         check=receive_byte();
         io=0;                                
         delay1();delay1();delay1();delay1();delay1();//拉低延時50us
         io=1;
         if(R_H+R_L+T_H+T_L==check)                        //矯正
         {
                  RH=R_H;
                  RL=R_L;
                  TH=T_H;
                  TL=T_L;
         }
         }
}
回復

使用道具 舉報

ID:299721 發表于 2018-3-30 23:51 | 顯示全部樓層
厲害了
回復

使用道具 舉報

ID:77707 發表于 2018-3-31 08:45 | 顯示全部樓層
不錯,通過編譯。需要溫度傳感器,才能實現測溫。
回復

使用道具 舉報

ID:299278 發表于 2018-3-31 10:54 | 顯示全部樓層
有protues仿真圖嗎
回復

使用道具 舉報

ID:299931 發表于 2018-4-1 16:11 | 顯示全部樓層
為啥數據顯示一直是0
回復

使用道具 舉報

ID:308121 發表于 2018-4-14 18:28 | 顯示全部樓層
51宅男 發表于 2018-4-1 16:11
為啥數據顯示一直是0

你解決問題了嗎?
回復

使用道具 舉報

ID:382962 發表于 2018-8-11 16:54 | 顯示全部樓層
顯示一直是0
回復

使用道具 舉報

ID:294657 發表于 2018-9-2 21:55 | 顯示全部樓層
是1602顯示嗎,為什么我的沒有顯示呢
回復

使用道具 舉報

ID:303383 發表于 2018-9-2 22:55 | 顯示全部樓層
提示: 作者被禁止或刪除 內容自動屏蔽
回復

使用道具 舉報

ID:291850 發表于 2018-10-27 11:19 | 顯示全部樓層
溫濕度一直是0是什么情況啊?小白不太懂啊
回復

使用道具 舉報

ID:291850 發表于 2018-10-27 13:25 | 顯示全部樓層
貌似DHT11數據一直沒收到
回復

使用道具 舉報

ID:85740 發表于 2019-3-13 09:29 | 顯示全部樓層
11.0592 stc89c52rc實測無法成功和dht11通信成功。
回復

使用道具 舉報

ID:368574 發表于 2019-3-16 15:37 | 顯示全部樓層
beyonbirth 發表于 2018-10-27 13:25
貌似DHT11數據一直沒收到

我的也是只顯示0
回復

使用道具 舉報

ID:501427 發表于 2019-4-4 19:24 | 顯示全部樓層

解決了嗎?我也顯示是0,什么情況啊
回復

使用道具 舉報

ID:243819 發表于 2019-4-5 13:02 | 顯示全部樓層
先贊一個!
回復

使用道具 舉報

ID:182535 發表于 2019-4-27 15:20 | 顯示全部樓層
正好需要。。。。。。。。。
回復

使用道具 舉報

ID:520461 發表于 2019-5-6 20:16 | 顯示全部樓層
beyonbirth 發表于 2018-10-27 13:25
貌似DHT11數據一直沒收到

解決了沒
回復

使用道具 舉報

ID:545996 發表于 2019-7-2 22:16 | 顯示全部樓層
顯示0怎么辦
回復

使用道具 舉報

ID:427492 發表于 2019-7-14 21:18 | 顯示全部樓層
時序有問題,就一直顯示初始化時的值
回復

使用道具 舉報

ID:623338 發表于 2019-11-10 12:55 | 顯示全部樓層
你們解決了嗎
回復

使用道具 舉報

ID:56204 發表于 2019-11-29 02:50 來自手機 | 顯示全部樓層
113333 發表于 2019-11-10 12:55
你們解決了嗎

學習一下,感謝分享
回復

使用道具 舉報

ID:631951 發表于 2019-11-29 10:34 | 顯示全部樓層
楓樹566 發表于 2019-7-14 21:35
我找到一個時序是對的,你們可以參考一下:
/*********************** DHT11測試模塊******************** ...

我用了你這個,也不好用 啊,一直顯示00
回復

使用道具 舉報

ID:638896 發表于 2019-12-5 20:25 | 顯示全部樓層
不行,啥都不顯示,大家別看了,去找下一個。
回復

使用道具 舉報

ID:638896 發表于 2019-12-6 11:00 | 顯示全部樓層
不行,顯示不了。
回復

使用道具 舉報

ID:791947 發表于 2020-6-29 16:09 | 顯示全部樓層
為什么我的是什么都不顯示
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线视频一区 | 久久精品久久精品 | 国产精品一区二区三区久久久 | 国产精品毛片一区二区三区 | 欧美激情一区二区三区 | 国产成人99av超碰超爽 | 一级全黄少妇性色生活免费看 | 欧美视频1区 | 久久久久久国产精品 | 99久久亚洲 | 国产精品亚洲视频 | 91免费在线视频 | 99久久婷婷| 国产在线视频一区 | 日本午夜免费福利视频 | 天天操天天拍 | 日韩精品一区二区三区久久 | 国产成人精品网站 | 在线国产一区二区 | 国产精品伦理一区 | 天天天插 | 国产日韩亚洲欧美 | 伊人性伊人情综合网 | 国产无人区一区二区三区 | 日韩成人精品一区二区三区 | 亚洲乱码国产乱码精品精98午夜 | 欧美成人一区二区 | 在线观看亚洲专区 | 精品一区二区三区在线观看国产 | 亚洲一区在线播放 | 亚洲精品一区在线观看 | 亚洲国产日韩一区 | 国产 亚洲 网红 主播 | 综合久久综合久久 | 羞羞网站在线观看 | 荷兰欧美一级毛片 | 成人免费一区二区三区视频网站 | 99精品视频网 | 日本亚洲一区二区 | 精品国产一区二区三区免费 | 久久久精品一区 |