基于單片機(jī)的空調(diào)溫度控制器設(shè)計(jì)_畢業(yè)設(shè)計(jì).doc

上傳人:good****022 文檔編號(hào):116541341 上傳時(shí)間:2022-07-05 格式:DOC 頁數(shù):43 大?。?71.63KB
收藏 版權(quán)申訴 舉報(bào) 下載
基于單片機(jī)的空調(diào)溫度控制器設(shè)計(jì)_畢業(yè)設(shè)計(jì).doc_第1頁
第1頁 / 共43頁
基于單片機(jī)的空調(diào)溫度控制器設(shè)計(jì)_畢業(yè)設(shè)計(jì).doc_第2頁
第2頁 / 共43頁
基于單片機(jī)的空調(diào)溫度控制器設(shè)計(jì)_畢業(yè)設(shè)計(jì).doc_第3頁
第3頁 / 共43頁

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《基于單片機(jī)的空調(diào)溫度控制器設(shè)計(jì)_畢業(yè)設(shè)計(jì).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《基于單片機(jī)的空調(diào)溫度控制器設(shè)計(jì)_畢業(yè)設(shè)計(jì).doc(43頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、接口 技術(shù)課程設(shè)計(jì)報(bào)告 基于單片機(jī)的空調(diào)溫度控制器設(shè)計(jì)基于單片機(jī)的空調(diào)溫度控制器設(shè)計(jì) 摘 要 設(shè)計(jì)了基于 AT89C52 的高精度家用空調(diào)溫度控制系統(tǒng),系統(tǒng)硬件主要由電源電路、 溫度采集電路(DS18B20) 、鍵盤、顯示電路、輸出控制電路及其他輔助電路組成;軟 件采用 8051C 語言編程;該系統(tǒng)可以完成溫度的顯示、溫度的設(shè)定、空調(diào)的控制等多 項(xiàng)功能。 關(guān)鍵詞:單片機(jī);DS18B20;溫度檢測(cè);顯示 目錄目錄 1 設(shè)計(jì)目的及要求.1 1.1 設(shè)計(jì)目的和意義.1 1.2 設(shè)計(jì)任務(wù)與要求.1 2 硬件電路設(shè)計(jì).2 2.1 總體方案設(shè)計(jì).2 2.2 功能模塊電路設(shè)計(jì).3 2.2.1 單片機(jī)的選型3

2、 2.2.2 振蕩電路設(shè)計(jì)5 2.2.3 復(fù)位電路設(shè)計(jì)5 2.2.4 鍵盤接口電路設(shè)計(jì)6 2.2.5 溫度測(cè)量電路設(shè)計(jì)6 2.2.6 系統(tǒng)顯示電路設(shè)計(jì)7 2.2.7 輸出控制電路設(shè)計(jì)8 2.3 總電路設(shè)計(jì).8 2.4 系統(tǒng)所用元器件.9 3 軟件系統(tǒng)設(shè)計(jì).10 3.1 軟件系統(tǒng)總體方案設(shè)計(jì).10 3.2 軟件流程圖設(shè)計(jì).10 4 系統(tǒng)調(diào)試.12 5 總結(jié).13 5.1 本系統(tǒng)存在的問題及改進(jìn)措施 .13 參考文獻(xiàn).14 附錄 1:系統(tǒng)的源程序清單15 附錄 2:系統(tǒng)的 PCB 圖39 0 1 設(shè)計(jì)目的及要求 1.1 設(shè)計(jì)目的和意義 21 世紀(jì)的人們生活質(zhì)量不斷提高,同時(shí)也對(duì)高科技電子產(chǎn)業(yè)提出了

3、更高的要求, 為了使人們生活更人性化、智能化。我設(shè)計(jì)了這一基于單片機(jī)的空調(diào)溫度控制系統(tǒng), 人們只有生活在一定的溫度環(huán)境內(nèi)才能長期感覺舒服,才能保證不中暑不受凍,所以 對(duì)室內(nèi)溫度要求要高。對(duì)于不同地區(qū)空調(diào)要求不同,有的需要升溫,有的需要降溫。 一般都要維持在 2126C。 目前,雖然我國大量生產(chǎn)空調(diào)制冷產(chǎn)品,但由于我國人口眾多,需求量過盛,在 我國的北方地區(qū),還有好多家庭還沒有安裝有效地室內(nèi)溫控系統(tǒng)。溫度不能很好的控 制在一定的范圍內(nèi),夏天室內(nèi)溫度過高,冬天溫度過低,這些均對(duì)人們正常生活帶來 不利的影響,溫度、濕度均達(dá)不到人們的要求。以前溫度控制主要利用機(jī)械通風(fēng)設(shè)備 進(jìn)行室內(nèi)、外空氣的交換來達(dá)到

4、降低室內(nèi)溫度,實(shí)現(xiàn)室內(nèi)溫度適宜人們生活。以前通 風(fēng)設(shè)備的開啟和關(guān)停,均是由人手動(dòng)控制的,即由人們定時(shí)查看室內(nèi)外的溫度、濕度 情況,按要求開關(guān)通風(fēng)設(shè)備,這樣人們的勞動(dòng)強(qiáng)度大,可靠性差,而且消耗人們體力, 勞累成本過高。為此,需要有一種符合機(jī)械溫控要求的低成本的控制器,在溫差和濕 度超過用戶設(shè)定值范圍時(shí),啟動(dòng)制冷通風(fēng)設(shè)備,否則自動(dòng)關(guān)閉制冷通風(fēng)設(shè)備。鑒于目 前大多數(shù)制冷設(shè)備現(xiàn)在狀況,我設(shè)計(jì)了一款基于 MCS51 單片機(jī)的空調(diào)溫度控制系統(tǒng)。 1.2 設(shè)計(jì)任務(wù)與要求 系統(tǒng)要求利用單片機(jī)設(shè)計(jì)一空調(diào)溫度控制器,能夠?qū)崟r(shí)檢測(cè)并顯示室溫,能夠利 用鍵盤設(shè)定溫度,并且和室溫進(jìn)行比較,當(dāng)室溫低于設(shè)定溫度時(shí),系統(tǒng)能夠

