欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC15單片機DHT11溫濕度檢測(注釋詳細)oled顯示程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:259898 發(fā)表于 2019-1-13 15:21 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
我這里加了oled用來顯示溫濕度,采用STC15,dht11模塊,有興趣可以玩下

  1. #include<STC15.H>
  2. #include "intrins.h"//用于提供_nop_();函數(shù)
  3. #include "OLED_Contrul_Hygrothermograph.c"//OLED控制函數(shù)

  4. sbit YLED=P3^1;
  5. sbit RLED=P3^0;
  6. sbit DHT=P3^5;//DHT11模塊

  7. unsigned int Temperature[3]={1,1,1};//前兩位為整數(shù)部分,后一位為小數(shù)部分
  8. unsigned int Humidity[2]={1,1};//傳回的濕度數(shù)據(jù)只有整數(shù)部分

  9. unsigned char Data_Receive[5];
  10. /*##############################################################################################
  11. 設(shè)計名稱:基于DHT11的溫濕度計(Hygrothermograph)
  12. 設(shè)計者:清河

  13. 平臺:STC15F104W
  14. 硬件部分
  15. 顯示:采用OLED12864顯示溫度和濕度
  16. 測量,采用DHT11模塊,模塊信息如下:
  17. ASATR
  18. -----
  19. NA:DHT11
  20. OC:3.3-5.5V
  21. U1:5-95%RH
  22. U2:-20-60℃
  23. U3:±5%RH±2℃
  24. SN:A1712882A

  25. 為保證延時準確,晶振設(shè)置為12MHz

  26. 借用了http://www.raoushi.com/bbs/dpj-38067-1.html上的部分程序,在此表示感謝
  27. ##############################################################################################*/

  28. void Delay30us()//@12.000MHz
  29. {
  30.         unsigned char i;
  31.         i=87;
  32.         while(--i);
  33. }

  34. void Delay20ms()//@12.000MHz
  35. {
  36.         unsigned char i,j,k;
  37.         i=1;
  38.         j=234;
  39.         k=113;
  40.         do
  41.         {
  42.                 do
  43.                 {
  44.                         while(--k);
  45.                 }while(--j);
  46.         }while(--i);
  47. }

  48. void Delay1s()//@12.000MHz
  49. {
  50.         unsigned char i,j,k;
  51.         i=46;
  52.         j=153;
  53.         k=245;
  54.         do
  55.         {
  56.                 do
  57.                 {
  58.                         while(--k);
  59.                 }while(--j);
  60.         }while(--i);
  61. }

  62. void OLED_Display()//OLED顯示驅(qū)動函數(shù)
  63. {
  64.         OLED_DataDisplay_T(56,4,Temperature);//在指定位置顯示溫度
  65.         OLED_DataDisplay_H(56,6,Humidity);//在指定位置顯示濕度
  66. }

  67. void DHT_Collect()//溫度采集函數(shù)
  68. {
  69.         unsigned char i,j;//for循環(huán)變量
  70.         unsigned char t;//超時判斷
  71.         unsigned char dat8=0;//一次讀取的8位數(shù)據(jù),需要讀5次
  72.         unsigned int CheckValue=0;//校驗和
  73.         
  74.         DHT=0;//主機發(fā)起始信號
  75.         Delay20ms();//主機拉低總線至少18ms
  76.         DHT=1;//主機拉高總線20~40us
  77.         Delay30us();
  78.         
  79.         t=80;//設(shè)置超時等待時間
  80.         while(DHT&&t--);//等待DHT11拉低總線
  81.         if(t==0)//超時
  82.         {
  83.                 DHT=1;
  84.         }
  85.         t=250;//設(shè)置超時等待時間
  86.         while(!DHT&&t--);//等待DHT11拉高總線
  87.         if(t==0)//超時
  88.         {
  89.                 DHT=1;
  90.         }
  91.         t=250;//設(shè)置超時等待時間
  92.         while(DHT&&t--);//等待DHT11拉低總線
  93.         if(t==0)//超時
  94.         {
  95.                 DHT=1;
  96.         }

  97.         for(j=0;j<5;j++)//5次讀取
  98.         {
  99.                 for(i=0;i<8;i++)//1次8個位
  100.                 {
  101.         //等待50us開始時隙
  102.                         t=150;//設(shè)置超時等待時間
  103.                         while(!DHT&&t--);//等待DHT11拉高總線
  104.                         if(t==0)//超時
  105.                         {
  106.                                 DHT=1;
  107.                         }
  108.                         t=0;//記錄時間清零
  109.                         while(DHT&&++t);//等待并記錄高電平持續(xù)時間
  110.                         dat8<<=1;
  111.                         if(t>30)//高電平持續(xù)時間較長(70us)
  112.                         dat8+=1;//傳輸值為1
  113.                 }
  114.                 Data_Receive[j]=dat8;
  115.         }
  116.         
  117.         Delay30us();//等待DHT11拉低50us
  118.         Delay30us();
  119.         DHT=1;

  120.         for(i=0;i<4;i++)
  121.         {
  122.                 CheckValue+=Data_Receive[i];//計算校驗值
  123.         }
  124.         if((unsigned char)CheckValue==Data_Receive[4])//比對
  125.         {
  126.                 Temperature[0]=Data_Receive[2]/10;
  127.                 Temperature[1]=Data_Receive[2]%10;
  128.                 Temperature[2]=Data_Receive[3]%10;
  129.                 Humidity[0]=Data_Receive[0]/10;
  130.                 Humidity[1]=Data_Receive[0]%10;
  131.         }
  132. }

  133. void sys_init()//系統(tǒng)初始化函數(shù)
  134. {
  135.         YLED=1;
  136.         RLED=1;
  137.         OLED_Init(); //OLED初始化
  138.         OLED_CLS();//清屏
  139.         
  140.         OLED_FormTitle(0,0);//顯示標題文字Linyar Lab.
  141.         OLED_FormName(0,2);//顯示Hygrothermograph名稱
  142.         OLED_FormLine(0,3);//顯示一條橫線
  143.         OLED_FormTemp(8,4);//顯示溫度文字
  144.         OLED_FormHumi(16,6);//顯示濕度文字
  145.         OLED_AnyChar_16X16(96,4,TempChar);//在行4(每行高16像素),列96像素位置顯示攝氏度℃字符
  146.         OLED_AnyChar_8X16(88,6,HumiChar);//在行6(每行高16像素),列88像素位置顯示百分號%字符
  147.         OLED_AnyChar_8X16(72,4,PointChar);//在行4(每行高16像素),列72像素位置顯示冒號:字符
  148. }

  149. void main()
  150. {
  151.         P3M0=0X00;
  152.         P3M1=0X00;
  153.         sys_init();
  154.         
  155.         while(1)
  156.         {
  157.                 DHT_Collect();//DHT11數(shù)據(jù)采集
  158.                 YLED=1;RLED=0;//燈狀態(tài)轉(zhuǎn)換
  159.                 OLED_Display();//OLED顯示函數(shù)
  160.                 RLED=1;YLED=0;//燈狀態(tài)轉(zhuǎn)換
  161.                 Delay1s();
  162.                 Delay1s();//注意:長時間的延時必須要有,不然會讀出0
  163.         }
  164. }
