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

QQ登錄

只需一步,快速開(kāi)始

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

STC12C5A60S2+DHT11溫濕度傳感器+數(shù)碼管

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
附件文件為c,h的文本格式。


單片機(jī)源程序如下:
  1. /************************************************
  2. 項(xiàng)  目:溫、濕度測(cè)量程序
  3. 單片機(jī):STC12C5A60S2
  4. 傳感器:DHT11
  5. 日  期:04.09
  6. ************************************************/

  7. #include <stc12c5a60s2.h>
  8. #include "delay.h"

  9. #define uint unsigned int
  10. #define uchar unsigned char

  11. sbit io = P2^0;                        //定義數(shù)據(jù)端口

  12. uchar data_byte;                //定義全局變量
  13. uchar RH,RL,TH,TL;                //定義全局變量

  14. unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};        // 顯示段碼值0~9
  15. uchar  TempData[5];                         //存儲(chǔ)顯示值的全局變量

  16. /******************** DHT11測(cè)試模塊**********************/
  17. void start()                        //開(kāi)始信號(hào)
  18. {
  19.         io=1;
  20.         delayus(10);
  21.         io=0;
  22.         delayms(30);                //10~60之間
  23.         io=1;
  24.         delayus(100);                //關(guān)鍵時(shí)間:35-250之間
  25. }

  26. /**********************接收一個(gè)字節(jié)**********************/
  27. uchar receive_byte()                       
  28. {
  29.         uchar i,temp,count;
  30.         for(i=0;i<8;i++)
  31.         {
  32.                 count=2;
  33.                 while((!io)&&count++)               
  34.                 temp=0;
  35.                 delayus(150);                                //關(guān)鍵時(shí)間:10~23之間
  36.                 if(io==1)temp=1;
  37.                 count=2;
  38.                 while((io)&&count++);
  39.                 if(count==1)break;
  40.                 data_byte<<=1;
  41.                 data_byte|=temp;
  42.         }
  43.         return data_byte;
  44. }

  45. /************************接收數(shù)據(jù)************************/

  46. void receive()                                       
  47. {
  48.         uchar T_H,T_L,R_H,R_L,check,num_check;
  49.         uchar count;

  50.         start();                                        //開(kāi)始信號(hào)               
  51.         io=1;       
  52.         if(!io)                                                //讀取DHT11響應(yīng)信號(hào)
  53.         {
  54.                 count=2;
  55.                 while((!io)&&count++);        //DHT11高電平80us是否結(jié)束
  56.                 count=2;
  57.                 while((io)&&count++);               
  58.                 R_H=receive_byte();
  59.                 R_L=receive_byte();
  60.                 T_H=receive_byte();
  61.                 T_L=receive_byte();       
  62.                 check=receive_byte();
  63.                
  64.                 io=0;                                       
  65.                    delayms(1);                                //拉低延時(shí)               
  66.                 io=1;               
  67.                 num_check=R_H+R_L+T_H+T_L;
  68.                        
  69.                 if(num_check=check)
  70.                 {
  71.                         RH=R_H;
  72.                         RL=R_L;
  73.                         TH=T_H;
  74.                         TL=T_L;
  75.                         check=num_check;               
  76.                 }               
  77.         }
  78. }

  79. /**********************************************************************
  80.                                                         顯示子函數(shù)
  81. **********************************************************************/
  82. void display()
  83. {       
  84.           P2=0xef;
  85.         P0=TempData[0];               
  86.         delayms(20);
  87.         P2=0xff;
  88.        
  89.         P2=0xdf;
  90.         P0=TempData[1];       
  91.         delayms(20);
  92.         P2=0xff;

  93.         P2=0xbf;
  94.         P0=TempData[2];
  95.         delayms(20);
  96.         P2=0xff;

  97.         P2=0x7f;
  98.         P0=TempData[3];       
  99.         delayms(20);
  100.         P2=0xff;
  101. }

  102. /*******************************************************************
  103.                                                定時(shí)器初始化子函數(shù)
  104. *******************************************************************/
  105. void InitTimer(void)                       
  106. {                                                                                                                                          
  107.         TMOD |= 0x01;                          //定義定時(shí)器T0,工作方式1   

  108.         TH0=(65536-20000)/256;
  109.         TL0=(65536-20000)%256;                        //50ms

  110.         ET0=1;
  111.         TR0=1;
  112.         EA = 1;                                //開(kāi)總中斷
  113.        
  114. }

  115. /***************************主函數(shù)**************************/
  116. void main()
  117. {
  118.         P0M0=0xFF;                                                //定義P0口為推挽輸出 1111 1111
  119. //        P2M0=0xF0;                                                //定義P2.4 ~ P2.7口為推挽輸出  1111 0000

  120.         InitTimer();

  121.         delayms(10);
  122.        
  123.         while(1)
  124.         {       
  125.                
  126.                 receive();               
  127.                
  128.                 TempData[0]=DuanMa[RH/10];                               
  129.                 TempData[1]=DuanMa[RH%10];                                                               
  130.                
  131.                 TempData[2]=DuanMa[TH/10];                       
  132.                 TempData[3]=DuanMa[TH%10];
  133.                
  134.                 delayms(20);
  135. ……………………

  136. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
程序文件.rar (1.94 KB, 下載次數(shù): 159)



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

使用道具 舉報(bào)

沙發(fā)
ID:231936 發(fā)表于 2017-12-6 17:09 | 只看該作者
請(qǐng)傳電路圖參考
回復(fù)

使用道具 舉報(bào)

板凳
ID:139071 發(fā)表于 2018-2-7 11:07 | 只看該作者
非常給力,頂頂頂
回復(fù)

使用道具 舉報(bào)

地板
ID:306141 發(fā)表于 2018-4-17 16:16 | 只看該作者
謝謝分享,下來(lái)看看怎么樣
回復(fù)

使用道具 舉報(bào)

5#
ID:649542 發(fā)表于 2019-11-27 23:07 | 只看該作者
感謝分享,很不錯(cuò)!
回復(fù)

使用道具 舉報(bào)

6#
ID:649542 發(fā)表于 2019-11-27 23:08 | 只看該作者
感謝分享,很不錯(cuò)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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