5、驅(qū)動(dòng)加熱 系統(tǒng)工作,當(dāng)室溫高于設(shè)定溫度時(shí),系統(tǒng)能夠驅(qū)動(dòng)制冷系統(tǒng)工作,當(dāng)兩者溫度相等時(shí), 不做動(dòng)作。 1 2 硬件電路設(shè)計(jì) 2.1 總體方案設(shè)計(jì) 空調(diào)溫度控制系統(tǒng),主要要完成對(duì)溫度的采集、顯示以及設(shè)定等工作,從而實(shí)現(xiàn) 對(duì)空調(diào)的控制。傳統(tǒng)采用鉑電阻充當(dāng)測(cè)溫器件的方案,雖然其中段測(cè)量線性度好,精 度較高,但是測(cè)量電路的設(shè)計(jì)難度高 ,且測(cè)量電路系統(tǒng)龐大,難于調(diào)試 ,而且成本 相對(duì)較高。鑒于上述原因,本系統(tǒng)采用 DS18B20 充當(dāng)測(cè)溫器件。外部溫度信號(hào)經(jīng) DS18B20 將輸入的模擬信號(hào)轉(zhuǎn)換成 8 位的數(shù)字信號(hào), 通過并 口傳送到單片機(jī)系統(tǒng)( AT89C52) 。單片機(jī)系統(tǒng)將接收的數(shù)字信號(hào)譯碼處理,通

