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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

SHT11溫濕度傳感器的單片機驅動程序 有成品圖

[復制鏈接]
跳轉到指定樓層
樓主
SHT11是一個一體化的溫濕度傳感器.
下圖是SHT11溫度測量的結果:



下圖是SHT11濕度測量的結果:


SHT11測溫度的程序:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #include<math.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. sbit led1=P1^7;
  7. sbit led2=P1^6;
  8. sbit DATA=P1^1;
  9. sbit SCK=P1^0;
  10. #define noACK 0
  11. #define ACK 1 //adr command r/w
  12. #define STATUS_REG_W 0x06 //0000 0110
  13. #define STATUS_REG_R 0x07 //0000 0111
  14. #define MEASURE_TEMP 0x03 //0000 0011
  15. #define MEASURE_HUMI 0x05 //0000 0101
  16. #define RESET 0x1e        //0001 1110
  17. sbit dula=P2^6;
  18. sbit wela=P2^7;
  19. uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  20. uchar code table_dian[]={ 0xbf,0x86,0xdb,0xcf, 0xe6,0xed,0xfd,0x87, 0xff,0xef,0xf7,0xfc,0xb9,0xd1,0xf9,0xf1};
  21. uchar error=0;

  22. void delayms(uint z)
  23. {
  24.         uint i,j;
  25.         for(i=z;i>0;i--)
  26.         for( j=110;j>0;j--);
  27. }

  28. //啟動時序
  29. void transstart()
  30. {
  31.         SCK=1;
  32.         _nop_();
  33.         DATA=0;
  34.         _nop_();
  35.         SCK=0;
  36.         _nop_();
  37.         _nop_();
  38.         _nop_();
  39.         SCK=1;
  40.         _nop_();
  41.         DATA=1;
  42.         _nop_();
  43.         SCK=0;
  44. }

  45. //寫入命令子函數
  46. uchar write_byte(uchar value)
  47. {
  48.         uchar i;
  49.         for(i=0x80;i>0;i=i/2)
  50.         {
  51.                 if(i&value) DATA=1;
  52.                 else DATA=0;
  53.                 SCK=1;
  54.                 _nop_();
  55.                 _nop_();
  56.                 _nop_();
  57.                 SCK=0;
  58.         }
  59.         DATA=1;
  60.         SCK=1;
  61.         error=DATA;
  62.         SCK=0;
  63.         return error;
  64. }

  65. //從傳感器讀數據
  66. uchar read_byte(bit ack)
  67. {
  68.         uchar i,val=0;
  69.         DATA=1;
  70.         for(i=0x80;i>0;i=i/2)
  71.         {
  72.                 SCK=1;
  73.                 if(DATA) val=val|i;
  74.                 SCK=0;
  75.         }
  76.         DATA=!ack;
  77.         SCK=1;
  78.         _nop_();
  79.         _nop_();
  80.         _nop_();
  81.         SCK=0;
  82.         DATA=1;
  83.         return val;
  84. }

  85. //
  86. void connectionreset()
  87. {
  88.         uchar i;
  89.         DATA=1;
  90.         SCK=0;
  91.         for(i=0;i<9;i++)
  92.         {
  93.                 SCK=1;
  94.                 SCK=0;
  95.         }
  96.         transstart();
  97. }

  98. //測量函數,溫度和濕度
  99. uint measure()
  100. {
  101.         uchar value_1,value_2;
  102.         uint tempvalue;
  103.         transstart();
  104.         error+=write_byte(MEASURE_TEMP);
  105.         if(error!=0) connectionreset();
  106.         else
  107.         {
  108.                 while(DATA==1)
  109.                 _nop_();
  110.                 if(DATA==0)
  111.                 {
  112.                         value_1=read_byte(ACK);
  113.                         value_2=read_byte(noACK);
  114.                         tempvalue=value_2+value_1*256;
  115.                 }
  116.                 //轉換成 16 位的 int 型
  117.                 else error=1;
  118.         }
  119.         return tempvalue;
  120. }

  121. //數碼管顯示函數
  122. void display(float dis_value)
  123. {
  124.         float value;
  125.         int qian,bai,shi,ge;
  126.         value=dis_value*100;
  127.         qian=(int)value/1000;
  128.         bai=(int)value%1000/100;
  129.         shi=(int)value%100/10;
  130.         ge=(int)value%10;
  131.        
  132.         dula=1;
  133.         P0=table[qian];
  134.         dula=0;
  135.         P0=0xff;
  136.         wela=1;
  137.         P0=0xfe;
  138.         wela=0;
  139.         delayms(3);

  140.         dula=1;
  141.         P0=table_dian[bai];
  142.         dula=0;
  143.         P0=0xff;
  144.         wela=1;
  145.         P0=0xfd;
  146.         wela=0;
  147.         delayms(3);

  148.         dula=1;
  149.         P0=table[shi];
  150.         dula=0;
  151.         P0=0xff;
  152.         wela=1;
  153.         P0=0xfb;
  154.         wela=0;
  155.         delayms(3);

  156.         dula=1;
  157.         P0=table[ge];
  158.         dula=0;
  159.         P0=0xff;
  160.         wela=1;
  161.         P0=0xf7;
  162.         wela=0;
  163.         delayms(3);

  164.         wela=1;
  165.         P0=0xff;
  166.         wela=0;
  167. }

  168. //計算溫度值子函數
  169. float calc_temp(uint tempvalue)
  170. {
  171.         uchar i;
  172.         const float d1=-39.9;
  173.         const float d2=+0.01;
  174.         float temp_final;
  175.         tempvalue=tempvalue&0x3fff; //取出低 14 位
  176.         temp_final=d1+d2*((float)tempvalue);
  177.         for(i=100;i>0;i--)
  178.                 display(temp_final);
  179.         return temp_final;
  180. }

  181. //主函數
  182. void main()
  183. {
  184.         float dis_tempvalue;
  185.         uint tempvalue;
  186.         while(1)
  187.         {
  188.                 connectionreset();
  189.                 error=0;
  190.                 tempvalue=measure();
  191.                 if(error==0)
  192.                 {
  193.                         led1=0;
  194.                         delayms(200);
  195.                         led1=1;
  196.                         delayms(200);
  197.                         dis_tempvalue=calc_temp(tempvalue);
  198.                 }
  199.                 else
  200.                 {
  201.                         continue;
  202.                 }
  203.         }
  204. }
