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

QQ登錄

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

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

STC15W單片機(jī)顯示DHT11采集源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:316019 發(fā)表于 2018-4-25 10:41 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
單片機(jī)源程序如下:
  1. #include "DHT11.h"
  2. #include "yejingLCD.h"
  3. #include <stdio.h>
  4. #include<absacc.h>
  5. #include<string.h>
  6. uchar  U8FLAG,k;
  7. uchar  U8count,U8temp;
  8. uchar  U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
  9. uchar   U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
  10. uchar   U8comdata;
  11. uchar   count, count_r=0;
  12. uchar dht_dat[5];
  13. uint  U16temp1,U16temp2;
  14. uchar Ubitflag;

  15. void Delay20ms()                //@11.0592MHz
  16. {
  17.         unsigned char i, j, k;

  18.         _nop_();
  19.         _nop_();
  20.         i = 1;
  21.         j = 216;
  22.         k = 35;
  23.         do
  24.         {
  25.                 do
  26.                 {
  27.                         while (--k);
  28.                 } while (--j);
  29.         } while (--i);
  30. }

  31. void Delay20us()                //@11.0592MHz
  32. {
  33.         unsigned char i;

  34.         _nop_();
  35.         _nop_();
  36.         _nop_();
  37.         i = 52;
  38.         while (--i);
  39. }

  40. void Delay1000ms()                //@11.0592MHz
  41. {
  42.         unsigned char i, j, k;

  43.         _nop_();
  44.         _nop_();
  45.         i = 43;
  46.         j = 6;
  47.         k = 203;
  48.         do
  49.         {
  50.                 do
  51.                 {
  52.                         while (--k);
  53.                 } while (--j);
  54.         } while (--i);
  55. }

  56.        
  57. void  COM(void)
  58. {
  59.      
  60.                 uchar i;
  61.          
  62.        for(i=0;i<8;i++)          
  63.             {
  64.                
  65.                        U8FLAG=2;       
  66.                    while((!P2_0)&&U8FLAG++);
  67.                         Delay20us();
  68.                         Delay20us();
  69.                           U8temp=0;
  70.              if(P2_0)U8temp=1;
  71.                     U8FLAG=2;
  72.                  while((P2_0)&&U8FLAG++);
  73.                    //超時(shí)則跳出for循環(huán)                  
  74.                     if(U8FLAG==1)break;
  75.                    //判斷數(shù)據(jù)位是0還是1         
  76.                      
  77.                 // 如果高電平高過(guò)預(yù)定0高電平值則數(shù)據(jù)位為 1
  78.                     
  79.                    U8comdata<<=1;
  80.                       U8comdata|=U8temp;        //0
  81.              }//rof
  82.           
  83. }

  84.         //--------------------------------
  85.         //-----濕度讀取子程序 ------------
  86.         //--------------------------------
  87.         //----以下變量均為全局變量--------
  88.         //----溫度高8位== U8T_data_H------
  89.         //----溫度低8位== U8T_data_L------
  90.         //----濕度高8位== U8RH_data_H-----
  91.         //----濕度低8位== U8RH_data_L-----
  92.         //----校驗(yàn) 8位 == U8checkdata-----
  93.         //----調(diào)用相關(guān)子程序如下----------
  94.         //---- Delay();, Delay_10us();,COM();
  95.         //--------------------------------

  96. void RH(void)
  97. {
  98.           //主機(jī)拉低18ms
  99.        P2_0=0;
  100.            Delay20ms();
  101.            P2_0=1;
  102.          //總線由上拉電阻拉高 主機(jī)延時(shí)20us
  103.            Delay20us();
  104.            Delay20us();

  105.          //判斷從機(jī)是否有低電平響應(yīng)信號(hào) 如不響應(yīng)則跳出,響應(yīng)則向下運(yùn)行          
  106.            if(!P2_0)                 //T !          
  107.            {
  108.            U8FLAG=2;
  109.          //判斷從機(jī)是否發(fā)出 80us 的低電平響應(yīng)信號(hào)是否結(jié)束         
  110.            while((!P2_0)&&U8FLAG++);
  111.            U8FLAG=2;
  112.          //判斷從機(jī)是否發(fā)出 80us 的高電平,如發(fā)出則進(jìn)入數(shù)據(jù)接收狀態(tài)
  113.            while((P2_0)&&U8FLAG++);
  114.          //數(shù)據(jù)接收狀態(tài)                 
  115.            COM();
  116.            U8RH_data_H_temp=U8comdata;
  117.            COM();
  118.            U8RH_data_L_temp=U8comdata;
  119.            COM();
  120.            U8T_data_H_temp=U8comdata;
  121.            COM();
  122.            U8T_data_L_temp=U8comdata;
  123.            COM();
  124.            U8checkdata_temp=U8comdata;
  125.            P2_0=1;
  126.          //數(shù)據(jù)校驗(yàn)
  127.          
  128.            U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
  129.            if(U8temp==U8checkdata_temp)
  130.            {
  131.               Ubitflag=1;
  132.                      U8RH_data_H=U8RH_data_H_temp;
  133.                      U8RH_data_L=U8RH_data_L_temp;
  134.                   U8T_data_H=U8T_data_H_temp;
  135.                      U8T_data_L=U8T_data_L_temp;
  136. ……………………

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

所有資料51hei提供下載:
STC15W DHT通過(guò).rar (69.43 KB, 下載次數(shù): 80)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:364341 發(fā)表于 2018-7-20 16:14 | 只看該作者
顯示是用的什么液晶???
回復(fù)

使用道具 舉報(bào)

板凳
ID:760366 發(fā)表于 2020-12-2 10:20 | 只看該作者
這是51的 不是15的!!
回復(fù)

使用道具 舉報(bào)

地板
ID:584814 發(fā)表于 2021-1-12 13:20 | 只看該作者
15706816080 發(fā)表于 2020-12-2 10:20
這是51的 不是15的!!

15是stc單片機(jī)中的一個(gè)系列代號(hào),隸屬于51單片機(jī),所以這個(gè)既是15的更是51的
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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