基于單片機(jī)的溫度控制器附程序代碼_第1頁
基于單片機(jī)的溫度控制器附程序代碼_第2頁
基于單片機(jī)的溫度控制器附程序代碼_第3頁
基于單片機(jī)的溫度控制器附程序代碼_第4頁
基于單片機(jī)的溫度控制器附程序代碼_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、生產(chǎn)實(shí)習(xí)報(bào)告書報(bào)告名稱基于單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)姓 名學(xué) 號(hào)541007070138、541007070140、541007070141院、系、部 計(jì)算機(jī)與通信工程學(xué)院專 業(yè)信息工程10-01 指導(dǎo)教師2013年 9 月 1日 目錄1.引言12.設(shè)計(jì)要求13.設(shè)計(jì)思路14.方案論證24.1方案一24.2方案二25.工作原理26.硬件設(shè)計(jì)26.1單片機(jī)模塊26.2 數(shù)字溫度傳感器模塊46.2.1 DS18B20性能46.2.2 DS18B20外形及引腳說明56.2.3 DS18B20接線原理圖56.3按鍵模塊66.4聲光報(bào)警模塊66.5數(shù)碼管顯示模塊77.程序設(shè)計(jì)87.1主程序模塊87.2 讀

2、溫度值模塊87.2.1讀溫度值模塊流程圖:97.2.2 DS18B20寫字節(jié)和讀字節(jié)子程序流程圖:107.3 中斷模塊107.4 溫度設(shè)定、報(bào)警模塊108.實(shí)物效果圖129.實(shí)習(xí)總結(jié)14附錄15基于單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)1.引言隨著人們生活水平的不斷提高,單片機(jī)控制無疑是人們追求的目標(biāo)之一,它所給人帶來的方便是不可否定的,各種數(shù)字系統(tǒng)的應(yīng)用也使人們的生活更加舒適。數(shù)字化控制、智能控制為現(xiàn)代人的工作、生活、科研等方面帶來方便。其中數(shù)字溫控器就是一個(gè)典型的例子。數(shù)字溫控器具有讀數(shù)方便、測(cè)溫范圍廣、測(cè)溫精確、功能多樣話等優(yōu)點(diǎn)。其主要用于對(duì)測(cè)溫要求準(zhǔn)確度比較高的場(chǎng)所,或科研實(shí)驗(yàn)室使用,該設(shè)計(jì)使用ST

3、C12C5A60S2單片機(jī)作控制器,數(shù)字溫度傳感器DS18B20測(cè)量溫度,單片機(jī)接受傳感器輸出,經(jīng)處理用LED數(shù)碼管實(shí)現(xiàn)溫度值顯示,并能任意設(shè)定報(bào)警溫度的溫度范圍,實(shí)現(xiàn)聲光報(bào)警。在我們的實(shí)習(xí)過程中,我們首先要根據(jù)原理圖焊接一個(gè)STC12C5A60S2單片機(jī)的開發(fā)板,經(jīng)測(cè)試準(zhǔn)確無誤后,編寫程序?qū)崿F(xiàn)上面所說的數(shù)字溫度控制器。2.設(shè)計(jì)要求 1. 控制溫箱溫度2. 加熱:電爐絲,這里改成發(fā)光二極管3. 冷卻:自然or風(fēng)冷4. 溫度目標(biāo)區(qū)間:-50-1005. 運(yùn)行環(huán)境:常溫6. 供電:+5v7. 控制精度:2 8. 溫度可設(shè)定,如果下限超過上限,顯示錯(cuò)誤。9. 溫度可顯示10. 超溫報(bào)警3.設(shè)計(jì)思路設(shè)

