![基于51單片機的溫度控制器_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/21/87bafae8-80c8-4e20-8e96-f45a6cf94633/87bafae8-80c8-4e20-8e96-f45a6cf946331.gif)
![基于51單片機的溫度控制器_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/21/87bafae8-80c8-4e20-8e96-f45a6cf94633/87bafae8-80c8-4e20-8e96-f45a6cf946332.gif)
![基于51單片機的溫度控制器_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/21/87bafae8-80c8-4e20-8e96-f45a6cf94633/87bafae8-80c8-4e20-8e96-f45a6cf946333.gif)
![基于51單片機的溫度控制器_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/21/87bafae8-80c8-4e20-8e96-f45a6cf94633/87bafae8-80c8-4e20-8e96-f45a6cf946334.gif)
![基于51單片機的溫度控制器_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/21/87bafae8-80c8-4e20-8e96-f45a6cf94633/87bafae8-80c8-4e20-8e96-f45a6cf946335.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、溫度控制器本設(shè)計要求溫度控制器實現(xiàn)以下基本功能:(1)數(shù)碼管準確顯示溫度值,測量精度為0.5 ;(2)五個按鍵操作(設(shè)置溫度,加鍵、復位);(3)可以溫度設(shè)置,超過設(shè)定溫度,繼電器吸合(且蜂鳴器發(fā)出報警聲)。Proteus仿真圖程序清單僅供學習參考Main.c/*=說明:基于DS18b20的溫度控制報警程序作者:kks創(chuàng)建時間:2013-03-18修改時間:=*/#include config.h#include type.h#include DS18B20.h/*=全局定義=*/static uint8 uKeyValue=0;/鍵值static uint16 unTemp=0;/讀取的溫度
2、值 static uint8 uCnt=0;/定時器計數(shù)值bit b2msflag=0;/2ms時間標志位bit b2mskeyflag=0;/2ms標志,用于按鍵掃描bit b50msflag=0;uint8 uKeyCnt=0;/按鍵延時計數(shù)uint8 code SegTable=0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,/*不帶小數(shù)點的斷碼表*/0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,/*帶小數(shù)點的斷碼表*/0xbf,0xff,0x86,0x88;/-,不顯示,E,Rui
3、nt8 code BitTable=0xfe,0xfd,0xfb,0xf7;/位碼uint8 DisBuff=0,0,0,0;/顯示緩存區(qū)/*函數(shù)名:Delay250us*輸入:無*輸出:無*功能:蜂鳴器延時函數(shù)*/void Delay250us(void)uint8 j;for(j=28;j0;j-) /250us基準延時程序 ; /*函數(shù)名:Init*輸入:無*輸出:無*功能:程序初始化*/void Init(void)P0=P1=P2=P3=0XFF;/IO口初始化TMOD=0x01;/定時器0方式1TH0=0xf8;/定時2msTL0=0x30;ET0=1;EX0=1;EA=1;TR0
4、=1;/*函數(shù)名:KeyHandle*輸入:tem*輸出:返回溫度上下限設(shè)置值,上限最大值為90,下限為0*功能:按鍵處理程序*/uint8 KeyHandle(uint8 tem)if(KEYUP=0)uKeyCnt+;if(uKeyCnt=2)/消抖uKeyCnt=0;if(KEYUP=0)tem+;if(tem99)tem=0;while(!KEYUP);if(KEYDOWN=0)uKeyCnt+;if(uKeyCnt=2)uKeyCnt=0;if(KEYDOWN=0)tem-;if(tem=-1)tem=99;while(!KEYDOWN);if(KEYWRITE=0)uKeyCnt+
5、;if(uKeyCnt=2)uKeyCnt=0;if(KEYWRITE=0)CopyToEEPROM();/將上下限拷貝到E2PROMwhile(!KEYWRITE);return tem;/*函數(shù)名:Buzz*輸入:無*輸出:無*功能:蜂鳴器報警函數(shù)*/void Buzz(void)uint8 i;for(i=10;i0;i-)BEEP=0;Delay250us();Delay250us();BEEP=1;Delay250us();BEEP=1;/*函數(shù)名:TemAlarm*輸入:無*輸出:無*功能:溫度報警檢測*/void TemAlarm(void)if(unTempuTHigh*10)
6、|(unTemp0;i-)for(j=0;j=25)uCnt=0;b50msflag=1;/*函數(shù)名:INT0ISR*輸入:無*輸出:無*功能:INT0中斷服務(wù)函數(shù)*/void INT0ISR(void) interrupt 0 using 0uKeyValue+;if(uKeyValue=3)uKeyValue=0;Config.H/*=說明:硬件配置信息作者:kks創(chuàng)建時間:2012-09-03修改時間:2013-03-18=*/#ifndef _CONFIG_H_#define _CONFIG_H_#include /*獨立按鍵*/sbit KEYUP=P14;/加sbit KEYDOW
7、N=P15;/減sbit KEYWRITE=P16;/寫入/*蜂鳴器*/sbit BEEP=P36;/*繼電器*/sbit RELAY=P37;/*DS18B20信號線*/sbit QS=P33;#endifType.h/*=說明:數(shù)據(jù)類型定義作者:kks創(chuàng)建時間:2012-09-03修改時間:2013-03-18=*/#ifndef _TYPE_H_#define _TYPE_H_/*= 整型數(shù)據(jù)類型=*/typedef unsigned charuint8;typedef unsigned intuint16;typedef unsigned longuint32;typedef char
8、int8;typedef intint16;typedef longint32;typedefunsigned charWPARAM;typedef unsigned charLPARAM;/*= 枚舉數(shù)據(jù)類型=*/typedef enumFALSE,TRUEBOOL;#endifDS18b20.h#ifndef _DS18B20_H_#define _DS18B20_H_#ifndef _DS18B20_C_#define _EXTERN#endif/*=全局定義=*/*=全局變量=*/#ifdef _EXTERNextern uint8 uTemHigh;/溫度上限extern uint8
9、 uTemLow;/溫度下限extern uint8 uTHigh;extern uint8 uTLow;extern uint8 sign;/符號位#undef _EXTERN#endif/*=全局函數(shù)=*/bit Reset18b20(void);uint8 Rbyte18b20(void);void Wbyte18b20(uint8 dat);uint16 ReadTem(void);void CopyToEEPROM(void);void GetFromEEPROM(void);#endifDS18B20.c/*=說明:DS18B20驅(qū)動程序作者:kks創(chuàng)建時間:2012-03-19優(yōu)
10、化時間:2013-03-20=*/#define _DS18B20_C_#include #include config.h#include type.h#include DS18B20.huint8 uTemHigh=0;/溫度上限uint8 uTemLow=0;/溫度下限uint8 uTHigh=0;/溫度上限臨時存儲uint8 uTLow=0;/溫度下限臨時存儲uint8 sign=0xff;/用來判斷暫存器的高5位是否為負float f_temp=0;/定義浮點型的溫度數(shù)據(jù)/*函數(shù)名:Delay15us*輸入:uint16 t*輸出:無*功能:單位為15us延時函數(shù),延時時間=15(1
11、+t)us*/void Delay15us(uint16 t)uint16 i;for(i=t;i0;i-)_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();/*函數(shù)名:Reset18b20*輸入:無*輸出:1-復位成功,0-復位失敗*功能:復位DS18b20,檢測DS18b20工作是否正常*/bit Reset18b20(void)bit rest=1;QS=1;/QS復位Delay15us(1);/延時30usQS=0;/拉低總線Delay15us(32);/延時495usQS=1;/釋放總線Delay15us(4);/延時15-60
12、us,rest=QS;/記錄DS返回的狀態(tài)Delay15us(15);/延時240us后,釋放總線QS=1;return (rest);/返回復位結(jié)果/*函數(shù)名:Wbyte18b20*輸入:dat-待寫字節(jié)數(shù)據(jù)*輸出:無*功能:DS18b20寫一字節(jié)數(shù)據(jù)*/void Wbyte18b20(uint8 dat)uint8 i;for(i=8;i0;i-)QS=0;/拉低總線,產(chǎn)生寫時序_nop_(); _nop_();/至少延時1usQS=dat&0x01;/從最低位寫起Delay15us(3);/延時60usQS=1;/釋放總線dat=1;/數(shù)據(jù)右移一位,準備寫下一位/*函數(shù)名:Rbyte18
13、b20*輸入:無*輸出:dat-讀出數(shù)據(jù)*功能:DS18b20讀一字節(jié)數(shù)據(jù)*/uint8 Rbyte18b20(void)uint8 i,dat=0;for(i=8;i0;i-)dat=1;QS=0;/產(chǎn)生讀時序_nop_(); _nop_();/至少延時1usQS=1;/釋放總線_nop_(); _nop_(); _nop_(); _nop_();/延時4us后讀數(shù)據(jù)if(QS)dat |=0x80;Delay15us(3);/延時60usreturn dat;/*函數(shù)名:ReadTem*輸入:無*輸出:temp-讀出溫度*功能:讀取溫度*/uint16 ReadTem(void)uint8
14、 TL=0,TH=0;uint16 temp=0;/溫度數(shù)據(jù)/*=開始轉(zhuǎn)換=*/if(Reset18b20()/總線復位Wbyte18b20(0xcc);/寫跳過讀ROM指令Wbyte18b20(0x44);/寫溫度轉(zhuǎn)換指令Delay15us(15);/稍作延時/*=讀取溫度=*/if(Reset18b20()/總線復位Wbyte18b20(0xcc);/寫跳過讀ROM指令Wbyte18b20(0xbe);/讀暫存器,讀內(nèi)部RAM中9字節(jié)的溫度數(shù)據(jù)TL=Rbyte18b20();/讀低8位TH=Rbyte18b20();/讀高8位uTemHigh=Rbyte18b20();/讀溫度上限uTem
15、Low=Rbyte18b20();/讀溫度下限Reset18b20();/復位,終止讀temp=TH;temp0x07)/符號位為負sign=20;/符號位顯示為-temp=temp+1;/取temp的補碼elsesign=21;/符號位不顯示temp=temp;f_temp=temp*0.0625;/溫度在寄存器中為12位,分辨率為0.0625temp=f_temp*10+0.5;/乘10是取一位小數(shù),加0.5是四舍五入return (temp);/temp是整型elsereturn 0;/*函數(shù)名:CopyToEEPROM*輸入:無*輸出:無*功能:將溫度上下限寫入E2PROM*/void CopyToEEPROM(void)if(Reset18b20()Wbyte18b20(0xcc);Delay15us(1);Wbyte18b20(0x4e);/寫暫存器Delay15us(1);Wbyte18b20(uTHigh);/寫上限
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年實木類家具項目立項申請報告模式
- 2025年跨境電商產(chǎn)業(yè)園項目提案報告模范
- 2025年中介促成的辦公室租賃合同示例
- 2025年公司員工福利與激勵咨詢協(xié)議
- 市政綠化工程申請實施協(xié)議
- 2025年公路護欄維護保養(yǎng)合同范本
- 2025年倉儲調(diào)度員勞動合同范文
- 2025年供熱網(wǎng)絡(luò)運營維護服務(wù)合同示范文本
- 2025年農(nóng)藥使用與安全管理技術(shù)合作協(xié)議
- 2025年勞務(wù)派遣合同分析
- 二零二五年度港口碼頭安全承包服務(wù)協(xié)議4篇
- 廣州2025年第一次廣東廣州市白云區(qū)政務(wù)服務(wù)和數(shù)據(jù)管理局政府雇員招聘筆試歷年參考題庫附帶答案詳解
- 2025年四川中煙工業(yè)有限責任公司招聘筆試參考題庫含答案解析
- 【市質(zhì)檢】泉州市2025屆高中畢業(yè)班質(zhì)量監(jiān)測(二) 生物試卷(含答案解析)
- 六年級2025寒假特色作業(yè)
- DCS-應(yīng)急預案演練方案
- 2025年江蘇轄區(qū)農(nóng)村商業(yè)銀行招聘筆試參考題庫含答案解析
- 2025年中華財險湖南分公司招聘筆試參考題庫含答案解析
- 人教版六年級數(shù)學下冊完整版教案及反思
- 少兒財商教育講座課件
- 2025年中國科協(xié)所屬單位招聘15名社會在職人員歷年高頻重點提升(共500題)附帶答案詳解
評論
0/150
提交評論