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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6872|回復: 7
收起左側

基于DS18B20溫感和單片機 實現熱水器功能

  [復制鏈接]
ID:202986 發表于 2018-1-31 16:55 | 顯示全部樓層 |閱讀模式
       這個溫度計使用的單片機是STC89C2051,測量范圍-55到+125度,顯示精度為0.1度,DS18B20數據腳P0.4 ,采用器件默認的12位轉化,顯示采用4位LED共陽顯示測溫值,P2口為段碼輸入,P0~P3為位選,繼電器接P1.1,蜂鳴器接P1.0,由于時間的關系,我就沒有接繼電器和蜂鳴器,用兩個LED燈來代替,效果也是一樣的。引腳也可以自己定義,下面是制作好實物圖,由于我用杜邦線沒有焊接,因為這樣還可以玩其他小作品,請見諒,電路原理比較簡單,這里就不給出,百度上一大推。        我程序設置的是  低于 等于 12° 的時候  繼電器打開  開始加熱功能   高于等于 13° 的時候 關閉繼電器    蜂鳴器 響起 。      
請看視頻。


制作出來的實物圖:
P80131-163858.jpg

單片機源程序如下:
  1. /**************************************************************************************
  2. *                              DS18B20溫度傳感器實驗                                                                                                  *
  3. 實現現象:        具體接線操作請看視頻。
  4.                         下載程序后,在溫度傳感器接口處,按照絲印方向插好溫度傳感器,數碼管就會顯示
  5.                         檢測的溫度值,
  6. 注意事項:                                                                                                                                                                  
  7. ***************************************************************************************/

  8. #include "reg52.h"                         //此文件中定義了單片機的一些特殊功能寄存器
  9. #include"temp.h"       

  10. typedef unsigned int u16;          //對數據類型進行聲明定義
  11. typedef unsigned char u8;

  12. sbit LSA=P0^0;
  13. sbit LSB=P0^1;
  14. sbit LSC=P0^2;
  15. sbit LSD=P0^3;

  16. sbit led=P1^0;
  17. sbit led1=P1^1;
  18. long zhi=0;
  19. char num=0;
  20. u8 DisplayData[4];
  21. u8 code smgduan[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

  22. /*******************************************************************************
  23. * 函 數 名         : delay
  24. * 函數功能                   : 延時函數,i=1時,大約延時10us
  25. *******************************************************************************/
  26. void delay(u16 i)
  27. {
  28.         while(i--);       
  29. }


  30. /*******************************************************************************
  31. * 函 數 名         : datapros()
  32. * 函數功能                   : 溫度讀取處理轉換函數
  33. * 輸    入         : temp
  34. * 輸    出         : 無
  35. *******************************************************************************/

  36. void datapros(int temp)          
  37. {
  38.            float tp;  
  39.         if(temp< 0)                                //當溫度值為負數
  40.           {
  41.                 DisplayData[0] = 0xBF;           //   -
  42.                 //因為讀取的溫度是實際溫度的補碼,所以減1,再取反求出原碼
  43.                 temp=temp-1;
  44.                 temp=~temp;
  45.                 tp=temp;
  46.                 temp=tp*0.0625*100+0.5;       
  47.                 //留兩個小數點就*100,+0.5是四舍五入,因為C語言浮點數轉換為整型的時候把小數點
  48.                 //后面的數自動去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進1了,小于0.5的就
  49.                 //算加上0.5,還是在小數點后面。
  50.     zhi=temp;
  51.           }
  52.         else
  53.           {                       
  54.                 DisplayData[0] = 0xff;
  55.                 tp=temp;//因為數據處理有小數點所以將溫度賦給一個浮點型變量
  56.                 //如果溫度是正的那么,那么正數的原碼就是補碼它本身
  57.                 temp=tp*0.0625*100+0.5;       
  58.                 //留兩個小數點就*100,+0.5是四舍五入,因為C語言浮點數轉換為整型的時候把小數點
  59.                 //后面的數自動去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進1了,小于0.5的就
  60.                 //算加上0.5,還是在小數點后面。
  61.           zhi=temp;
  62.                 }

  63.         DisplayData[1] = smgduan[temp % 10000 / 1000];
  64.         DisplayData[2] = smgduan[temp % 1000 / 100] & 0x7F;
  65.         DisplayData[3] = smgduan[temp % 100 / 10];

  66. }


  67. /*******************************************************************************
  68. * 函數名         :DigDisplay()
  69. * 函數功能                 :數碼管顯示函數
  70. * 輸入           : 無
  71. * 輸出                  : 無
  72. *******************************************************************************/
  73. void DigDisplay()
  74. {
  75.         u8 i=0;
  76.         for(i=0;i<4;i++)
  77.         {
  78.         switch(i)         //位選,選擇點亮的數碼管,
  79.                 {
  80.                         case(0):
  81.                                 LSA=0;LSD=1;P2=DisplayData[i];delay(100); break;//顯示第0位
  82.                         case(1):
  83.                                 LSA=1;LSB=0;P2=DisplayData[i];delay(100); break;//顯示第1位
  84.                         case(2):
  85.                                 LSB=1;LSC=0;P2=DisplayData[i];delay(100); break;//顯示第2位
  86.                         case(3):
  87.                                 LSC=1;LSD=0;P2=DisplayData[i];delay(100);break;//顯示第3位
  88.                          }
  89.                 P2=0xff;
  90.                  }
  91.                 }               
  92. /*******************************************************************************
  93. * 函 數 名       : main
  94. * 函數功能                 : 主函數
  95. * 輸    入       : 無
  96. * 輸    出             : 無
  97. *******************************************************************************/
  98. void main()
  99. {       
  100.         led=1;
  101.         led1=1;
  102.         LSA=1;
  103.         LSB=1;
  104.         LSD=1;
  105.         LSC=1;
  106.         while(1)
  107.         {
  108.                 datapros(Ds18b20ReadTemp());         //數據處理函數
  109. ……………………

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

所有資料51hei提供下載:
手冊及課件.rar (1.21 MB, 下載次數: 72)
溫度 -.rar (49.77 KB, 下載次數: 92)






評分

參與人數 2黑幣 +108 收起 理由
深藍遠景 + 8 共享資料的黑幣獎勵!
admin + 100 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:294530 發表于 2018-4-10 15:07 | 顯示全部樓層
小白黑幣不夠,樓主可以給我發郵件嗎嗎?994121863@qq.com
謝謝了
回復

使用道具 舉報

ID:314339 發表于 2018-4-24 08:58 來自手機 | 顯示全部樓層
感謝樓主分享
回復

使用道具 舉報

ID:229821 發表于 2019-3-26 21:08 | 顯示全部樓層
謝謝樓主的分享。剛好這幾天在研究這個。弄了幾天都沒有弄出來。。。。
回復

使用道具 舉報

ID:428407 發表于 2019-3-27 19:30 | 顯示全部樓層
感謝樓主分享,真的不錯
回復

使用道具 舉報

ID:848824 發表于 2021-1-11 23:17 | 顯示全部樓層
顯示屏怎么連接啊,沒圖啊。
回復

使用道具 舉報

ID:336670 發表于 2022-2-13 20:48 | 顯示全部樓層
樓主,看你實物連接沒用138譯碼器,但是你程序上感覺有用到呢
回復

使用道具 舉報

ID:81441 發表于 2023-4-5 08:26 | 顯示全部樓層
請問單片機STC89C2051是型號嗎?還是STC89C52?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产亚洲一级 | 国产成在线观看免费视频 | 天天看天天爽 | 久草视频2 | 日韩欧美一区二区三区免费观看 | 亚洲毛片| 伊人超碰 | 国产成人免费在线 | 中文在线a在线 | 亚洲人成人一区二区在线观看 | 成人午夜电影网 | 中文字幕av免费 | 国产精品亚洲一区二区三区在线 | 99久久精品国产麻豆演员表 | 99精品观看 | 亚洲精品美女在线观看 | 亚洲欧美一区二区三区国产精品 | 久久不射电影网 | 免费久久精品 | 精品一区久久 | 国产精品1区2区3区 一区中文字幕 | 欧美电影大全 | 91在线网站 | 精品视频一区二区 | 久久精品国产a三级三级三级 | 亚洲精品一区二区三区在线 | 国产一区二区免费 | 日韩最新网站 | 国产免费a视频 | 天天躁天天操 | 999精品网 | 超黄毛片 | 五月激情综合 | 国产精品一区二区视频 | 视频羞羞 | 日屁网站 | 国产高清免费视频 | 亚洲成人一区二区在线 | 亚洲iv一区二区三区 | 亚洲国产成人av好男人在线观看 | 日本一道本视频 |