4、計(jì)一個(gè)單片機(jī)測(cè)控系統(tǒng),一般可分為四個(gè)步驟:(1)需求分析,方案論證和總體設(shè)計(jì)需求分析:被測(cè)控參數(shù)的形式(電量、非電量、模擬量、數(shù)字量等)、被測(cè)控參數(shù)的范圍、性能指標(biāo)、系統(tǒng)功能、工作環(huán)境、顯示、報(bào)警、打印要求等。方案論證:根據(jù)要求,設(shè)計(jì)出符合現(xiàn)場(chǎng)條件的軟硬件方案,又要使系統(tǒng)簡單、經(jīng)濟(jì)、可靠,這是進(jìn)行方案論證與總體設(shè)計(jì)一貫堅(jiān)持的原則。 (2)器件選擇,電路設(shè)計(jì)制作,數(shù)據(jù)處理算法,軟件的編制階段。(3)系統(tǒng)調(diào)試與性能測(cè)定。(4)文件編制。文件包括:任務(wù)描述、設(shè)計(jì)的指導(dǎo)思想及設(shè)計(jì)方案論證、性能測(cè)定及現(xiàn)場(chǎng)試用報(bào)告與說明、使用指南、軟件資料(流程圖、子程序使用說明、地址分配、程序清單)、硬件資料(電原理圖

5、、元件布置圖及接線圖、接插件引腳圖、線路板圖、注意事項(xiàng))。文件不僅是設(shè)計(jì)工作的結(jié)果,而且是以后使用、維修以及進(jìn)一步再設(shè)計(jì)的依據(jù)。因此,一定要精心編寫,描述清楚,使數(shù)據(jù)及資料齊全。 4.方案論證4.1方案一由于本設(shè)計(jì)是測(cè)溫電路,可以使用熱敏電阻之類的器件,將隨被測(cè)溫度變化的電壓或電流采樣,進(jìn)行A/D轉(zhuǎn)換后就可以用單片機(jī)進(jìn)行數(shù)據(jù)處理,實(shí)現(xiàn)溫度顯示。這種設(shè)計(jì)需要用到A/D轉(zhuǎn)換電路,增大了電路的復(fù)雜性,而且要做到高精度也比較困難。4.2方案二考慮到在單片機(jī)屬于數(shù)字系統(tǒng),容易想到數(shù)字溫度傳感器,可選用DS18B20數(shù)字溫度傳感器,此傳感器為單總線數(shù)字溫度傳感器,起體積小、構(gòu)成的系統(tǒng)結(jié)構(gòu)簡單,它可直接將溫

6、度轉(zhuǎn)化成串行數(shù)字信號(hào)給單片機(jī)處理,即可實(shí)現(xiàn)溫度顯示。另外DS18B20具有3引腳的小體積封裝,測(cè)溫范圍為-55+125攝氏度,測(cè)溫分辨率可達(dá)0.0625攝氏度,其測(cè)量范圍與精度都能符合設(shè)計(jì)要求。以上兩種方案相比較,第二種方案的電路、軟件設(shè)計(jì)更簡單,此方案設(shè)計(jì)的系統(tǒng)在功耗、測(cè)量精度、范圍等方面都能很好地達(dá)到要求,故本設(shè)計(jì)采用方案二。5.工作原理溫度傳感器 DS18B20 從設(shè)備環(huán)境的不同位置采集溫度,單片機(jī) AT89S51 獲取采集的溫度值,經(jīng)處理后得到當(dāng)前環(huán)境中一個(gè)比較穩(wěn)定的溫度值,再根據(jù)當(dāng)前設(shè)定的溫度上下限值,通過加熱和降溫對(duì)當(dāng)前溫度進(jìn)行調(diào)整。當(dāng)采集的溫度經(jīng)處理后超過設(shè)定溫度的上限時(shí),單片機(jī)

7、通過三極管驅(qū)動(dòng)繼電器開啟降溫設(shè)備 (壓縮制冷器) ,并通過三極管驅(qū)動(dòng)揚(yáng)聲器發(fā)出警笛聲。當(dāng)采集的溫度經(jīng)處理后低于設(shè)定溫度的下時(shí) , 單片機(jī)通過三極管驅(qū)動(dòng)繼電器開啟升溫設(shè)備 (加熱器) ,并通過三極管驅(qū)動(dòng)揚(yáng)聲器發(fā)出警笛聲。 6.硬件設(shè)計(jì)6.1單片機(jī)模塊STC12C5A60S2/AD/PWM系列單片機(jī)是宏晶科技生產(chǎn)的單時(shí)鐘/機(jī)器周期(1T)的單片機(jī),是高速/低功耗/超強(qiáng)抗干擾的新一代8051單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。內(nèi)部集成MAX810專用復(fù)位電路,2路PWM,8路高速10位A/D轉(zhuǎn)換(250K/S),針對(duì)電機(jī)控制,強(qiáng)干擾場(chǎng)合。1.增強(qiáng)型8051 CPU,1T,單時(shí)鐘

