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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4149|回復: 4
打印 上一主題 下一主題
收起左側

STC12C5A60S2的DHT22以及MQ-2的1602顯示程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:86862 發表于 2018-5-11 22:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這個程序是本人寫的,可在1602顯示,煙霧與溫濕度顯示程序。經測試,可用

單片機源程序如下:
  1. #include"main.h"

  2. sbit DHT22_DATA = P2^0;
  3. unsigned char a,b,c,d,check=1;  //8bit溫度整數數據+8bit溫度小數數據+8bit濕度整數數+8bit濕度小數數據+8bit校驗和
  4. unsigned int R,T;

  5. unsigned char n;

  6. void delay500us(void)   //誤差 -0.054253472222us
  7. {
  8.     unsigned char a,b;
  9.     for(b=251;b>0;b--)
  10.         for(a=4;a>0;a--);
  11.     _nop_();  //if Keil,require use intrins.h
  12. }

  13. void delay20us(void)   //誤差 -0.016637731481us
  14. {
  15.     unsigned char a,b;
  16.     for(b=1;b>0;b--)
  17.         for(a=52;a>0;a--);
  18.     _nop_();  //if Keil,require use intrins.h
  19. }


  20. char Read_Byte()
  21. {
  22.         char temp,tmp;
  23.         unsigned char i;
  24.         for(i=0;i<8;i++)
  25.         {
  26. //                delay20us();
  27.                 n = 2;
  28.                 while((!DHT22_DATA)&&n++); //等待50us間隔低電平響應結束
  29.                 if(n == 1) return 0;
  30.                 delay20us();delay20us();   //26-28us高電平為‘0’,70us高電平為‘1’
  31.                 tmp = 0;
  32.                 if(DHT22_DATA) tmp = 1;
  33.                 n = 2;
  34.                 while(DHT22_DATA&&n++);  //若位為1,等待高電平結束
  35.                 if(n == 1) return 0;
  36.                 temp <<= 1;
  37.                 temp |= tmp;
  38.         }
  39.         return temp;
  40. }

  41. unsigned char DHT22_Read()
  42. {   
  43.         DHT22_DATA = 0;
  44.         delay500us();                                                        //拉低500us
  45.         DHT22_DATA = 1;
  46.         delay20us();delay20us();                           //延時20-40us等待響應信號
  47.         DHT22_DATA = 1;
  48.         if(!DHT22_DATA)
  49.         {
  50.                 n = 2;
  51.                 while((!DHT22_DATA)&&n++);                        //等待80us低電平響應結束
  52.                 if(n == 1) return 0;
  53.                 delay20us();delay20us();delay20us();
  54.                 n = 2;
  55.                 while(DHT22_DATA&&n++);                                //等待80s高電平等待結束
  56.                 if(n == 1) return 0;
  57.                 a = Read_Byte();
  58.                 b = Read_Byte();
  59.                 c = Read_Byte();
  60.                 d = Read_Byte();
  61.                 check = Read_Byte();
  62.                 DHT22_DATA = 1;
  63.                 if(check != a+b+c+d) return 0;
  64.         }
  65.         R = a*256+b;
  66.         T = c*256+d;
  67.         return 1;
  68. ……………………

  69. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
煙霧溫濕度可用.zip (60.03 KB, 下載次數: 181)


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

使用道具 舉報

沙發
ID:324109 發表于 2018-5-17 19:12 | 只看該作者
老鐵,在12MHz晶振上怎么改,還有就是mq-2你定義的那個腳
回復

使用道具 舉報

板凳
ID:104846 發表于 2018-8-17 11:41 | 只看該作者
支持一下!
回復

使用道具 舉報

地板
ID:441222 發表于 2019-2-27 14:13 | 只看該作者
在做一個MQ-2傳感器的程序,正好參考上了
回復

使用道具 舉報

5#
ID:585455 發表于 2019-7-24 19:01 | 只看該作者
感謝分享
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表