標(biāo)題: 溫度報(bào)警器制作,附51單片機(jī)程序 仿真原理圖等資料 [打印本頁(yè)]

作者: XXXZZZ    時(shí)間: 2017-8-6 14:54
標(biāo)題: 溫度報(bào)警器制作,附51單片機(jī)程序 仿真原理圖等資料
利用DS18B20溫度傳感器,檢測(cè)到外界的溫度,通過(guò)數(shù)碼管顯示出來(lái),同時(shí)還可以設(shè)置最高值和最低值,當(dāng)溫度超過(guò)此范圍,蜂鳴器報(bào)警。

實(shí)物圖:


背面:


Altium Designer畫(huà)的原理圖和PCB圖如下:(51hei附件中可下載工程文件)



仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


數(shù)字溫度報(bào)警器說(shuō)明書(shū)

一、    概述:
主要實(shí)現(xiàn):實(shí)時(shí)溫度測(cè)量及顯示,超出溫度范圍聲光報(bào)警,上下限溫度可通過(guò)按鍵設(shè)定等功能。
本數(shù)字溫度報(bào)警器是基于51單片機(jī)及溫度傳感器DS18B20來(lái)設(shè)計(jì)的,溫度測(cè)量范圍0到99.9攝氏度,精度為0.1攝氏度,可見(jiàn)測(cè)量溫度的范圍廣,精度高的特點(diǎn)。可設(shè)置上下限報(bào)警溫度,默認(rèn)上限報(bào)警溫度為38℃、默認(rèn)下限報(bào)警溫度為5℃(通過(guò)程序可以更改上下限值)。報(bào)警值可設(shè)置范圍:最低上限報(bào)警值等于當(dāng)前下限報(bào)警值,最高下限報(bào)警值等于當(dāng)前上限報(bào)警值。將下限報(bào)警值調(diào)為0時(shí)為關(guān)閉下限報(bào)警功能。

二、    使用說(shuō)明:
1、    開(kāi)機(jī):打開(kāi)電源,機(jī)器進(jìn)入初始化狀態(tài),此時(shí)數(shù)碼管顯示 - - - -;片刻即開(kāi)始顯示當(dāng)前溫度。
2、    查看當(dāng)前上下限溫度范圍:按下【S1】鍵(左邊鍵),數(shù)碼管閃爍顯示Hxxx,H表示上限溫度,再次按下【S1】鍵,數(shù)碼管閃爍顯示Lxxx, L表示下限溫度。再按【S1】鍵時(shí)退出設(shè)置,數(shù)碼管顯示當(dāng)前實(shí)時(shí)溫度。
3、    重新設(shè)定上下限溫度范圍:按下【S1】鍵一次,數(shù)碼管閃爍顯示Hxxx時(shí),此時(shí)是設(shè)定上限溫度,按【S3】鍵加溫度,【S2】鍵減溫度。再按下【S1】鍵一次,此時(shí)是設(shè)定下限溫度,數(shù)碼管閃爍顯示Lxxx時(shí),按【S3】鍵加溫度,【S2】鍵減溫度。再按下【S1】鍵一次,設(shè)置成功并退出設(shè)置。
4、    報(bào)警:當(dāng)檢測(cè)到當(dāng)前實(shí)時(shí)溫度高于上限溫度值,或者低于下限溫度值,系統(tǒng)會(huì)自動(dòng)發(fā)出報(bào)警,報(bào)警為紅燈一直閃爍且蜂鳴器隨著燈的頻率響。除非重設(shè)上下限溫度范圍,否則報(bào)警一直持續(xù)。