6、過 LCD1602 將溫度顯示出來, 同時(shí)單片機(jī)系統(tǒng)還將完成鍵盤掃描 、按鍵溫度設(shè)定、超溫報(bào)警等程序的處理 ,將處 理的溫度信號(hào)與系統(tǒng)設(shè)定溫度值比較,形成可以控制空調(diào)制冷、制熱與停止工作三種 工作狀態(tài),從而實(shí)現(xiàn)空調(diào)的智能化。另外,鍵盤輸入方面,采用了軟件來修正誤操作 輸入 ,即輸入的溫度范圍必須在系統(tǒng)硬件所確定的范圍內(nèi),直接降低由于誤操作帶來 的風(fēng)險(xiǎn),提高了系統(tǒng)的可靠性 ,體現(xiàn)了人性化的系統(tǒng)設(shè)計(jì)原則。 系統(tǒng)的整體框圖如圖 1 所示: 圖圖1 系統(tǒng)整體框圖系統(tǒng)整體框圖 2 2.2 功能模塊電路設(shè)計(jì) 2.2.1 單片機(jī)的選型 由于本系統(tǒng)只需要單片機(jī)完成矩陣鍵盤檢測(cè)以及處理 DS18B20 送來的溫

7、度數(shù)據(jù)并 送 LCD1602 進(jìn)行顯示對(duì)于 I/O 資源以及處理速度無特殊要求,故選擇 ATMEL 公司生 產(chǎn)的 AT89C52 單片機(jī),AT89C52 增加了在線調(diào)試功能,即程序可以通過 JTAG 接口下 載,調(diào)試和固化,因而該芯片的開發(fā)不再需要昂貴的硬件仿真器,可實(shí)現(xiàn)實(shí)時(shí)仿真, 所有的資源都可以為用戶所使用,可以在線編程或在系統(tǒng)編程,更進(jìn)一步地說,在線 編程或在系統(tǒng)編程是開發(fā)的系統(tǒng)具有了通過網(wǎng)絡(luò)進(jìn)行升級(jí)、維護(hù)的潛在功能。 AT89C52 的性能及特點(diǎn)1: 與 MCS-51 系列單片機(jī)兼容。 片內(nèi)有 8K 可在線重復(fù)編程的快速內(nèi) 存可擦寫存儲(chǔ)器(Flash Memory) 。 存儲(chǔ)器可循環(huán)寫

8、入/擦寫 10000 次以上。 存儲(chǔ)器數(shù)據(jù)保存時(shí)間為 10 年以上。 寬工作電壓范圍:Vcc 可為 2.7V-6.5V。 全靜態(tài)工作:可從 0Hz-24MHz。 程序存儲(chǔ)器具有三級(jí)加密保護(hù)。 256 字節(jié)的內(nèi)部 RAM。 32 條可編程 I/O 口線。 三個(gè) 16 位定時(shí)器/計(jì)數(shù)器。 中斷結(jié)構(gòu)具有 5 級(jí)(6 級(jí))中斷源和兩個(gè)優(yōu)下級(jí)。 可編程全雙工串行通訊。 空閑維持低功耗和掉電狀態(tài)保護(hù)存儲(chǔ)數(shù)據(jù)。 AT89C52 引腳圖如圖 2 所示。 3 圖圖 2 AT89C52 引腳圖引腳圖 VCC: +5V 電源輸入 GND:接地 P0 口是一個(gè)雙向 8 位三態(tài) I/O 口,每個(gè)口可獨(dú)立控制。使用時(shí)需外

9、接上拉電阻。 P1 口是一個(gè)準(zhǔn)雙向 8 位 I/O 口,它的功能是單一的,只能用作數(shù)據(jù)的輸入或者輸 出。 P2 口是一個(gè)準(zhǔn)雙向 8 位 I/O 口,輸出時(shí),從 P2.x 端口可輸出 CPU 寫到鎖存器上 的信號(hào)。當(dāng)該接口用做數(shù)據(jù)輸入接口是,應(yīng)先向該位寫 1,然后,讀該位即可讀入輸入 數(shù)據(jù)。 P3 口是具有第二功能的準(zhǔn)雙向 8 位 I/O 口。 ALE/PROG:地址所存/編程信號(hào)線。當(dāng) P0 口工作在第二功能時(shí)從該端口可復(fù)用工 作,某時(shí)刻該端口可以送出地址信號(hào) A0A7,而另外的時(shí)刻該端口傳送的是數(shù)據(jù)信號(hào) D0D7。利用 ALE 可以將地址信號(hào) A0A7 鎖存到地址鎖存器。 /VPP:該控制信