8、/機(jī)器周期,指令代碼完全兼容傳統(tǒng)8051;2.工作電壓:STC12C5A60S2系列工作電壓:5.5V-3.3V(5V單片機(jī))STC12LE5A60S2系列工作電壓:3.6V-2.2V(3V單片機(jī));3.工作頻率范圍:0 - 35MHz,相當(dāng)于普通8051的 0420MHz;4.用戶應(yīng)用程序空間8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K字節(jié);5.片上集成1280字節(jié)RAM;6.通用I/O口(36/40/44個(gè)),復(fù)位后為:準(zhǔn)雙向口/弱上拉(普通8051傳統(tǒng)I/O口),可設(shè)置成四種模式:準(zhǔn)雙向口/弱上拉,推挽/強(qiáng)上拉,僅為輸入/高阻,開漏,

9、每個(gè)I/O口驅(qū)動(dòng)能力均可達(dá)到20mA,但整個(gè)芯片最大不要超過55Ma;7. ISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程),無需專用編程器,無需專用仿真器 可通過串口(P3.0/P3.1)直接下載用戶程序,數(shù)秒即可完成一片;8.有EEPROM功能(STC12C5A62S2/AD/PWM無內(nèi)部EEPROM);9. 看門狗;10.內(nèi)部集成MAX810專用復(fù)位電路(外部晶體12M以下時(shí),復(fù)位腳可直接1K電阻到地);11.外部掉電檢測(cè)電路:在P4.6口有一個(gè)低壓門檻比較器,5V單片機(jī)為1.32V,誤差為+/-5%,3.3V單片機(jī)為1.30V,誤差為+/-3%;12.時(shí)鐘源:外部高精度晶體/時(shí)鐘,內(nèi)部R