單片機(jī)源程序如下:
  1. #include <AT89X52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char           //宏定義
  4. #define SET  P3_1                            //定義調(diào)整鍵
  5. #define DEC  P3_2                            //定義減少鍵
  6. #define ADD  P3_3                            //定義增加鍵
  7. #define BEEP P3_6                            //定義蜂鳴器
  8. #define ALAM P1_2                                //定義燈光報(bào)警
  9. #define DQ   P3_7                             //定義DS18B20總線I/O        
  10. bit shanshuo_st;                            //閃爍間隔標(biāo)志
  11. bit beep_st;                                     //蜂鳴器間隔標(biāo)志
  12. sbit DIAN = P0^5;                        //小數(shù)點(diǎn)
  13. uchar x=0;                                      //計(jì)數(shù)器
  14. signed char m;                                     //溫度值全局變量
  15. uchar n;                                              //溫度值全局變量
  16. uchar set_st=0;                             //狀態(tài)標(biāo)志
  17. signed char shangxian=38;                  //上限報(bào)警溫度,默認(rèn)值為38
  18. signed char xiaxian=5;                   //下限報(bào)警溫度,默認(rèn)值為38
  19. //uchar code  LEDData[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
  20. uchar code  LEDData[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7,0xCF,0xDA,0x9B,0xDC,0x9B,0x8B};

  21. //============================================================================================
  22. //====================================DS18B20=================================================
  23. //============================================================================================
  24. /*****延時(shí)子程序*****/
  25. void Delay_DS18B20(int num)
  26. {
  27.   while(num--) ;
  28. }
  29. /*****初始化DS18B20*****/
  30. void Init_DS18B20(void)
  31. {
  32.   unsigned char x=0;
  33.   DQ = 1;         //DQ復(fù)位
  34.   Delay_DS18B20(8);    //稍做延時(shí)
  35.   DQ = 0;         //單片機(jī)將DQ拉低
  36.   Delay_DS18B20(80);   //精確延時(shí),大于480us
  37.   DQ = 1;         //拉高總線
  38.   Delay_DS18B20(14);
  39.   x = DQ;           //稍做延時(shí)后,如果x=0則初始化成功,x=1則初始化失敗
  40.   Delay_DS18B20(20);
  41. }
  42. /*****讀一個(gè)字節(jié)*****/
  43. unsigned char ReadOneChar(void)
  44. {
  45.   unsigned char i=0;
  46.   unsigned char dat = 0;
  47.   for (i=8;i>0;i--)
  48.   {
  49.     DQ = 0;     // 給脈沖信號(hào)
  50.     dat>>=1;
  51.     DQ = 1;     // 給脈沖信號(hào)
  52.     if(DQ)
  53.     dat|=0x80;
  54.     Delay_DS18B20(4);
  55.   }
  56.   return(dat);
  57. }
  58. /*****寫(xiě)一個(gè)字節(jié)*****/
  59. void WriteOneChar(unsigned char dat)
  60. {
  61.   unsigned char i=0;
  62.   for (i=8; i>0; i--)
  63.   {
  64.     DQ = 0;
  65.     DQ = dat&0x01;
  66.     Delay_DS18B20(5);
  67.     DQ = 1;
  68.     dat>>=1;
  69.   }
  70. }
  71. /*****讀取溫度*****/
  72. unsigned int ReadTemperature(void)
  73. {
  74.   unsigned char a=0;
  75.   unsigned char b=0;
  76.   unsigned int t=0;
  77.   float tt=0;
  78.   Init_DS18B20();
  79.   WriteOneChar(0xCC);  //跳過(guò)讀序號(hào)列號(hào)的操作
  80.   WriteOneChar(0x44);  //啟動(dòng)溫度轉(zhuǎn)換
  81.   Init_DS18B20();
  82.   WriteOneChar(0xCC);  //跳過(guò)讀序號(hào)列號(hào)的操作
  83.   WriteOneChar(0xBE);  //讀取溫度寄存器
  84.   a=ReadOneChar();     //讀低8位
  85.   b=ReadOneChar();    //讀高8位
  86.   t=b;                                   //高8位轉(zhuǎn)移到t
  87.   t<<=8;                           //t數(shù)據(jù)左移8位
  88.   t=t|a;                           //將t和a按位或,得到一個(gè)16位的數(shù)
  89.   tt=t*0.0625;                   //將t乘以0.0625得到實(shí)際溫度值(溫度傳感器設(shè)置12位精度,最小分辨率是0.0625)
  90.   t= tt*10+0.5;     //放大10倍(將小數(shù)點(diǎn)后一位顯示出來(lái))輸出并四舍五入
  91.   return(t);                   //返回溫度值

  92. ……………………

  93. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

Keil代碼與Proteus仿真文檔下載:
溫度傳感器.7z (1.09 MB, 下載次數(shù): 1196)

作者: 小223    時(shí)間: 2018-6-28 12:27
不錯(cuò)哦
作者: 1379310    時(shí)間: 2018-6-29 19:32
下載了自己打開(kāi)顯示器上也會(huì)出現(xiàn)51黑電子論壇的logo嗎?
作者: admin    時(shí)間: 2018-6-29 21:50
1379310 發(fā)表于 2018-6-29 19:32
下載了自己打開(kāi)顯示器上也會(huì)出現(xiàn)51黑電子論壇的logo嗎?

當(dāng)然不會(huì),那只是圖片上面的水印啊
作者: ak5689998    時(shí)間: 2018-6-30 18:52
樓主你好~  我用了proteus仿真打開(kāi)你的仿真的時(shí)候溫度報(bào)警氣沒(méi)到設(shè)置的上限的時(shí)候老是發(fā)出滴滴的聲音,是我的軟件有問(wèn)題嗎??   還是我什么東西沒(méi)有調(diào)試好。?  萌新求個(gè)助~~感謝大佬

作者: 1379310    時(shí)間: 2018-6-30 20:04
admin 發(fā)表于 2018-6-29 21:50
當(dāng)然不會(huì),那只是圖片上面的水印啊

謝謝你
作者: xsxs99    時(shí)間: 2018-7-5 18:12
樓主你好,想問(wèn)一下原理圖的封裝都是哪些呢?感謝!
作者: ntfs32    時(shí)間: 2018-9-6 22:43
感謝分享
作者: 滅雷決88    時(shí)間: 2018-9-14 16:34
我有個(gè)問(wèn)題!我在設(shè)計(jì)程序時(shí)候遇到和141錯(cuò)誤代碼!請(qǐng)各位幫我就這一個(gè)問(wèn)題我寫(xiě)得uint   temperature   出現(xiàn)141
作者: 滅雷決88    時(shí)間: 2018-9-14 16:41
xsxs99 發(fā)表于 2018-7-5 18:12
樓主你好,想問(wèn)一下原理圖的封裝都是哪些呢?感謝!

請(qǐng)問(wèn)你懂單片機(jī)編程不!我現(xiàn)在遇到個(gè)難題希望a幫我就這一問(wèn)題 uint  temperature結(jié)果出現(xiàn)了141錯(cuò)誤不曉得咋改!請(qǐng)幫我問(wèn)問(wèn)
作者: wukelili    時(shí)間: 2018-9-17 16:17
有用的
作者: 1216805172    時(shí)間: 2018-9-21 13:38
太棒了!
作者: fallingrain    時(shí)間: 2018-10-17 19:27
good,辛苦
作者: iousky    時(shí)間: 2018-10-22 15:48
感謝分享
作者: 13228199539    時(shí)間: 2018-10-25 16:11
感謝樓主分享,很有用,資料非常齊全,很棒。!
作者: 清酒夢(mèng)話123    時(shí)間: 2018-11-21 14:32
謝謝樓主分享
作者: xiean2002    時(shí)間: 2018-11-26 10:42
十分不錯(cuò),謝謝樓主分享
作者: 小霞子    時(shí)間: 2018-12-1 17:15
ak5689998 發(fā)表于 2018-6-30 18:52
樓主你好~  我用了proteus仿真打開(kāi)你的仿真的時(shí)候溫度報(bào)警氣沒(méi)到設(shè)置的上限的時(shí)候老是發(fā)出滴滴的聲音,是我 ...

你好,請(qǐng)問(wèn)能分享以下樓主的資料給我嗎,我的等級(jí)還不能看

作者: xiaozhiTZM    時(shí)間: 2018-12-13 13:55
學(xué)習(xí)學(xué)習(xí)下
作者: xiaozhiTZM    時(shí)間: 2018-12-13 13:55
學(xué)習(xí)了  很好的資料  謝謝樓主了
作者: newader    時(shí)間: 2018-12-16 14:41
謝謝樓主分享,贊一個(gè)
作者: 夢(mèng)影心辰    時(shí)間: 2018-12-16 21:19
非常感謝
作者: zhangchenghao    時(shí)間: 2019-2-21 10:12
很棒很給力
作者: zhangchenghao    時(shí)間: 2019-2-21 10:14
很棒很給力,牛逼
作者: 111··22@ddf    時(shí)間: 2019-2-27 15:29
有Word形式程序嗎
作者: Android大神    時(shí)間: 2019-5-21 16:24
感謝大神
作者: 1新手    時(shí)間: 2019-6-4 18:54
想問(wèn)一下樓主和各位,上面的dat<<=1的作用是什么呀,沒(méi)懂,麻煩各位解答一下

作者: zhao12345655    時(shí)間: 2019-6-24 09:39
很給力能發(fā)一下教程就更加完美
作者: ddh1998    時(shí)間: 2019-7-6 10:16
很棒棒的
作者: ddh1998    時(shí)間: 2019-7-6 12:28
ntfs32 發(fā)表于 2018-9-6 22:43
感謝分享

非常棒棒喲
作者: 周天飛    時(shí)間: 2019-7-14 16:13
很棒,蟹蟹樓主
作者: geyujiuban    時(shí)間: 2019-10-31 17:01
給力啊
作者: hanxuefeng    時(shí)間: 2019-11-3 15:40
想問(wèn)一下這里電阻是多大的
作者: hanxuefeng    時(shí)間: 2019-11-3 15:48
想問(wèn)一下樓主,這里面的電阻都有多大的,圖片看不清
還有原理圖封裝都是哪些
作者: 小仙帝    時(shí)間: 2019-11-20 18:06
請(qǐng)問(wèn)可以給一下仿真的程序嗎
作者: 前來(lái)求藥    時(shí)間: 2019-11-23 12:51
有元器件 封裝庫(kù)嗎

作者: 鄭澤旭    時(shí)間: 2019-12-2 13:42
設(shè)計(jì)很完美。
作者: 黑晨    時(shí)間: 2019-12-21 11:45
感謝樓主分享,十分給力,很有用處
作者: lhy0315cn    時(shí)間: 2019-12-30 20:22
感謝樓主的無(wú)私奉獻(xiàn),么么噠
作者: lhy0315cn    時(shí)間: 2019-12-30 20:23
感謝樓主無(wú)私奉獻(xiàn)
作者: shenzhen123    時(shí)間: 2020-1-3 14:49
感謝感謝
作者: 2450768115    時(shí)間: 2020-1-8 13:50
樓主,有匯編語(yǔ)言版的嗎

作者: lgjkk    時(shí)間: 2020-1-23 10:00
謝謝分享
作者: 128h    時(shí)間: 2020-3-2 15:17
很實(shí)用,挺喜歡這個(gè)設(shè)計(jì)
作者: jlkml;n    時(shí)間: 2020-3-13 09:52
為啥我下載了不知道在哪
作者: wudi540530058    時(shí)間: 2020-3-27 09:32
一直想找個(gè)數(shù)碼管多級(jí)菜單的處理框架。先下載看看哈
作者: harryup    時(shí)間: 2020-5-5 07:55
十分感謝呀
作者: 1295621580wd    時(shí)間: 2020-5-27 09:50
沒(méi)有PCB么
作者: 270992941    時(shí)間: 2020-6-5 09:36
好用嗎
作者: 1565868814    時(shí)間: 2020-6-5 14:50
非常有用!
作者: fanfanfna123    時(shí)間: 2020-6-10 14:46
真的好厲害呢
作者: 街邊    時(shí)間: 2020-6-11 13:06
果然,技術(shù)員的操作就是nb
作者: mujingfan    時(shí)間: 2020-6-19 01:26
真的好
作者: XYB1995    時(shí)間: 2020-6-19 08:35
下載來(lái)學(xué)習(xí),謝謝分享
作者: 許胤    時(shí)間: 2020-6-19 21:32
怎么沒(méi)有pcb文件只有圖片
作者: LLQ2723    時(shí)間: 2020-11-8 20:24
想問(wèn)一下,焊洞洞板的話,直接按原理圖焊,沒(méi)有問(wèn)題吧
作者: LLQ2723    時(shí)間: 2020-11-8 20:25
焊板直接按原理圖沒(méi)問(wèn)題嗎
作者: 編程蘇乞兒    時(shí)間: 2021-6-8 19:33
PNP DEVICE和PNP ASIMMDLS的區(qū)別有哪位大佬知道嗎

作者: gxzqh    時(shí)間: 2021-6-9 09:37
現(xiàn)在PCB打樣很便宜了,時(shí)間也就2天
作者: gxzqh    時(shí)間: 2021-6-9 09:42
111··22@ddf 發(fā)表于 2019-2-27 15:29
有Word形式程序嗎

c程序要特定格式,用WPS打開(kāi)就可以了
作者: CD724    時(shí)間: 2021-6-24 16:14
蜂鳴器怎么加
作者: CD724    時(shí)間: 2021-6-24 16:15
蜂鳴器在哪加 仿真圖里面沒(méi)看見(jiàn)蜂鳴器

作者: 貓貓想你    時(shí)間: 2021-11-1 20:05
1379310 發(fā)表于 2018-6-29 19:32
下載了自己打開(kāi)顯示器上也會(huì)出現(xiàn)51黑電子論壇的logo嗎?

不會(huì)啊親
作者: 隱樓    時(shí)間: 2021-11-16 08:40
能用德飛萊開(kāi)發(fā)板嗎

作者: rkdz110    時(shí)間: 2021-12-3 16:13
蜂鳴器需要并個(gè)1K--10K電阻,Q5接個(gè)4.7K下拉電阻
作者: houjue    時(shí)間: 2022-4-4 09:41
很不錯(cuò)的學(xué)習(xí)資料,謝謝分享了!
作者: 最帥的孩子    時(shí)間: 2024-12-24 08:58
太棒了吧




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1