10、號(hào)線也具有雙重功能,是允許訪問片外 ROM/編程高電壓引線。EA 4 :程序存儲(chǔ)器允許輸出控制端,常用作片外 ROM 的讀控制信號(hào),低電平有PSEN 效。 RESET:復(fù)位引腳,當(dāng)該端加上超過 24 個(gè)時(shí)鐘周期的高電平時(shí),可是 8051 復(fù)位。 系統(tǒng)復(fù)位電路如圖 2.3 所示。 X1、X2:外接時(shí)鐘引腳。X1 為片內(nèi)振蕩電路的輸入端,X2 為片內(nèi)振蕩電路的輸 出端。 2.2.2 振蕩電路設(shè)計(jì) AT89C52 內(nèi)部有一個(gè)用于構(gòu)成片內(nèi)振蕩器的高增益反相放大器, 振蕩器產(chǎn)生的信 號(hào)送到 CPU, 作為 CPU 的時(shí)鐘信號(hào),驅(qū)動(dòng) CPU 產(chǎn)生執(zhí)行指令功能的機(jī)器周期。引腳 XTAL1 和 XTAL2 是

11、此放大器的輸人端和輸出端。這個(gè)放大器與作為反饋元件的片外 石英晶體或陶瓷諧振器一起可構(gòu)成一個(gè)自激振蕩器, 振蕩電路的連接如圖所示圖 8 所示, 外接石英晶體或陶瓷諧振器以及電容 C1 和 C2 構(gòu)成并聯(lián)諧振電路, 接在放大器的反饋 回路中。對(duì)外接電容 C1 和 C2 的值雖然沒有嚴(yán)格的要求, 但電容的大小多少會(huì)影響振 蕩器頻率的高低、振蕩器的穩(wěn)定性、起振圈內(nèi)部振蕩的接法的快速性和溫度穩(wěn)定性。 外接石英晶體時(shí), C1 和 C2 一般?。?0pF-10pF) ,外接的是石英晶體, 所以,C1、C2 選擇標(biāo)稱值 30pF。 系統(tǒng)振蕩電路如圖 3 所示。 圖圖 3 振蕩電路振蕩電路 2.2.3 復(fù)位電

12、路設(shè)計(jì) 單片機(jī)復(fù)位是使 CPU 和系統(tǒng)中的其他功能部件都處在一個(gè)確定的初始狀態(tài), 并從 這個(gè)狀態(tài)開始工作。無論是在單片機(jī)剛開始接上電源時(shí), 還是斷電后或者發(fā)生故障后都 要復(fù)位。89 系列單片機(jī)的復(fù)位信號(hào)是從 RST 引腳輸人到芯片的施密特觸發(fā)器中的。當(dāng) 系統(tǒng)處于正常工作狀態(tài)時(shí), 且振蕩器穩(wěn)定后, 如果 RST 引腳有一個(gè)高電平并維持 2 個(gè) 機(jī)器周期(24 個(gè)振蕩周期), 則 CPU 就可響應(yīng)并且將系統(tǒng)復(fù)位。復(fù)位分為手動(dòng)復(fù)位和 5 上電復(fù)位。本設(shè)計(jì)系統(tǒng)采用的是上電自動(dòng)復(fù)位。 系統(tǒng)復(fù)位電路如圖 4 所示。 圖圖 4 復(fù)位電路復(fù)位電路 2.2.4 鍵盤接口電路設(shè)計(jì) 獨(dú)立鍵盤與單片機(jī)連接時(shí),每個(gè)按鍵