復制代碼





下載:
測濕度.rar (21.71 KB, 下載次數: 52)

測溫度.rar (20.34 KB, 下載次數: 29)

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

相關帖子

回復

使用道具 舉報

沙發
ID:168456 發表于 2017-3-6 09:30 | 只看該作者
我這邊有飛思卡爾的,有人用嗎
回復

使用道具 舉報

板凳
ID:151348 發表于 2017-3-6 15:44 | 只看該作者
綻放吧... 發表于 2017-3-6 09:30
我這邊有飛思卡爾的,有人用嗎

飛思卡爾的溫濕度傳感器?
回復

使用道具 舉報

地板
ID:312978 發表于 2019-7-24 15:54 | 只看該作者
謝謝!分享!
回復

使用道具 舉報

5#
ID:312978 發表于 2019-7-25 14:52 | 只看該作者
溫濕度傳感器?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 九九av | 亚洲欧洲在线观看视频 | 午夜精品福利视频 | 在线观看中文字幕 | 伊伊综合网 | 久久国产欧美日韩精品 | 男女精品久久 | 亚洲成人久久久 | 在线免费av观看 | 国产高清免费视频 | 国产精品久久久久久久三级 | 欧美一区二区成人 | 国产精品揄拍一区二区久久国内亚洲精 | 欧美日韩一区精品 | 成人精品一区 | 久久久久se | 欧美一区二区网站 | 91精品国产91久久久久久 | 国产一区二区三区四区区 | 91精品久久久久久久久久入口 | 精品日韩 | 在线观看中文字幕 | 四虎影院新网址 | 国产成人精品免费视频大全最热 | 亚洲美女视频 | 亚洲天堂精品一区 | 精品蜜桃一区二区三区 | 日韩欧美在线观看视频 | 日韩中文字幕免费在线观看 | av网站在线播放 | 欧美综合一区 | 亚洲成人av | 91精品国产一区 | 自拍偷拍中文字幕 | 欧美一区不卡 | 狠狠干五月天 | 不卡一区 | 精品二区 | 国产精品永久久久久 | av黄在线观看 | 美女久久久久久久久 |