復(fù)制代碼

全部資料51hei下載地址:
溫濕度檢測 oled.zip (52.82 KB, 下載次數(shù): 458)

評分

參與人數(shù) 2黑幣 +54 收起 理由
凌凈清河 + 4 轉(zhuǎn)載不注明出處,羊毛薅的不錯喲
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:412814 發(fā)表于 2019-2-1 20:39 | 只看該作者
學(xué)習(xí)了,謝謝樓主
回復(fù)

使用道具 舉報

板凳
ID:412814 發(fā)表于 2019-2-9 15:56 | 只看該作者
謝謝樓主,正需要呢。
回復(fù)

使用道具 舉報

地板
ID:445069 發(fā)表于 2019-2-20 15:49 | 只看該作者
給樓主點贊!正在分析DHT11的代碼。
回復(fù)

使用道具 舉報

5#
ID:245031 發(fā)表于 2019-3-1 16:00 來自觸屏版 | 只看該作者
ontheroad 發(fā)表于 2019-2-20 15:49
給樓主點贊!正在分析DHT11的代碼。

實驗成功。

15514271931110.035022819921855075.jpg (661.79 KB, 下載次數(shù): 148)

15514271931110.035022819921855075.jpg
回復(fù)

使用道具 舉報

6#
ID:471657 發(fā)表于 2019-4-3 08:21 | 只看該作者
為什麼,我新建一個stc工程把你的代碼加進去沒有現(xiàn)象尼?
回復(fù)

使用道具 舉報