13、都需要單片機(jī)的一個(gè) I/O 口,若單片機(jī)系統(tǒng) 需要較多按鍵,如果用獨(dú)立按鍵會(huì)占用過多的 I/O 口資源。單片機(jī)系統(tǒng)中 I/O 口資源往 往比較寶貴,當(dāng)用到多個(gè)按鍵時(shí),為了節(jié)省 I/O 口線,一般需使用矩陣鍵盤。本系統(tǒng) 共需使用 16 個(gè)按鍵,故選擇的矩陣鍵盤。鍵盤接口電路如圖 5 所示。44 圖圖 5 鍵盤接口電路鍵盤接口電路 2.2.5 溫度測(cè)量電路設(shè)計(jì) 本系統(tǒng)的溫度測(cè)量電路采用 DS18B20 來實(shí)現(xiàn)。DS18B20 是美國 DALLAS 半 導(dǎo)體公司推出的第一片采用“一線總線”接口的溫度傳感器,它具有微型化、低功耗、 高性能、抗干擾、能力強(qiáng)、易配微處理器等優(yōu)點(diǎn),可直接將溫度轉(zhuǎn)化成串行數(shù)字

14、信 號(hào)供處理器處理。 DS18B20 的性能及特點(diǎn)2: 6 適應(yīng)電壓范圍寬,電壓范圍在,在寄生電源方式下可由數(shù)據(jù)線供電。V5 . 50 . 3 獨(dú)特的單線接口方式,它與微處理器連接時(shí)僅需一條口線即可實(shí)現(xiàn)微處理器與 DS18B20 的雙向通信。 支持多點(diǎn)組網(wǎng)功能,多個(gè) DS18B20 可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)組網(wǎng)多點(diǎn) 測(cè)溫。 在使用中不需要任何外接元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極 管的集成電路里。 測(cè)溫范圍-55+125,在-10+85時(shí)精度為0.5。 可編程分辨率為 912 位,對(duì)應(yīng)的可分辨溫度分別為 0.5,0.25,0.125 和 0.0625,可實(shí)現(xiàn)高精度測(cè)溫。 在 9

15、 位分辨率時(shí),最多在 93.75ms 內(nèi)把溫度轉(zhuǎn)換為數(shù)字;12 位分辨率時(shí),最多 在 750ms 內(nèi)把溫度值轉(zhuǎn)換為數(shù)字。 測(cè)量結(jié)果直接輸出數(shù)字溫度信號(hào),以“一線總線”串行傳送給 CPU,同時(shí)可傳送 CRC 校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力。 負(fù)壓特性。電源極性接反時(shí),芯片不會(huì)因發(fā)熱而燒毀,但不能正常工作。 系統(tǒng)溫度測(cè)量電路如圖 6 所示。 圖圖 6 溫度測(cè)量電路溫度測(cè)量電路 2.2.6 系統(tǒng)顯示電路設(shè)計(jì) 本系統(tǒng)采用 LCD1602 作為系統(tǒng)的顯示器件,1602 字符型液晶是一種專門用來顯示 字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊,能分兩行顯示,它有若干個(gè)或者等75115 點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字

16、符位都可以顯示一個(gè)字符。 1602 型液晶接口信號(hào)如下: 1 腳 VSS:電源地。 2 腳 VDD:電源正極。 3 腳 VO:液晶顯示對(duì)比度調(diào)節(jié)端。 4 腳 RS:數(shù)據(jù)/命令選擇端(H/L)。 7 5 腳 R/:讀寫選擇端(H/L) 。W 6 腳 E:使能信號(hào)。 腳:數(shù)據(jù)口。147D7D0 15 腳 BL1:背光電源正極。 16 腳 BL2:背光電源負(fù)極。 系統(tǒng)顯示電路如圖 7 所示。 圖圖 7 系統(tǒng)顯示電路系統(tǒng)顯示電路 2.2.7 輸出控制電路設(shè)計(jì) 系統(tǒng)要求在當(dāng)前室溫低于設(shè)定溫度時(shí),能夠自動(dòng)驅(qū)動(dòng)加熱系統(tǒng)工作 ;在當(dāng)前室溫 高于設(shè)定溫度時(shí)能夠自動(dòng)驅(qū)動(dòng)制冷系統(tǒng)工作。本系統(tǒng)在復(fù)位后即置 P26 腳

