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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

vb上位機(jī)+AM2301溫濕度監(jiān)測單片機(jī)下位機(jī)全套源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:223416 發(fā)表于 2018-1-21 16:28 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
這個裝置中51單片機(jī)讀取溫濕度傳感器模塊的數(shù)值,然后通過串口發(fā)送給vb上位機(jī)


AM2301溫濕度的下位機(jī)單片機(jī)源碼:
  1. #include <reg52.h>

  2. unsigned char tmp;
  3. void send_char(unsigned char txd);
  4. void send_str();
  5. void delayms(unsigned char ms);
  6. void send_char(unsigned char txd);
  7. void delay_us(unsigned int i);
  8. void dht_init();
  9. unsigned char read_byte();
  10. void read_hum_temp();
  11. void zhuanhuan();
  12. unsigned int hum,temp; //定義濕度、溫度(全局)
  13. unsigned char hum_h,hum_l,temp_h,temp_l,check; //濕度高、低8位,溫度高、低8位,校驗位
  14. unsigned char bai,shi,ge,bai1,shi1,ge1;

  15. sbit dht=P1^1;

  16. int main()
  17. {
  18.         TMOD = 0x20;     // 定時器1工作于8位自動重載模式, 用于產(chǎn)生波特率
  19.         TH1 = 0xFD;      // 波特率9600
  20.         TL1 = 0xFD;

  21.         SCON = 0x50;     // 設(shè)定串行口工作方式
  22.         PCON &= 0xef;    // 波特率不倍增
  23.   
  24.         TR1 = 1;         // 啟動定時器1
  25.         IE = 0x0;        // 禁止任何中斷

  26.         dht_init();
  27.         while(1)
  28.         {
  29.                 read_hum_temp();
  30.                 zhuanhuan();
  31.                 send_str();
  32.                 delayms(255);
  33.                 delayms(255);
  34.         }  
  35. }

  36. //傳感器初始化
  37. void dht_init()
  38. {
  39.         dht=0;
  40.         delay_us(50); //拉低延時500微秒,發(fā)送開始信號
  41.         dht=1; //釋放總線,延時30微秒
  42.         delay_us(4);
  43.         while(!dht); //拉低等待
  44.         while(dht); // 拉高等待,即將傳送數(shù)據(jù)
  45. }

  46. //讀取一個字節(jié)數(shù)據(jù)
  47. unsigned char read_byte()
  48. {
  49.         unsigned char n,byte=0,dat;
  50.         for(n=0;n<8;n++)
  51.         {
  52.                 while(!dht);
  53.                 delay_us(4); //理論上28us<延時<70us,此處寫2--6都可以
  54.                 dat=0;
  55.                 if(dht)
  56.                 dat=1;
  57.                 while(dht);
  58.                 byte<<=1;
  59.                 byte|=dat;
  60.         }
  61.         return byte;
  62. }

  63. //讀取40位數(shù)據(jù)
  64. void read_hum_temp()
  65. {
  66.         dht_init();
  67.         hum_h=read_byte();  //讀濕度
  68.         hum_l=read_byte();
  69.         temp_h=read_byte(); //讀溫度
  70.         temp_l=read_byte();
  71.         check=read_byte();  //讀校驗
  72.         while(!dht);        // 等待低電平結(jié)束
  73.         dht=1;              //最后拉高總線
  74. }

  75. //數(shù)據(jù)轉(zhuǎn)換,提取各位數(shù)字
  76. void zhuanhuan()
  77. {
  78.         unsigned char a;
  79.         a=hum_h+hum_l+temp_h+temp_l;
  80.         if(a==check)
  81.         {
  82.                 hum=temp=0;
  83.                 hum=((hum|hum_h)<<8)|hum_l;
  84.                 temp=((temp|temp_h)<<8)|temp_l;
  85.                 bai=temp/100+0x30;
  86.                 shi=temp%100/10+0x30;
  87.                 ge=temp%10+0x30;
  88.                 bai1=hum/100+0x30;
  89.                 shi1=hum%100/10+0x30;
  90.                 ge1=hum%10+0x30;
  91.         }
  92.         else bai=shi=ge=bai1=shi1=ge1=0;
  93. }

  94. // 傳送一個字符
  95. void send_char(unsigned char txd)
  96. {
  97.         SBUF = txd;
  98.         while(!TI);      // 等特數(shù)據(jù)傳送
  99.         TI = 0;          // 清除數(shù)據(jù)傳送標(biāo)志
  100. }

  101. // 傳送字串
  102. void send_str()
  103. {
  104.         send_char(bai);
  105.         send_char(shi);
  106.         send_char('.');
  107.         send_char(ge);
  108.         //delay_us(200);
  109.         send_char(bai1);
  110.         send_char(shi1);
  111.         send_char('.');
  112.         send_char(ge1);
  113. }

  114. //延時
  115. void delay_us(unsigned int i)
  116. {
  117.         while(i--);
  118. }

  119. // 延時子程序
  120. void delayms(unsigned char ms)
  121. {      
  122.         unsigned char i;
  123.         while(ms--)
  124.         {
  125.                 for(i = 0; i < 255; i++);
  126.         }
  127. }
復(fù)制代碼

藍(lán)牙,電腦端進(jìn)行實時顯示

全部資料51hei下載地址:
溫濕度.zip (33.98 KB, 下載次數(shù): 121)


評分

參與人數(shù) 1黑幣 +3 收起 理由
jackect + 3 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久在线| 先锋av资源在线 | 欧美精品一区在线 | 免费a级毛片在线播放 | 日韩中文字幕在线观看视频 | 9久久精品| 国产一二区视频 | 日日夜夜免费精品视频 | 免费一看一级毛片 | 成人国产网站 | 国产在线视频在线观看 | 伊人亚洲 | 精品一区二区三区入口 | 亚洲一区二区三区在线免费 | 亚洲成人av在线 | av网站免费观看 | 久久精品亚洲精品 | 久久久精品一区二区三区 | 国产精品亚洲二区 | 亚洲一二三区免费 | 在线观看中文字幕一区二区 | 99精品免费 | 国产一区免费 | 国产性网 | 午夜一区二区三区在线观看 | 亚洲一区二区三区高清 | 亚洲精品一级 | av影片在线 | 国产日韩精品视频 | 免费黄色录像片 | 久久er99热精品一区二区 | 黄色小视频入口 | 一区二区三区免费 | 亚洲成人三区 | 91精品久久久久久久久中文字幕 | 国产一区二区三区在线 | 国产一区二区三区精品久久久 | 精品无码久久久久国产 | 一区二区三区四区在线 | 一区二区三区不卡视频 | 黄网站涩免费蜜桃网站 |