基于單片機(jī)的空調(diào)溫度控制器設(shè)計_畢業(yè)設(shè)計.doc
《基于單片機(jī)的空調(diào)溫度控制器設(shè)計_畢業(yè)設(shè)計.doc》由會員分享,可在線閱讀,更多相關(guān)《基于單片機(jī)的空調(diào)溫度控制器設(shè)計_畢業(yè)設(shè)計.doc(43頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、接口 技術(shù)課程設(shè)計報告 基于單片機(jī)的空調(diào)溫度控制器設(shè)計基于單片機(jī)的空調(diào)溫度控制器設(shè)計 摘 要 設(shè)計了基于 AT89C52 的高精度家用空調(diào)溫度控制系統(tǒng),系統(tǒng)硬件主要由電源電路、 溫度采集電路(DS18B20) 、鍵盤、顯示電路、輸出控制電路及其他輔助電路組成;軟 件采用 8051C 語言編程;該系統(tǒng)可以完成溫度的顯示、溫度的設(shè)定、空調(diào)的控制等多 項功能。 關(guān)鍵詞:單片機(jī);DS18B20;溫度檢測;顯示 目錄目錄 1 設(shè)計目的及要求.1 1.1 設(shè)計目的和意義.1 1.2 設(shè)計任務(wù)與要求.1 2 硬件電路設(shè)計.2 2.1 總體方案設(shè)計.2 2.2 功能模塊電路設(shè)計.3 2.2.1 單片機(jī)的選型3
2、 2.2.2 振蕩電路設(shè)計5 2.2.3 復(fù)位電路設(shè)計5 2.2.4 鍵盤接口電路設(shè)計6 2.2.5 溫度測量電路設(shè)計6 2.2.6 系統(tǒng)顯示電路設(shè)計7 2.2.7 輸出控制電路設(shè)計8 2.3 總電路設(shè)計.8 2.4 系統(tǒng)所用元器件.9 3 軟件系統(tǒng)設(shè)計.10 3.1 軟件系統(tǒng)總體方案設(shè)計.10 3.2 軟件流程圖設(shè)計.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è)計目的及要求 1.1 設(shè)計目的和意義 21 世紀(jì)的人們生活質(zhì)量不斷提高,同時也對高科技電子產(chǎn)業(yè)提出了
3、更高的要求, 為了使人們生活更人性化、智能化。我設(shè)計了這一基于單片機(jī)的空調(diào)溫度控制系統(tǒng), 人們只有生活在一定的溫度環(huán)境內(nèi)才能長期感覺舒服,才能保證不中暑不受凍,所以 對室內(nèi)溫度要求要高。對于不同地區(qū)空調(diào)要求不同,有的需要升溫,有的需要降溫。 一般都要維持在 2126C。 目前,雖然我國大量生產(chǎn)空調(diào)制冷產(chǎn)品,但由于我國人口眾多,需求量過盛,在 我國的北方地區(qū),還有好多家庭還沒有安裝有效地室內(nèi)溫控系統(tǒng)。溫度不能很好的控 制在一定的范圍內(nèi),夏天室內(nèi)溫度過高,冬天溫度過低,這些均對人們正常生活帶來 不利的影響,溫度、濕度均達(dá)不到人們的要求。以前溫度控制主要利用機(jī)械通風(fēng)設(shè)備 進(jìn)行室內(nèi)、外空氣的交換來達(dá)到
4、降低室內(nèi)溫度,實現(xiàn)室內(nèi)溫度適宜人們生活。以前通 風(fēng)設(shè)備的開啟和關(guān)停,均是由人手動控制的,即由人們定時查看室內(nèi)外的溫度、濕度 情況,按要求開關(guān)通風(fēng)設(shè)備,這樣人們的勞動強(qiáng)度大,可靠性差,而且消耗人們體力, 勞累成本過高。為此,需要有一種符合機(jī)械溫控要求的低成本的控制器,在溫差和濕 度超過用戶設(shè)定值范圍時,啟動制冷通風(fēng)設(shè)備,否則自動關(guān)閉制冷通風(fēng)設(shè)備。鑒于目 前大多數(shù)制冷設(shè)備現(xiàn)在狀況,我設(shè)計了一款基于 MCS51 單片機(jī)的空調(diào)溫度控制系統(tǒng)。 1.2 設(shè)計任務(wù)與要求 系統(tǒng)要求利用單片機(jī)設(shè)計一空調(diào)溫度控制器,能夠?qū)崟r檢測并顯示室溫,能夠利 用鍵盤設(shè)定溫度,并且和室溫進(jìn)行比較,當(dāng)室溫低于設(shè)定溫度時,系統(tǒng)能夠
5、驅(qū)動加熱 系統(tǒng)工作,當(dāng)室溫高于設(shè)定溫度時,系統(tǒng)能夠驅(qū)動制冷系統(tǒng)工作,當(dāng)兩者溫度相等時, 不做動作。 1 2 硬件電路設(shè)計 2.1 總體方案設(shè)計 空調(diào)溫度控制系統(tǒng),主要要完成對溫度的采集、顯示以及設(shè)定等工作,從而實現(xiàn) 對空調(diào)的控制。傳統(tǒng)采用鉑電阻充當(dāng)測溫器件的方案,雖然其中段測量線性度好,精 度較高,但是測量電路的設(shè)計難度高 ,且測量電路系統(tǒng)龐大,難于調(diào)試 ,而且成本 相對較高。鑒于上述原因,本系統(tǒng)采用 DS18B20 充當(dāng)測溫器件。外部溫度信號經(jīng) DS18B20 將輸入的模擬信號轉(zhuǎn)換成 8 位的數(shù)字信號, 通過并 口傳送到單片機(jī)系統(tǒng)( AT89C52) 。單片機(jī)系統(tǒng)將接收的數(shù)字信號譯碼處理,通
6、過 LCD1602 將溫度顯示出來, 同時單片機(jī)系統(tǒng)還將完成鍵盤掃描 、按鍵溫度設(shè)定、超溫報警等程序的處理 ,將處 理的溫度信號與系統(tǒng)設(shè)定溫度值比較,形成可以控制空調(diào)制冷、制熱與停止工作三種 工作狀態(tài),從而實現(xiàn)空調(diào)的智能化。另外,鍵盤輸入方面,采用了軟件來修正誤操作 輸入 ,即輸入的溫度范圍必須在系統(tǒng)硬件所確定的范圍內(nèi),直接降低由于誤操作帶來 的風(fēng)險,提高了系統(tǒng)的可靠性 ,體現(xiàn)了人性化的系統(tǒng)設(shè)計原則。 系統(tǒng)的整體框圖如圖 1 所示: 圖圖1 系統(tǒng)整體框圖系統(tǒng)整體框圖 2 2.2 功能模塊電路設(shè)計 2.2.1 單片機(jī)的選型 由于本系統(tǒng)只需要單片機(jī)完成矩陣鍵盤檢測以及處理 DS18B20 送來的溫
7、度數(shù)據(jù)并 送 LCD1602 進(jìn)行顯示對于 I/O 資源以及處理速度無特殊要求,故選擇 ATMEL 公司生 產(chǎn)的 AT89C52 單片機(jī),AT89C52 增加了在線調(diào)試功能,即程序可以通過 JTAG 接口下 載,調(diào)試和固化,因而該芯片的開發(fā)不再需要昂貴的硬件仿真器,可實現(xiàn)實時仿真, 所有的資源都可以為用戶所使用,可以在線編程或在系統(tǒng)編程,更進(jìn)一步地說,在線 編程或在系統(tǒng)編程是開發(fā)的系統(tǒng)具有了通過網(wǎng)絡(luò)進(jìn)行升級、維護(hù)的潛在功能。 AT89C52 的性能及特點1: 與 MCS-51 系列單片機(jī)兼容。 片內(nèi)有 8K 可在線重復(fù)編程的快速內(nèi) 存可擦寫存儲器(Flash Memory) 。 存儲器可循環(huán)寫
8、入/擦寫 10000 次以上。 存儲器數(shù)據(jù)保存時間為 10 年以上。 寬工作電壓范圍:Vcc 可為 2.7V-6.5V。 全靜態(tài)工作:可從 0Hz-24MHz。 程序存儲器具有三級加密保護(hù)。 256 字節(jié)的內(nèi)部 RAM。 32 條可編程 I/O 口線。 三個 16 位定時器/計數(shù)器。 中斷結(jié)構(gòu)具有 5 級(6 級)中斷源和兩個優(yōu)下級。 可編程全雙工串行通訊。 空閑維持低功耗和掉電狀態(tài)保護(hù)存儲數(shù)據(jù)。 AT89C52 引腳圖如圖 2 所示。 3 圖圖 2 AT89C52 引腳圖引腳圖 VCC: +5V 電源輸入 GND:接地 P0 口是一個雙向 8 位三態(tài) I/O 口,每個口可獨立控制。使用時需外
9、接上拉電阻。 P1 口是一個準(zhǔn)雙向 8 位 I/O 口,它的功能是單一的,只能用作數(shù)據(jù)的輸入或者輸 出。 P2 口是一個準(zhǔn)雙向 8 位 I/O 口,輸出時,從 P2.x 端口可輸出 CPU 寫到鎖存器上 的信號。當(dāng)該接口用做數(shù)據(jù)輸入接口是,應(yīng)先向該位寫 1,然后,讀該位即可讀入輸入 數(shù)據(jù)。 P3 口是具有第二功能的準(zhǔn)雙向 8 位 I/O 口。 ALE/PROG:地址所存/編程信號線。當(dāng) P0 口工作在第二功能時從該端口可復(fù)用工 作,某時刻該端口可以送出地址信號 A0A7,而另外的時刻該端口傳送的是數(shù)據(jù)信號 D0D7。利用 ALE 可以將地址信號 A0A7 鎖存到地址鎖存器。 /VPP:該控制信
10、號線也具有雙重功能,是允許訪問片外 ROM/編程高電壓引線。EA 4 :程序存儲器允許輸出控制端,常用作片外 ROM 的讀控制信號,低電平有PSEN 效。 RESET:復(fù)位引腳,當(dāng)該端加上超過 24 個時鐘周期的高電平時,可是 8051 復(fù)位。 系統(tǒng)復(fù)位電路如圖 2.3 所示。 X1、X2:外接時鐘引腳。X1 為片內(nèi)振蕩電路的輸入端,X2 為片內(nèi)振蕩電路的輸 出端。 2.2.2 振蕩電路設(shè)計 AT89C52 內(nèi)部有一個用于構(gòu)成片內(nèi)振蕩器的高增益反相放大器, 振蕩器產(chǎn)生的信 號送到 CPU, 作為 CPU 的時鐘信號,驅(qū)動 CPU 產(chǎn)生執(zhí)行指令功能的機(jī)器周期。引腳 XTAL1 和 XTAL2 是
11、此放大器的輸人端和輸出端。這個放大器與作為反饋元件的片外 石英晶體或陶瓷諧振器一起可構(gòu)成一個自激振蕩器, 振蕩電路的連接如圖所示圖 8 所示, 外接石英晶體或陶瓷諧振器以及電容 C1 和 C2 構(gòu)成并聯(lián)諧振電路, 接在放大器的反饋 回路中。對外接電容 C1 和 C2 的值雖然沒有嚴(yán)格的要求, 但電容的大小多少會影響振 蕩器頻率的高低、振蕩器的穩(wěn)定性、起振圈內(nèi)部振蕩的接法的快速性和溫度穩(wěn)定性。 外接石英晶體時, C1 和 C2 一般?。?0pF-10pF) ,外接的是石英晶體, 所以,C1、C2 選擇標(biāo)稱值 30pF。 系統(tǒng)振蕩電路如圖 3 所示。 圖圖 3 振蕩電路振蕩電路 2.2.3 復(fù)位電
12、路設(shè)計 單片機(jī)復(fù)位是使 CPU 和系統(tǒng)中的其他功能部件都處在一個確定的初始狀態(tài), 并從 這個狀態(tài)開始工作。無論是在單片機(jī)剛開始接上電源時, 還是斷電后或者發(fā)生故障后都 要復(fù)位。89 系列單片機(jī)的復(fù)位信號是從 RST 引腳輸人到芯片的施密特觸發(fā)器中的。當(dāng) 系統(tǒng)處于正常工作狀態(tài)時, 且振蕩器穩(wěn)定后, 如果 RST 引腳有一個高電平并維持 2 個 機(jī)器周期(24 個振蕩周期), 則 CPU 就可響應(yīng)并且將系統(tǒng)復(fù)位。復(fù)位分為手動復(fù)位和 5 上電復(fù)位。本設(shè)計系統(tǒng)采用的是上電自動復(fù)位。 系統(tǒng)復(fù)位電路如圖 4 所示。 圖圖 4 復(fù)位電路復(fù)位電路 2.2.4 鍵盤接口電路設(shè)計 獨立鍵盤與單片機(jī)連接時,每個按鍵
13、都需要單片機(jī)的一個 I/O 口,若單片機(jī)系統(tǒng) 需要較多按鍵,如果用獨立按鍵會占用過多的 I/O 口資源。單片機(jī)系統(tǒng)中 I/O 口資源往 往比較寶貴,當(dāng)用到多個按鍵時,為了節(jié)省 I/O 口線,一般需使用矩陣鍵盤。本系統(tǒng) 共需使用 16 個按鍵,故選擇的矩陣鍵盤。鍵盤接口電路如圖 5 所示。44 圖圖 5 鍵盤接口電路鍵盤接口電路 2.2.5 溫度測量電路設(shè)計 本系統(tǒng)的溫度測量電路采用 DS18B20 來實現(xiàn)。DS18B20 是美國 DALLAS 半 導(dǎo)體公司推出的第一片采用“一線總線”接口的溫度傳感器,它具有微型化、低功耗、 高性能、抗干擾、能力強(qiáng)、易配微處理器等優(yōu)點,可直接將溫度轉(zhuǎn)化成串行數(shù)字
14、信 號供處理器處理。 DS18B20 的性能及特點2: 6 適應(yīng)電壓范圍寬,電壓范圍在,在寄生電源方式下可由數(shù)據(jù)線供電。V5 . 50 . 3 獨特的單線接口方式,它與微處理器連接時僅需一條口線即可實現(xiàn)微處理器與 DS18B20 的雙向通信。 支持多點組網(wǎng)功能,多個 DS18B20 可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點 測溫。 在使用中不需要任何外接元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極 管的集成電路里。 測溫范圍-55+125,在-10+85時精度為0.5。 可編程分辨率為 912 位,對應(yīng)的可分辨溫度分別為 0.5,0.25,0.125 和 0.0625,可實現(xiàn)高精度測溫。 在 9
15、 位分辨率時,最多在 93.75ms 內(nèi)把溫度轉(zhuǎn)換為數(shù)字;12 位分辨率時,最多 在 750ms 內(nèi)把溫度值轉(zhuǎn)換為數(shù)字。 測量結(jié)果直接輸出數(shù)字溫度信號,以“一線總線”串行傳送給 CPU,同時可傳送 CRC 校驗碼,具有極強(qiáng)的抗干擾糾錯能力。 負(fù)壓特性。電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。 系統(tǒng)溫度測量電路如圖 6 所示。 圖圖 6 溫度測量電路溫度測量電路 2.2.6 系統(tǒng)顯示電路設(shè)計 本系統(tǒng)采用 LCD1602 作為系統(tǒng)的顯示器件,1602 字符型液晶是一種專門用來顯示 字母、數(shù)字、符號等的點陣型液晶模塊,能分兩行顯示,它有若干個或者等75115 點陣字符位組成,每個點陣字
16、符位都可以顯示一個字符。 1602 型液晶接口信號如下: 1 腳 VSS:電源地。 2 腳 VDD:電源正極。 3 腳 VO:液晶顯示對比度調(diào)節(jié)端。 4 腳 RS:數(shù)據(jù)/命令選擇端(H/L)。 7 5 腳 R/:讀寫選擇端(H/L) 。W 6 腳 E:使能信號。 腳:數(shù)據(jù)口。147D7D0 15 腳 BL1:背光電源正極。 16 腳 BL2:背光電源負(fù)極。 系統(tǒng)顯示電路如圖 7 所示。 圖圖 7 系統(tǒng)顯示電路系統(tǒng)顯示電路 2.2.7 輸出控制電路設(shè)計 系統(tǒng)要求在當(dāng)前室溫低于設(shè)定溫度時,能夠自動驅(qū)動加熱系統(tǒng)工作 ;在當(dāng)前室溫 高于設(shè)定溫度時能夠自動驅(qū)動制冷系統(tǒng)工作。本系統(tǒng)在復(fù)位后即置 P26 腳
17、和 P27 腳 為低電平,在當(dāng)前室溫低于設(shè)定溫度時,通過置 P27 腳為高電平來驅(qū)動后級加熱系統(tǒng), 本系統(tǒng)采用紅色 LED 來代替加熱系統(tǒng);在當(dāng)前室溫高于設(shè)定溫度時,通過置 P26 腳 高電平來驅(qū)動后級制冷系統(tǒng),本系統(tǒng)采用藍(lán)色 LED 來代替制冷系統(tǒng)。 輸出控制電路如圖 8 所示。 圖圖 8 輸出控制電路輸出控制電路 8 2.3 總電路設(shè)計 系統(tǒng)總電路圖如圖 9 所示。 圖圖 9 系統(tǒng)總電路圖系統(tǒng)總電路圖 2.4 系統(tǒng)所用元器件 本系統(tǒng)所用的元器件清單如表 1 所示。 表表 1 系統(tǒng)所用元器件系統(tǒng)所用元器件 元器件名稱元器件名稱數(shù)量數(shù)量 點觸式開關(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è)計 3.1 軟件系統(tǒng)總體方案設(shè)計 系統(tǒng)軟件由主程序模塊、測溫程序模塊、鍵盤掃描程序模塊以及液晶驅(qū)動程序模 塊組成。 3.2 軟件流程圖設(shè)計 系統(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)行時兩路 LED 燈都不點亮。當(dāng)利用鍵盤設(shè)定的溫度高于 DS18B20 默認(rèn)的 21.0時, 紅色 LED 燈被點亮;當(dāng)設(shè)定的溫度低于 DS18B20 默認(rèn)的 21.0時,藍(lán)色 LED 燈被點 亮。 附上仿真圖 當(dāng)設(shè)定的溫度高于 DS18B20 默認(rèn)的 21.0時,紅色 LED 燈被點亮,如圖 11 所示。 圖圖 11 紅色紅色 LED 燈點亮燈點亮 當(dāng)設(shè)定的溫度低于 DS18B20 默認(rèn)的 21.0時,藍(lán)色 LED 燈被點亮。如圖 12 所示。 12 圖圖 12 藍(lán)色藍(lán)色 LED 燈點亮燈點亮 13 5 總結(jié)總結(jié) 5.1 本系
20、統(tǒng)存在的問題及改進(jìn)措施 本系統(tǒng)所設(shè)計的空調(diào)溫度控制器僅對溫度部分實現(xiàn)了控制,但對于實際空調(diào)中的 模式選擇以及定時運(yùn)行等工作過程還無法實現(xiàn),希望在以后的學(xué)習(xí)研究中能夠解決這 些問題。 5.2 心得體會 本次課程設(shè)計從獲得題目開始便著手準(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è)計過 程中得到了老師以及許多同學(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;/輸出信號 sb
24、it warm =P27;/輸出信號 #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(); /定時/ void timer0_init(void) TMOD =0 x00 ; /設(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ù) 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ù)據(jù)穩(wěn)定 lcden=1; /使能端給一高脈沖,因為初始化函數(shù)中已經(jīng)將 lcden 置零 delay1(5); /稍作延時 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 點陣,8 位數(shù)據(jù)接口 write_com(0 x0c); /設(shè)置開顯示,不顯示光標(biāo) write_com(0 x06); /寫一個字符后地址指針加 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等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 六級上冊科學(xué)ppt課件-誰選擇了它們-教科版
- 護(hù)理核心制度培訓(xùn)一_圖文課件
- 部編《池子與河流》課件
- SWOT分析法(非常全面)課件
- 主題班會我的成長目標(biāo)課件
- 城市交通擁堵及治理總結(jié)課件
- 輸血相關(guān)性急性肺損傷課件
- 議論文的謀篇布局與論點的提出ppt課件
- 六級上冊科學(xué)ppt課件-地球的近鄰——月球-冀人版
- 疾病預(yù)防、冬季保暖-課件
- 中考英語語法復(fù)習(xí)之狀語從句ppt課件集4
- 《百分?jǐn)?shù)的意義和讀寫》參考ppt課件
- 主題班會堅持就是勝利課件
- 第二章--用人單位對大學(xué)生的要求概況ppt課件
- 教科版六年級科學(xué)上冊第三單元檢測卷(含答案)課件