17、和 P27 腳 為低電平,在當(dāng)前室溫低于設(shè)定溫度時(shí),通過置 P27 腳為高電平來驅(qū)動(dòng)后級(jí)加熱系統(tǒng), 本系統(tǒng)采用紅色 LED 來代替加熱系統(tǒng);在當(dāng)前室溫高于設(shè)定溫度時(shí),通過置 P26 腳 高電平來驅(qū)動(dòng)后級(jí)制冷系統(tǒng),本系統(tǒng)采用藍(lán)色 LED 來代替制冷系統(tǒng)。 輸出控制電路如圖 8 所示。 圖圖 8 輸出控制電路輸出控制電路 8 2.3 總電路設(shè)計(jì) 系統(tǒng)總電路圖如圖 9 所示。 圖圖 9 系統(tǒng)總電路圖系統(tǒng)總電路圖 2.4 系統(tǒng)所用元器件 本系統(tǒng)所用的元器件清單如表 1 所示。 表表 1 系統(tǒng)所用元器件系統(tǒng)所用元器件 元器件名稱元器件名稱數(shù)量數(shù)量 點(diǎn)觸式開關(guān)16 30pF 瓷片電容2 10uF 電解電容

18、1 藍(lán)色 LED1 紅色 RED1 5V 電源插座1 自鎖開關(guān)1 LCD16021 1/4W10K 電阻3 9 10K 可調(diào)電阻1 AT89C521 DS18B201 12MHz 晶振1 3 軟件系統(tǒng)設(shè)計(jì) 3.1 軟件系統(tǒng)總體方案設(shè)計(jì) 系統(tǒng)軟件由主程序模塊、測(cè)溫程序模塊、鍵盤掃描程序模塊以及液晶驅(qū)動(dòng)程序模 塊組成。 3.2 軟件流程圖設(shè)計(jì) 系統(tǒng)軟件流程圖如圖 10 所示。 10 圖圖 10 系統(tǒng)軟件流程圖系統(tǒng)軟件流程圖 4 系統(tǒng)調(diào)試系統(tǒng)調(diào)試 程序在 Keil uVision4 環(huán)境下編寫,編譯通過后生成.hex 文件加載到 Protuse 下可正 常運(yùn)行。程序默認(rèn)溫度為 21.0,Protus

19、e 下設(shè)定 DS18B20 的溫度也為 21.0,故開始 11 運(yùn)行時(shí)兩路 LED 燈都不點(diǎn)亮。當(dāng)利用鍵盤設(shè)定的溫度高于 DS18B20 默認(rèn)的 21.0時(shí), 紅色 LED 燈被點(diǎn)亮;當(dāng)設(shè)定的溫度低于 DS18B20 默認(rèn)的 21.0時(shí),藍(lán)色 LED 燈被點(diǎn) 亮。 附上仿真圖 當(dāng)設(shè)定的溫度高于 DS18B20 默認(rèn)的 21.0時(shí),紅色 LED 燈被點(diǎn)亮,如圖 11 所示。 圖圖 11 紅色紅色 LED 燈點(diǎn)亮燈點(diǎn)亮 當(dāng)設(shè)定的溫度低于 DS18B20 默認(rèn)的 21.0時(shí),藍(lán)色 LED 燈被點(diǎn)亮。如圖 12 所示。 12 圖圖 12 藍(lán)色藍(lán)色 LED 燈點(diǎn)亮燈點(diǎn)亮 13 5 總結(jié)總結(jié) 5.1 本系

20、統(tǒng)存在的問題及改進(jìn)措施 本系統(tǒng)所設(shè)計(jì)的空調(diào)溫度控制器僅對(duì)溫度部分實(shí)現(xiàn)了控制,但對(duì)于實(shí)際空調(diào)中的 模式選擇以及定時(shí)運(yùn)行等工作過程還無法實(shí)現(xiàn),希望在以后的學(xué)習(xí)研究中能夠解決這 些問題。 5.2 心得體會(huì) 本次課程設(shè)計(jì)從獲得題目開始便著手準(zhǔn)備,首先分析系統(tǒng)要求,在 Protuse 里完成 硬件原理圖的搭建,然后開始在 Keil 環(huán)境下著手編寫各部分程序,調(diào)試相應(yīng)的程序, 在調(diào)試通過后再下載到 Protuse 里進(jìn)行仿真,發(fā)現(xiàn)問題后再返回 Keil 下修改相應(yīng)程序, 直到最后仿真通過,最后在 Altium Designer 6 中畫出電路原理圖。在本次課程設(shè)計(jì)過 程中得到了老師以及許多同學(xué)的幫助,感謝