10、/C振蕩器(溫漂為+/-5%到+/-10%以內(nèi)) 1用戶在下載用戶程序時(shí),可選擇是使用內(nèi)部R/C振蕩器還是外部晶體/時(shí)鐘,常溫下內(nèi)部R/C振蕩器頻率為:5.0V單片機(jī)為:11MHz15.5MHz,3.3V單片機(jī)為:8MHz12MHz,精度要求不高時(shí),可選擇使用內(nèi)部時(shí)鐘,但因?yàn)橛兄圃煺`差和溫漂,以實(shí)際測(cè)試為準(zhǔn);13.共4個(gè)16位定時(shí)器 兩個(gè)與傳統(tǒng)8051兼容的定時(shí)器/計(jì)數(shù)器,16位定時(shí)器T0和T1,沒有定時(shí)器2,但有獨(dú)立波特率發(fā)生器 做串行通訊的波特率發(fā)生器 再加上2路PCA模塊可再實(shí)現(xiàn)2個(gè)16位定時(shí)器;14. 2個(gè)時(shí)鐘輸出口,可由T0的溢出在P3.4/T0輸出時(shí)鐘,可由T1的溢出在P3.5/T

11、1輸出時(shí)鐘;15.外部中斷I/O口7路,傳統(tǒng)的下降沿中斷或低電平觸發(fā)中斷,并新增支持上升沿中斷的PCA模塊, Power Down模式可由外部中斷喚醒,INT0/P3.2,INT1/P3.3,T0/P3.4, T1/P3.5, RxD/P3.0,CCP0/P1.3(也可通過寄存器設(shè)置到P4.2 ), CCP1/P1.4 (也可通過寄存器設(shè)置到P4.3);16. PWM(2路)/PCA(可編程計(jì)數(shù)器陣列,2路):也可用來當(dāng)2路D/A使用也可用來再實(shí)現(xiàn)2個(gè)定時(shí)器也可用來再實(shí)現(xiàn)2個(gè)外部中斷(上升沿中斷/下降沿中斷均可分別或同時(shí)支持);17.A/D轉(zhuǎn)換, 10位精度ADC,共8路,轉(zhuǎn)換速度可達(dá)250K

12、/S(每秒鐘25萬次)18.通用全雙工異步串行口(UART),由于STC12系列是高速的8051,可再用定時(shí)器或PCA軟件實(shí)現(xiàn)多串口;19. STC12C5A60S2系列有雙串口,后綴有S2標(biāo)志的才有雙串口,RxD2/P1.2(可通過寄存器設(shè)置到P4.2),TxD2/P1.3(可通過寄存器設(shè)置到P4.3);20.工作溫度范圍:-40 - +85(工業(yè)級(jí)) / 0 - 75(商業(yè)級(jí))21.封裝:PDIP-40,LQFP-44,LQFP-48 I/O口不夠時(shí),可用2到3根普通I/O口線外接 74HC164/165/595(均可級(jí)聯(lián))來擴(kuò)展I/O口, 還可用A/D做按鍵掃描來節(jié)省I/O口,或用雙CP

13、U,三線通信,還多了串口。圖6-1 STC12C5A60S2管腳圖6.2 數(shù)字溫度傳感器模塊6.2.1 DS18B20性能l 獨(dú)特的單線接口僅需一個(gè)端口引腳進(jìn)行通信l 簡單的多點(diǎn)分布應(yīng)用l 無需外部器件l 可通過數(shù)據(jù)線供電l 零待機(jī)功耗l 測(cè)溫范圍-55+125,以0.5遞增l 可編程的分辨率為912位,對(duì)應(yīng)的可分辨溫度分別為0.5、0.25、0.125和0.0625l 溫度數(shù)字量轉(zhuǎn)換時(shí)間200ms,12位分辨率時(shí)最多在750ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字l 應(yīng)用包括溫度控制、工業(yè)系統(tǒng)、消費(fèi)品、溫度計(jì)和任何熱感測(cè)系統(tǒng)l 負(fù)壓特性:電源極性接反時(shí),傳感器不會(huì)因發(fā)熱而燒毀,但不能正常工作6.2.2 DS1

14、8B20外形及引腳說明圖6.2.2 DS18B20外形及引腳l GND:地l DQ:單線運(yùn)用的數(shù)據(jù)輸入/輸出引腳l VD:可選的電源引腳6.2.3 DS18B20接線原理圖單總線通常要求接一個(gè)約4.7K左右的上拉電阻,這樣,當(dāng)總線空閑時(shí),其狀態(tài)為高電平。圖6.2.3 DS18B20接線原理圖 6.3按鍵模塊單片機(jī)應(yīng)用系統(tǒng)中按鍵或鍵盤都是以開關(guān)狀態(tài)來設(shè)置控制功能或輸入數(shù)據(jù)。 鍵開關(guān)狀態(tài)的可靠輸入 :為了去抖動(dòng)采用軟件方法,它是在檢測(cè)到有鍵按下時(shí),執(zhí)行一個(gè)10ms的延時(shí)程序后,再確認(rèn)該鍵電平是否仍保持閉合狀態(tài)電平,如保持閉合狀態(tài)電平則確認(rèn)為真正鍵按下狀態(tài),從而消除了抖動(dòng)影響鍵盤共有3個(gè)按鍵,用于方

15、便設(shè)定溫度。圖6.3 DS18B20接線原理圖INT1 , 轉(zhuǎn)換,用于轉(zhuǎn)換設(shè)置最高或最低溫度限度值;INT2 增加,用于增加最高或最低溫度限度值;TI 減少,用于減少最高或最低溫度限度值6.4聲光報(bào)警模塊 當(dāng)采集的溫度經(jīng)處理后超過規(guī)定溫度范圍時(shí),蜂鳴器報(bào)警。當(dāng)超過溫度下限時(shí),二極管報(bào)警。具體電路連接如圖所示。 圖6.4左圖低溫,二極管報(bào)警。右圖超出范圍,蜂鳴器報(bào)警。6.5數(shù)碼管顯示模塊本部分電路主要使用七段數(shù)碼管,單片機(jī)通過P0口將要顯示的數(shù)據(jù)信號(hào)傳送到數(shù)碼管顯示,另外通過P1口的某幾位,通過741LS38譯碼器,將要顯示的位送到片選信號(hào)。具體見實(shí)際連線圖如圖6-5。圖6-5數(shù)碼管連接圖7.程

16、序設(shè)計(jì)7.1主程序模塊主程序調(diào)用了4個(gè)子程序,分別是數(shù)碼管顯示程序、鍵盤掃描及按鍵處理程、溫度值獲取程序、延時(shí)程序。程序開始的時(shí)候先設(shè)置定時(shí)器0初始化,然后進(jìn)行鍵盤掃描接著就判斷按鍵是否被按下,按下就進(jìn)行按鍵處理。然后獲取溫度值并經(jīng)行處理(判斷是否為負(fù)溫度,以及進(jìn)行分位),得到溫度的十位、個(gè)位和十分位。并判斷但前溫度與所設(shè)置上下限溫度關(guān)系,大于上限溫度或小于下限溫度則報(bào)警,否則繼續(xù)向下執(zhí)行,并開始循環(huán)。其中顯示程序在中斷中進(jìn)行。7.2 讀溫度值模塊對(duì)溫度傳感器送過來的數(shù)據(jù)進(jìn)行讀取,讀溫度值模塊需要調(diào)用4個(gè)子程序,分別為:a) DS18B20初始化子程序:讓單片機(jī)知道DS18B20在總線上且已準(zhǔn)

17、備好操作b) DS18B20寫字節(jié)子程序:對(duì)DS18B20發(fā)出命令c) DS18B20讀字節(jié)子程序:讀取DS18B20存儲(chǔ)器的數(shù)據(jù)d) 延時(shí)子程序:對(duì)DS18B20操作時(shí)的時(shí)序控制7.2.1讀溫度值模塊流程圖:7.2.2 DS18B20寫字節(jié)和讀字節(jié)子程序流程圖:7.3 中斷模塊中斷采用T0方式1,初始值定時(shí)為2ms。中斷入口定時(shí)器重置初值計(jì)數(shù)值加1數(shù)碼管顯示程序中斷返回7.4 溫度設(shè)定、報(bào)警模塊進(jìn)入模塊界面后,按選擇上下限鍵,選擇改變上限還是下限,按加減鍵分別上調(diào)和下調(diào)設(shè)定報(bào)警溫度值,當(dāng)實(shí)時(shí)溫度值超過設(shè)定值時(shí)驅(qū)動(dòng)蜂鳴器發(fā)聲,8.實(shí)物效果圖溫度處于設(shè)定范圍,不做任何反應(yīng)。設(shè)定溫度下限度值為28

18、.5,當(dāng)前溫度為28.1,蜂鳴器報(bào)警,二極管報(bào)警。溫度最高上限值為32,當(dāng)前溫度為33.6,蜂鳴器報(bào)警,二極管不報(bào)警。當(dāng)設(shè)定溫度下限超過上限時(shí),顯示ERRO,并聲光報(bào)警。9.實(shí)習(xí)總結(jié)溫度控制系統(tǒng)廣泛應(yīng)用于社會(huì)生活的各個(gè)領(lǐng)域 ,如家電、汽車、材料、電力電子等 ,常用的控制電路根據(jù)應(yīng)用場(chǎng)合和所要求的性能指標(biāo)有所不同 , 在工業(yè)企業(yè)中,如何提高溫度控制對(duì)象的運(yùn)行性能一直以來都是控制人員和現(xiàn)場(chǎng)技術(shù)人員努力解決的問題。本次實(shí)習(xí)是基于STC12C5A60S2單片機(jī),采用數(shù)字溫度傳感器DS18B20,直接進(jìn)行溫度采集顯示,報(bào)警的數(shù)字溫度計(jì)設(shè)計(jì)。包括傳感器數(shù)據(jù)采集電路,溫度顯示電路,上下限報(bào)警調(diào)整電路,單片機(jī)

19、主板電路等組成。利用STC12C5A60S2單片機(jī)和數(shù)字溫度傳感器DS18B20設(shè)計(jì)的溫度控制系統(tǒng)能夠?qū)崿F(xiàn)的溫度范圍是-55-100,其精度是0.1,可以在數(shù)碼管上顯示實(shí)時(shí)溫度,并且可以實(shí)現(xiàn)溫度上限和下限的設(shè)置,超出上下限后單片機(jī)系統(tǒng)發(fā)出報(bào)警。在實(shí)習(xí)的過程中,主要分三個(gè)部分進(jìn)行,分別是硬件電路板的焊接、軟件的編寫、實(shí)習(xí)報(bào)告的總結(jié)。在這三個(gè)部分中,王康康主要負(fù)責(zé)硬件電路的焊接,王會(huì)民主要負(fù)責(zé)程序的編寫,我(王樂樂)主要負(fù)責(zé)實(shí)習(xí)報(bào)告的總結(jié)。在這次實(shí)習(xí)中我們發(fā)現(xiàn)了很多問題,如,對(duì)元器件不熟悉,焊接元件不牢固,程序編寫無從下手,不熟練,程序編寫層次不太清晰,合作存在問題等。但是這些問題在我們的共同努力

20、下,摸索下最終解決。通過這次生產(chǎn)實(shí)習(xí)我們加深了對(duì)元器件的認(rèn)識(shí),提高了程序編寫能力,學(xué)會(huì)了通過自己去查找資料,更學(xué)會(huì)了合作。 在這樣的磕磕碰碰中我們完成了本次生產(chǎn)實(shí)習(xí)任務(wù),雖然仍存在著這樣那樣的問題,但是我們的收獲無疑是巨大的。這次生產(chǎn)實(shí)習(xí)將對(duì)我們今后的學(xué)習(xí)工作產(chǎn)生巨大的影響。附錄1.主程序/*- 名稱:DS18b20數(shù)碼管顯示 論壇: 編寫:shifang 日期:2009.5 修改:無 內(nèi)容:顯示格式 符號(hào) xxx.x C 可以顯示負(fù)溫度-*/#include /包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義#include 18b20.h#include sbit gaowe

21、njingdeng=P27;/高于溫度設(shè)定上限,做出反應(yīng)sbit zuidizuigaojian=P32;/選擇上限還是下限sbit zengjia=P33;/溫度增加按鍵sbit jianshao=P34;/ 溫度減少按鍵sbit baojing=P36;/ 報(bào)警標(biāo)志sbit LAIDI=P35;/拉低電平,為了使數(shù)碼管顯示unsigned int temp0=1;/作為一個(gè)設(shè)定上限還是下限的標(biāo)志位。unsigned int temp1=2;unsigned int temp2=8;unsigned int temp3=0;/設(shè)定溫度下限初值28.0攝氏度unsigned int temp4

22、=3;unsigned int temp5=2;unsigned int temp6=0;/設(shè)定溫度上限初值38.0攝氏度unsigned int temp7=0;unsigned int temp8=0;unsigned int temp9=0;/設(shè)定三個(gè)中間變量,來比較環(huán)境溫度和設(shè)定溫度之間的關(guān)系extern DelayMsUs2x(unsigned char t);extern DelayMs(unsigned char t);/引用外部延時(shí)函數(shù)。#define DataPort P0 /定義段數(shù)據(jù)端口 程序中遇到DataPort 則用P0 替換#define SegPort P1 /定

23、義位數(shù)據(jù)端口,用以點(diǎn)亮數(shù)碼相應(yīng)數(shù)碼管。unsigned char code dofly_DuanMa=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0xff;/ 顯示段碼值01234567unsigned char code dofly_WeiMa=0xff,0xef,0xdf,0xcf,0xf0,0xe0,0xd0,0xc0;/分別對(duì)應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮,即位碼unsigned char TempData8; /存儲(chǔ)顯示值的全局變量void Keys_Scan();/鍵盤掃描函數(shù)聲明void Display(void);/數(shù)碼管顯

24、示函數(shù)聲明void Init_Timer0(void);/定時(shí)器初始化函數(shù)聲明/*- 主函數(shù)-*/void main (void) unsigned int TempL,TempH; inttemp ;Init_Timer0(); /定時(shí)器初始化while (1) /主循環(huán) LAIDI=0;/拉低74LS138電平 Keys_Scan();/鍵盤掃描函數(shù)if(temp0%2=1)TempData0=0x38; TempData1=dofly_DuanMatemp1; TempData2=dofly_DuanMatemp2|0x80; TempData3=dofly_DuanMatemp3;/把

25、設(shè)定的初值轉(zhuǎn)化為相應(yīng)的段碼 else if (temp0%2=0) TempData0=0x76;/判斷按鍵設(shè)定上限還是下限 TempData1=dofly_DuanMatemp4; TempData2=dofly_DuanMatemp5|0x80; TempData3=dofly_DuanMatemp6;/把設(shè)定的初值轉(zhuǎn)化為相應(yīng)的段碼 if( (temp1*100+temp2*10+temp3)=(temp4*100+temp5*10+temp6) TempData0=0x79; TempData1=0x70; TempData2=0x70; TempData3=0x3f;/如果在調(diào)節(jié)過程中

26、,溫度下限超過上限,顯示ERRO temp=ReadTemperature();/轉(zhuǎn)換溫度 if(temp&0x8000) TempData4=0x40;/負(fù)號(hào)標(biāo)志 temp=temp; / 取反加1 temp +=1; else TempData4=0; TempH=temp4; TempL=temp&0x0F; TempL=TempL*625/1000;/小數(shù)近似處理 TempData5=dofly_DuanMa(TempH%100)/10; /十位溫度 TempData6=dofly_DuanMa(TempH%100)%10|0x80; /個(gè)位溫度,帶小數(shù)點(diǎn) TempData7=dofl

27、y_DuanMaTempL; temp7=temp1*100+temp2*10+temp3; temp8=TempH*10+TempL; temp9=temp4*100+temp5*10+temp6; if(temp9=temp8)&(temp8=temp7)baojing=1; gaowenjingdeng=0; else if(temp8=8) i=0;/*- 定時(shí)器初始化子程序-*/void Init_Timer0(void) TMOD |= 0x01; /使用模式1,16位定時(shí)器,使用|符號(hào)可以在使用多個(gè)定時(shí)器時(shí)不受影響 TH0=(65536-2000)/256; /重新賦值 2ms

28、TL0=(65536-2000)%256; EA=1; /總中斷打開 ET0=1; /定時(shí)器中斷打開 TR0=1; /定時(shí)器開關(guān)打開/*- 定時(shí)器中斷子程序-*/void Timer0_isr(void) interrupt 1 TH0=(65536-2000)/256; /重新賦值 2ms TL0=(65536-2000)%256; Display(); / 調(diào)用顯示函數(shù) void Keys_Scan() if(zuidizuigaojian=0)/檢測(cè)是否有按鍵按下 DelayMs(10); /軟件去抖動(dòng)if(zuidizuigaojian=0)/再次檢測(cè)按鍵是否按下dengdai1:if

29、(zuidizuigaojian=0)goto dengdai1;/等待釋放按鍵elsetemp0=temp0+1;goto fanhui; /如果是此鍵按下,就不可能是下面按鍵按下if(zengjia=0) DelayMs(10);if(zengjia=0)dengdai2:if(zengjia=0)goto dengdai2;elseif(temp0%2=1)/對(duì)下限增加 if(temp39)temp3=temp3+1;goto fanhui; elsetemp3=0; if(temp29)temp2=temp2+1;goto fanhui; else temp2=0; if (temp1

30、9) temp1=temp1+1; goto fanhui; else /對(duì)上限增加 if(temp69)temp6=temp6+1;goto fanhui; elsetemp6=0; if(temp59)temp5=temp5+1;goto fanhui; else temp5=0; if (temp40)temp3=temp3-1;goto fanhui; elsetemp3=9; if(temp20)temp2=temp2-1;goto fanhui; else temp2=9; if (temp10) temp1=temp1-1; goto fanhui; else if(temp60

31、)temp6=temp6-1;goto fanhui; elsetemp6=9; if(temp50)temp5=temp5-1;goto fanhui; else temp5=9; if (temp40) temp4=temp4-1; goto fanhui; fanhui:;2.讀溫度值程序/*- 名稱:18B20溫度傳感器 網(wǎng)站: 編寫:shifang 日期:2009.5 修改:無 內(nèi)容:18B20單線溫度檢測(cè)的應(yīng)用樣例程序-*/#includedelay.h#include18b20.h#define NOP() _nop_() /* 定義空指令 */*- 18b20初始化-*/bit

32、 Init_DS18B20(void) bit dat=0; DQ = 1; /DQ復(fù)位_nop_();_nop_(); /稍做延時(shí) DQ = 0; /單片機(jī)將DQ拉低TempDelay(800); /精確延時(shí) 大于 480us 小于960usDQ = 1; /拉高總線TempDelay(50); /1560us 后 接收60-240us的存在脈沖 dat=DQ; /如果x=0則初始化成功, x=1則初始化失敗 TempDelay(230); while(!dat)dat=DQ; return dat;/*- 讀取一個(gè)字節(jié)-*/unsigned char ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-) DQ = 0; / 給脈

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論