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

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

QQ登錄

只需一步,快速開始

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

基于SHT11溫濕度傳感器的溫濕度控制(含代碼,原理圖)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
我給大家整理了一系列的SHT11單片機(jī)測(cè)量的實(shí)例(包含論文 與完整的源碼等,本人已經(jīng)測(cè)試成功)
SHT11溫濕度傳感器外觀圖:


SHT11溫濕度傳感器原理圖:

可以用ad來打開工程文件,里面的庫都包含了.




在51hei附件中都可以下載
SHT11單片機(jī)源代碼:
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #include <math.h>

  4. #define        uchar unsigned char
  5. #define uint unsigned int

  6. sbit dat=P1^0;   //串行數(shù)據(jù)
  7. sbit clk0=P1^1;   //串行時(shí)鐘
  8. sbit lat=P1^2;

  9. sbit key1=P0^0;
  10. sbit key2=P0^1;
  11. sbit key3=P0^2;

  12. sbit led1=P0^6;
  13. sbit led2=P0^7;

  14. sbit  gw=P1^3;   //個(gè)位
  15. sbit  sw=P1^4;    //十位
  16. sbit  bw=P3^3;    //百位
  17. sbit  qw=P3^4;

  18. sbit pl=P3^6;         //165鎖存
  19. sbit clk1=P3^7;        //165時(shí)鐘
  20. sbit Do=P3^5;

  21. sbit DQ=P3^1;
  22. code uchar  tab[16]={  
  23.                 0x3F,  
  24.                                 0x06,
  25.                                 0x5B,
  26.                                 0x4F,   
  27.                                   0x66,
  28.                                 0x6D,
  29.                                 0x7D,
  30.                                 0x07,   
  31.                                   0x7F,
  32.                                 0x6F,  
  33.                 0x39,  //"C"
  34.                 0x79,  //"E"
  35.                 0x76,  //"H"
  36.                 0x38,  //"L"
  37.                 0x40  //"-"
  38. };
  39. uchar k1,k2,k3;
  40. uint t;
  41. uchar disbuf[4];
  42. uint wendu_h=456,wendu_l=288;

  43. ///eeprom address
  44. sfr wdtcontr=0xe1;
  45. sfr ispdata=0xe2;
  46. sfr ispaddrh=0xe3;
  47. sfr ispaddrl=0xe4;
  48. sfr ispcmd=0xe5;
  49. sfr isptrig=0xe6;
  50. sfr ispcontr=0xe7;
  51. ////////////////////////
  52. iapdisable()
  53. {
  54.         ispcontr=0;ispcmd=0;isptrig=0;
  55. }
  56. erase(uint addr)
  57. {
  58.         ispcontr=0x83;ispcmd=0x03;
  59.         ispaddrh=addr/256;ispaddrl=addr%256;
  60.         EA=0;isptrig=0x46;isptrig=0xb9;_nop_();EA=1;
  61.         iapdisable();
  62. }
  63. uchar readbyte(uint addr)
  64. {
  65.         uchar ch;
  66.         ispcontr=0x83;ispcmd=0x01;ispaddrh=addr/256;ispaddrl=addr%256;
  67.         isptrig=0x46;isptrig=0xb9;_nop_();ch=ispdata;
  68.         iapdisable();
  69.         return ch;
  70. }
  71. void writebyte(uint addr,uchar ch)
  72. {
  73.         ispcontr=0x83;ispcmd=0x02;
  74.         ispaddrh=addr/256;ispaddrl=addr%256;
  75.         ispdata=ch;
  76.         isptrig=0x46;isptrig=0xb9;_nop_();
  77.         iapdisable();
  78. }
  79. savedata()
  80. {
  81.         uint addr=0x2000;
  82.         erase(addr);
  83.         writebyte(addr,123);
  84.         addr++;writebyte(addr,wendu_h);
  85.         addr++;writebyte(addr,wendu_l);
  86. }
  87. void getdata(void)
  88. {
  89.         uchar label=0;
  90.         uint addr=0x2000;
  91.         label=readbyte(addr);
  92.         if(label==123)
  93.         {
  94.          addr++;wendu_h=readbyte(addr);
  95.          addr++;wendu_l=readbyte(addr);
  96.          }
  97.         else
  98.                 savedata();
  99. }

  100. ReadDat()
  101. {
  102. unsigned char i,t;
  103. clk1=0;
  104. pl=0;
  105. pl=1;      
  106. for(i=0;i<8;i++)
  107.   {
  108.    t<<=1;       //165在PL有一個(gè)脈沖后就輸出0位數(shù)據(jù)
  109.    t|=(bit)Do;
  110.    clk1=1;   // 鎖存時(shí)鐘=1時(shí)74HC165才允許讀數(shù)據(jù)
  111.    clk1=0;
  112.   }
  113. P0=t;
  114. }
  115. dsout(unsigned char j)
  116. {
  117. unsigned char i;
  118. for(i=0;i<8;i++)
  119.     {
  120.      dat=j&0x80;       //高位在前
  121.      clk0=1;
  122.      clk0=0;
  123.      j<<=1;
  124.     }
  125.   lat=1;
  126.   lat=0;               //鎖存
  127. }
  128. void delay(uint z)
  129. {
  130.         uint x;
  131.         for(x=z;x>0;x--);
  132. }
  133. ds1ms()
  134. {
  135. unsigned int d;
  136. for(d=0;d<250;d++); //大約1ms@12M
  137. }
  138. //------送出循環(huán)-------------------------

  139. //----74HC595顯示程序--------------------
  140. display(unsigned char sjqw,sjbw,sjsw,sjgw)
  141. {

  142.   dsout(tab[sjgw]);gw=0;ds1ms();gw=1;        //查表得到數(shù)據(jù)段碼送顯示
  143.   dsout(tab[sjsw]);sw=0;ds1ms();sw=1;
  144.   dsout(tab[sjbw]);bw=0;ds1ms();bw=1;
  145.   dsout(tab[sjqw]);qw=0;ds1ms();qw=1;
  146.   
  147. }
  148. Init_DS18B20(void)
  149. {
  150.          unsigned char x=0;
  151.          DQ = 1;    //DQ復(fù)位
  152.          delay(12);  //稍做延時(shí)
  153.          DQ = 0;    //單片機(jī)將DQ拉低
  154.          delay(150); //精確延時(shí) 大于 480us
  155.          DQ = 1;    //拉高總線
  156.          delay(60);
  157.          x=DQ;      //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗
  158.          delay(30);
  159. }
  160. //讀一個(gè)字節(jié)
  161. uchar ReadOneChar(void)
  162. {
  163.         unsigned char i=0;
  164.         unsigned char dat = 0;
  165.         for (i=8;i>0;i--)
  166.          {
  167.                   DQ = 0; // 給脈沖信號(hào)
  168.                   dat>>=1;
  169.                   _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  170.                   DQ = 1; // 給脈沖信號(hào)
  171.                   _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  172.                   if(DQ)
  173.                   dat|=0x80;
  174.                   delay(12);
  175.          }
  176.          return(dat);
  177. }
  178. //寫一個(gè)字節(jié)
  179. WriteOneChar(unsigned char dat)
  180. {
  181.          unsigned char i=0;
  182.          for (i=8; i>0; i--)
  183.          {
  184.                   DQ = 0;
  185.                   _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  186.                   DQ = dat&0x01;
  187.                   delay(8);
  188.                   DQ = 1;
  189.                   dat>>=1;
  190.                   _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  191.          }
  192. }
  193. adt(uchar x)
  194. {
  195.         Init_DS18B20();
  196.         WriteOneChar(0xCC); // 跳過讀序號(hào)列號(hào)的操作
  197.         WriteOneChar(x); // 啟動(dòng)溫度轉(zhuǎn)換
  198.         _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  199.         _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  200. }
  201. //讀取溫度
  202. unsigned char a=0;
  203. unsigned char b=0;
  204. zhuand()
  205. {        
  206.         disbuf[0]=0;                    
  207.         disbuf[1]=t/100;
  208.         disbuf[2]=(t%100)/10;
  209.         disbuf[3]=t%10;

  210. }
  211. void zhuan()         //溫度轉(zhuǎn)換將單片機(jī)里二進(jìn)制溫度轉(zhuǎn)換成十進(jìn)制
  212. {
  213.         uint tt=0;
  214.          t=b;//將溫度高八位傳入t
  215.         t<<=8;
  216.         t=t|a;//將溫度低八位傳入t
  217.         if (b>0x07)
  218.         {
  219.                 t=~t;tt=((t+1)*5)/8;t= tt; //放大10倍輸出并四舍五入
  220.                 if(t>=99) t=99;
  221.                 zhuand();
  222.                 disbuf[0]=14;
  223.                
  224.         }
  225.         else{
  226.                     tt=t;tt=(t*5)/8;t= tt; //放大10倍輸出并四舍五入
  227.                         if(t>=999) t=999;
  228.                         if(t>=wendu_h) led1=0;
  229.                         if(t<=wendu_l) led2=0;
  230.                         zhuand();
  231.                 }
  232. }
  233. scankey1()
  234. {        
  235.         ReadDat();
  236.         if(key1==0)
  237.         {        
  238.                 delay(5);
  239.                 if(key1==0)
  240.            {
  241.                     k1++;
  242.           while(!key1)
  243.              {        
  244.                      ReadDat();
  245.                 }
  246.                 }
  247.         }
  248. }
  249. adjust()
  250. {        scankey1();
  251.         while(k1!=0)
  252.          { if(k1==1)
  253.        {
  254.                     ReadDat();
  255.                  if(key2==0)
  256.                   {        
  257.                         delay(5);
  258.                         if(key2==0)
  259.                         {         
  260.                             wendu_h++;
  261.                             if(wendu_h>=999) wendu_h=999;
  262.                                 savedata();
  263.                            while(!key2)
  264.                          {        
  265.                                  ReadDat();
  266.                         }
  267.                         }
  268.                   }
  269.                   if(key3==0)
  270.                   {        
  271.                         delay(5);
  272.                         if(key3==0)
  273.                         {         
  274.                             wendu_h--;
  275.                            if(wendu_h<=0) wendu_h=0;
  276.                            savedata();
  277.                            while(!key3)
  278.                          {        
  279.                                  ReadDat();
  280.                         }
  281.                         }
  282.                   }
  283.                 getdata();
  284.                 t=wendu_h;
  285.         zhuand();
  286.                 disbuf[0]=12;
  287.                 …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼



下載:
溫控.zip (2.11 MB, 下載次數(shù): 378)
SHT11.pdf (840.7 KB, 下載次數(shù): 134)
200903121236838905.doc (42.5 KB, 下載次數(shù): 102)
2007sht1.pdf (621.83 KB, 下載次數(shù): 101)


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

使用道具 舉報(bào)

沙發(fā)
ID:145935 發(fā)表于 2017-4-22 22:38 | 只看該作者
收藏了,慢慢學(xué)習(xí)。謝謝分享!
回復(fù)

使用道具 舉報(bào)

板凳
ID:195201 發(fā)表于 2017-5-1 11:25 | 只看該作者
慢慢學(xué)習(xí)。謝謝分享!
回復(fù)

使用道具 舉報(bào)

地板
ID:197968 發(fā)表于 2017-5-8 02:34 | 只看該作者
收藏,學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

5#
ID:213117 發(fā)表于 2017-10-29 21:11 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

6#
ID:253071 發(fā)表于 2017-11-26 16:40 | 只看該作者
樓主有沒有SHT11的封裝啊
回復(fù)

使用道具 舉報(bào)

7#
ID:274537 發(fā)表于 2018-1-10 21:21 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

8#
ID:274537 發(fā)表于 2018-1-10 21:25 | 只看該作者
能留個(gè)聯(lián)系方式嘛  有些問題想請(qǐng)教
回復(fù)

使用道具 舉報(bào)

9#
ID:275216 發(fā)表于 2018-1-23 10:30 | 只看該作者
我的積分竟然連一個(gè)都下載不了
回復(fù)

使用道具 舉報(bào)

10#
ID:225105 發(fā)表于 2018-2-11 09:07 | 只看該作者

慢慢學(xué)習(xí)。謝謝分享!
回復(fù)

使用道具 舉報(bào)

11#
ID:290391 發(fā)表于 2018-3-11 14:46 | 只看該作者
先收藏了,積分夠了在下載
回復(fù)

使用道具 舉報(bào)

12#
ID:297807 發(fā)表于 2018-3-27 16:00 | 只看該作者
謝謝分享,很有用,慢慢學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

13#
ID:292004 發(fā)表于 2018-4-13 20:17 | 只看該作者
黑幣扣了不能下載
回復(fù)

使用道具 舉報(bào)

14#
ID:305905 發(fā)表于 2018-4-21 22:26 | 只看該作者
下載了~學(xué)習(xí)一下~
回復(fù)

使用道具 舉報(bào)

15#
ID:310987 發(fā)表于 2018-4-24 15:54 | 只看該作者
這個(gè)程序能不能控制呢
回復(fù)

使用道具 舉報(bào)

16#
ID:323482 發(fā)表于 2018-5-6 15:32 | 只看該作者
哇,新手黑幣不夠……
回復(fù)

使用道具 舉報(bào)

17#
ID:303333 發(fā)表于 2018-5-6 20:08 | 只看該作者
為什么浪費(fèi)了我這么多金幣還是下載不下來。
回復(fù)

使用道具 舉報(bào)

18#
ID:284755 發(fā)表于 2018-5-21 17:35 | 只看該作者
控制模塊4組需要220V電壓,是電機(jī)與照明嗎
回復(fù)

使用道具 舉報(bào)

19#
ID:458348 發(fā)表于 2019-1-23 18:05 | 只看該作者
怎么沒看到附件呀!剩下的程序怎么辦?
回復(fù)

使用道具 舉報(bào)

20#
ID:291815 發(fā)表于 2019-5-31 19:29 | 只看該作者
學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

21#
ID:327625 發(fā)表于 2020-5-16 20:28 | 只看該作者
下載后怎么沒有找見程序呢
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 男女在线免费观看 | 香蕉视频在线播放 | 激情欧美一区二区三区 | 精精国产xxxx视频在线播放7 | 国外成人免费视频 | 成人av片在线观看 | 免费视频二区 | 91激情电影 | 毛片一区二区三区 | 91色视频在线观看 | 国产精品99久久久久久动医院 | 婷婷色婷婷 | 久久综合香蕉 | 人人看人人爽 | 在线国产中文字幕 | 日韩黄| 国产一区二区视频在线观看 | www.婷婷亚洲基地 | 国产精品日韩欧美一区二区 | 99久久精品免费 | av免费网站在线 | 亚洲网站在线观看 | 亚洲精品免费看 | 久久综合99 | 久久躁日日躁aaaaxxxx | 日韩在线免费视频 | 麻豆久久久 | 古典武侠第一页久久777 | 日屁网站| 中文字幕国产第一页 | 99国产视频 | www.成人.com | 天天操天天射综合网 | 亚洲精品久久 | 黑人巨大精品欧美一区二区一视频 | 一区二区三区免费 | 国产aaaaav久久久一区二区 | 美女久久 | 久草网站 | 国产精品一区二区在线免费观看 | 殴美成人在线视频 |