21、那些提供過幫助的老師和同學(xué)。 14 參考文獻(xiàn) 1 郭文川主編. 單片機(jī)原理與接口技術(shù). 北京:中國農(nóng)業(yè)出版社,2007. 2 郭天祥主編. 51 單片機(jī) C 語言教程. 北京:電子工業(yè)出版社,2009. 15 附錄 1:系統(tǒng)的源程序清單 global.h: ifndef _global_H #define _global_H #include #define uchar unsigned char/宏定義 #define uint unsigned int #defineK_UP 0X20/定義鍵值 #defineK_DOWN 0X21 #defineK_CLEAR 0X24 #defineK

22、_OK 0X25 #defineK_ONE 0X30 #defineK_FOUR 0X31 #defineK_SEVEN 0X32 #defineK_POINT 0X33 #defineK_TWO 0X34 #defineK_FIVE 0X43 #defineK_EIGHT0X36 #defineK_ZERO0X37 #defineK_THREE0X38 16 #defineK_SIX 0X40 #defineK_NINE0X41 #defineK_SET 0X42 extern float TEMP_NOW; extern float TEMP_SET; extern uint T_Coun

23、t; extern uint S_Count; extern uint P_Count; extern uint N_Count; extern uint M_Count; extern uchar Current_Temp_Display_Buffer; extern uchar set_Temp_Display_Buffer; extern int sel; sbit lcden=P21;/液晶使能 sbit lcdrs=P20;/液晶數(shù)據(jù)/命令選擇端 sbit DQ =P22;/DS18B20 數(shù)據(jù)端 sbit XX =P25;/讀寫選擇端 sbit cold =P26;/輸出信號(hào) sb

24、it warm =P27;/輸出信號(hào) #endif main.c: #include #include“global.h“ #include“key.h“ #include“18B20.h“ #include“LCD.h“ /全局變量/ float TEMP_NOW=0.0; float TEMP_SET=21.0; uint T_Count=0; uint S_Count=0; uint P_Count=0; uint N_Count=0; 17 uint M_Count=1; uchar Current_Temp_Display_Buffer=“ NOW:-23.5 “; uchar se

25、t_Temp_Display_Buffer= “ SET: 21.0 “; int sel=0; void Comparison(); /定時(shí)/ void timer0_init(void) TMOD =0 x00 ; /設(shè)置定時(shí)器 0 的工作方式 TH0 = (8192-5000)/32;/單片機(jī)晶振為 12MHz,機(jī)器周期為 1us,t=5ms, /N=5000/1=5000 TL0 = (8192-5000)%32; IE =0 x82; TR0=1; void timer0() interrupt 1 TH0 = (8192-5000)/32; TL0 = (8192-5000)%32