7#
ID:471657 發(fā)表于 2019-4-3 14:04 | 只看該作者
大佬我問一下,為什麼你那個溫度的小數(shù)部分,他的j沒有賦值,卻能顯示出小數(shù)部分,為什麼?
回復(fù)

使用道具 舉報

8#
ID:321223 發(fā)表于 2019-5-22 22:06 | 只看該作者
謝謝樓主
回復(fù)

使用道具 舉報

9#
ID:425297 發(fā)表于 2019-5-23 19:36 | 只看該作者
學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報

10#
ID:553704 發(fā)表于 2019-6-12 08:20 | 只看該作者

想問一下樓主,我剛接觸15單片機,編寫完完整的程序之后,運行也沒有錯誤,然后接線的時候就是按照程序?qū)懙陌袿LED(7腳的OLED)的SLK和SDA分別接了單片機的P31和P30口,VCC和GND接單片機的VCC和GND,dht11的第二個引腳接了單片機的P35口,VCC和GND接單片機的VCC和GND,接線應(yīng)該沒有錯誤吧,為什么OLED不能顯示數(shù)據(jù),但是感受到它在發(fā)燙,dht11也在發(fā)燙,這是什么原因啊
回復(fù)

使用道具 舉報

11#
ID:59423 發(fā)表于 2019-9-21 20:17 | 只看該作者
很棒的程序,嘗試下。
回復(fù)

使用道具 舉報

12#
ID:399931 發(fā)表于 2019-11-27 22:12 來自觸屏版 | 只看該作者
可不可以加個電機控制我不會啊
回復(fù)

使用道具 舉報

13#
ID:476465 發(fā)表于 2020-1-9 15:17 | 只看該作者
用的是STC15W4K56S4芯片,燒錄你的程序為什么會沒有現(xiàn)象呢?
回復(fù)

使用道具 舉報

14#
ID:547758 發(fā)表于 2020-2-13 17:10 | 只看該作者
您好 請問一下 為什么我按照程序上面連接后  oled上面能顯示 但是溫濕度一直是0 沒有變化 謝謝
回復(fù)

使用道具 舉報

15#
ID:692891 發(fā)表于 2020-2-13 17:32 | 只看該作者
請問 我按照你的程序上面連接之后 溫濕度一直顯示為0 沒有變化 怎么解決 謝謝
回復(fù)

使用道具 舉報

16#
ID:692971 發(fā)表于 2020-2-13 21:07 | 只看該作者
Mr.572 發(fā)表于 2020-2-13 17:32
請問 我按照你的程序上面連接之后 溫濕度一直顯示為0 沒有變化 怎么解決 謝謝

延時不夠會不會 是用在51單片機還是15
回復(fù)

使用道具 舉報

17#
ID:692891 發(fā)表于 2020-2-23 16:58 | 只看該作者
explode 發(fā)表于 2020-2-13 21:07
延時不夠會不會 是用在51單片機還是15

用在51單片機上,延時1-2s呀
回復(fù)

使用道具 舉報

18#
ID:692891 發(fā)表于 2020-2-29 15:58 | 只看該作者

大佬 為什么我的oled上面的溫濕度一直顯示為0呢 而且無變化
回復(fù)

使用道具 舉報

19#
ID:372579 發(fā)表于 2020-2-29 17:52 | 只看該作者
這個有空了試著做下
回復(fù)

使用道具 舉報

20#
ID:700310 發(fā)表于 2020-2-29 20:18 來自觸屏版 | 只看該作者
我也要做這個遠程溫濕度檢測
回復(fù)

使用道具 舉報

21#
ID:680485 發(fā)表于 2020-3-25 23:17 | 只看該作者
MANHAMCHAN 發(fā)表于 2020-1-9 15:17
用的是STC15W4K56S4芯片,燒錄你的程序為什么會沒有現(xiàn)象呢?

師兄你好,我遇到和你一樣的問題,請問你解決了嗎??
回復(fù)

使用道具 舉報

22#
ID:664117 發(fā)表于 2020-5-15 14:07 | 只看該作者
chen_mq 發(fā)表于 2020-3-25 23:17
師兄你好,我遇到和你一樣的問題,請問你解決了嗎??

還是用示波器去看波形吧
回復(fù)

使用道具 舉報

23#
ID:1015572 發(fā)表于 2022-4-19 08:48 | 只看該作者
謝謝樓主,正需要呢。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表