26、; if(+T_Count = 100) /100 為 0.5s TR0=0; Read_Temperature(); Display_Temperature() ; T_Count=0; if(+P_Count = 6) N_Count=1; TR0=1; /主程序/ void main() 18 init_lcd(); Init_DS18B20(); timer0_init(); while(1) Print(); set_num(); Comparison(); void Comparison() if(N_Count warm=0; if(TEMP_NOW=TEMP_SET) cold

27、=0; warm=0; 18B20.h: #ifndef _18B20_H 19 #define _18B20_H #include“global.h“ extern uchar Init_DS18B20(); extern void Read_Temperature(); extern void Display_Temperature(); #endif 18B20.c: #include“global.h“ #include “intrins.h“ #define delayNOP() _nop_();_nop_();_nop_();_nop_(); uchar code Temperat

28、ure_Char8 = 0 x0c,0 x12,0 x12,0 x0c,0 x00,0 x00,0 x00,0 x00; uchar code df_Table=0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9; uchar CurrentT = 0; uchar Temp_Value=0 x00,0 x00; uchar Display_Digit=0,0,0,0; bit DS18B20_IS_OK = 1; void Delay_INI(uint x) while(-x); void Delay(unsigned int n) do _nop_();_nop_(); _no

29、p_();_nop_(); _nop_();_nop_(); _nop_();_nop_(); _nop_(); 20 n-; while(n); uchar Init_DS18B20() uchar status; DQ = 1; Delay_INI(8); DQ = 0; Delay_INI(90); DQ = 1; Delay_INI(8); status=DQ; Delay_INI(100); DQ = 1; return status; uchar ReadOneByte() uchar i,dat=0; DQ = 1; _nop_(); for(i=0;i= 1; DQ = 1;

30、_nop_(); _nop_(); if(DQ) dat |= 0X80; Delay(30); 21 DQ = 1; return dat; void WriteOneByte(uchar dat) uchar i; for(i=0;i= 1; void Read_Temperature() if(Init_DS18B20()=1) DS18B20_IS_OK=0; else WriteOneByte(0 xcc); WriteOneByte(0 x44); Init_DS18B20(); WriteOneByte(0 xcc); WriteOneByte(0 xbe); Temp_Valu

31、e0 = ReadOneByte(); Temp_Value1 = ReadOneByte(); DS18B20_IS_OK=1; void Display_Temperature() 22 uchar t = 150, ng = 0; if(Temp_Value1 Temp_Value0 = Temp_Value0+1; if(Temp_Value0=0 x00) Temp_Value1+; ng = 1; Display_Digit0 = df_TableTemp_Value0 CurrentT = (Temp_Value0 extern void set_num(); extern vo

32、id set(); #endif KEY.c: #include #include #include #include“18B20.h“ uchar code KeyCodeTable= 0 x11,0 x12,0 x14,0 x18,0 x21,0 x22,0 x24,0 x28,0 x41,0 x42,0 x44,0 x48,0 x81,0 x82,0 x84,0 x88 ; void Delay_key() uchar i; for(i=0;i47) extern void write_date(uchar date); extern void init_lcd(); extern vo

33、id Print(); #endif LCD.c: #include“global.h“ void delay1(uint z) /延時(shí)函數(shù) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); void write_com(uchar com) /寫命令函數(shù) lcdrs=0; /選擇寫命令模式 P1=com; /將要寫的命令字送到數(shù)據(jù)總線上 delay1(5); /稍作延時(shí)以待數(shù)據(jù)穩(wěn)定 lcden=1; /使能端給一高脈沖,因?yàn)槌跏蓟瘮?shù)中已經(jīng)將 lcden 置零 delay1(5); /稍作延時(shí) lcden=0; /將使能端置 0 完成高脈沖 void wr

34、ite_date(uchar date) /寫數(shù)據(jù)函數(shù) lcdrs=1; /選擇寫數(shù)據(jù)模式 P1=date; delay1(5); lcden=1; delay1(5); lcden=0; 38 void init_lcd() /初始化函數(shù) lcden=0; write_com(0 x38); /設(shè)置 16*2 顯示,5*7 點(diǎn)陣,8 位數(shù)據(jù)接口 write_com(0 x0c); /設(shè)置開顯示,不顯示光標(biāo) write_com(0 x06); /寫一個(gè)字符后地址指針加 1 write_com(0 x01); /顯示清 0,數(shù)據(jù)指針清 0 void Print() uchar num; write_com(0 x80); for(num=0;num15;num+) write_date(Current_Temp_Display_Buffernum); write_com(0 x80+0 x40); for(num=0;num13;num+) write_date(set_Temp_Display_Buffernum); 39 40 附錄 2:系統(tǒng)的 PCB 圖

展開閱讀全文
溫馨提示:
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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!