




已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課程設(shè)計(jì)報(bào)告題 目:_溫度控制系統(tǒng)的設(shè)計(jì)_ 專 業(yè):_電子信息工程_ _年 級(jí): 2011級(jí)_ _ _學(xué) 號(hào):_B110301_學(xué)生姓名: _聯(lián)系電話:_完成日期:2014 年12月緒論隨著社會(huì)的發(fā)展,科技的進(jìn)步,以及測(cè)溫儀器在各個(gè)領(lǐng)域的應(yīng)用,智能化已是現(xiàn)代溫度控制系統(tǒng)發(fā)展的主流方向。特別是近年來(lái),溫度控制系統(tǒng)已應(yīng)用到人們生活的各個(gè)方面,但溫度控制一直是一個(gè)未開發(fā)的領(lǐng)域,卻又是與人們息息相關(guān)的一個(gè)實(shí)際問(wèn)題。針對(duì)這種實(shí)際情況,設(shè)計(jì)一個(gè)溫度控制系統(tǒng),具有廣泛的應(yīng)用前景與實(shí)際意義。溫度是科學(xué)技術(shù)中最基本的物理量之一,物理、化學(xué)、生物等學(xué)科都離不開溫度。在工業(yè)生產(chǎn)和實(shí)驗(yàn)研究中,像電力、化工、石油、冶金、航空航天、機(jī)械制造、糧食存儲(chǔ)、酒類生產(chǎn)等領(lǐng)域內(nèi),溫度常常是表征對(duì)象和過(guò)程狀態(tài)的最重要的參數(shù)之一。比如,發(fā)電廠鍋爐的溫度必須控制在一定的范圍之內(nèi);許多化學(xué)反應(yīng)的工藝過(guò)程必須在適當(dāng)?shù)臏囟认虏拍苷_M(jìn)行;煉油過(guò)程中,原油必須在不同的溫度和壓力條件下進(jìn)行分餾才能得到汽油、柴油、煤油等產(chǎn)品。沒有合適的溫度環(huán)境,許多電子設(shè)備就不能正常工作,糧倉(cāng)的儲(chǔ)糧就會(huì)變質(zhì)霉?fàn)€,酒類的品質(zhì)就沒有保障。因此,各行各業(yè)對(duì)溫度控制的要求都越來(lái)越高??梢?,溫度的測(cè)量和控制是非常重要的。單片機(jī)在電子產(chǎn)品中的應(yīng)用已經(jīng)越來(lái)越廣泛,在很多的電子產(chǎn)品中也用到了溫度檢測(cè)和溫度控制。隨著溫度控制器應(yīng)用范圍的日益廣泛和多樣,各種適用于不同場(chǎng)合的智能溫度控制器應(yīng)運(yùn)而生。單片機(jī)的應(yīng)用正在不斷深入,同時(shí)帶動(dòng)傳統(tǒng)控制檢測(cè)技術(shù)日益更新。在實(shí)時(shí)檢測(cè)和自動(dòng)控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往作為一個(gè)核心部件來(lái)使用,僅單片機(jī)方面知識(shí)是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu)軟硬件結(jié)合,加以完善。而51單片機(jī)是各單片機(jī)種最為典型和最有代表性的一種。本系統(tǒng)是基于MCS51系列單片機(jī)所設(shè)計(jì)的,可以實(shí)現(xiàn)鍵盤按鍵與數(shù)字動(dòng)態(tài)顯示并可以顯示出實(shí)時(shí)溫度。本系統(tǒng)基于單片機(jī)技術(shù)原理,以單片機(jī)芯片AT89C51作為核心控制器,通過(guò)硬件電路的制作以及軟件程序的編制,設(shè)計(jì)制出一個(gè)溫度控制系統(tǒng),包括以下功能:1能設(shè)置需要控制的溫度;2檢測(cè)實(shí)際溫度;3能顯示設(shè)置溫度和實(shí)際溫度;4比較實(shí)際溫度和設(shè)定溫度,判斷是否啟動(dòng)加熱裝置;該溫度系統(tǒng)主要有LCD顯示模塊、LED狀態(tài)燈模塊、鍵盤模塊、溫度檢測(cè)模塊,復(fù)位模塊等部分組成。 2011年1月4日于長(zhǎng)沙 目 錄第一章單片機(jī)溫度控制系統(tǒng)方案及原理簡(jiǎn)介1.1 單片機(jī)溫度控制系統(tǒng)方案 1.2 原理簡(jiǎn)介第二章系統(tǒng)硬件處理方案及原理2.1單片機(jī)控制電路模塊2.2 矩陣鍵盤模塊2.3 LCD液晶顯示模塊2.4 單片機(jī)溫控模塊 第三章系統(tǒng)軟件設(shè)計(jì)3.1 主程序流程3.2 系統(tǒng)軟件設(shè)計(jì)總 結(jié)第一章 單片機(jī)溫度控制系統(tǒng)方案及原理簡(jiǎn)介1.1 單片機(jī)溫度控制系統(tǒng)方案單片機(jī)溫度控制系統(tǒng)是數(shù)控系統(tǒng)的一個(gè)簡(jiǎn)單應(yīng)用。在冶金、化工、建材、機(jī)械、食品、石油等各類工業(yè)中,廣泛使用著加熱爐、熱處理爐、反應(yīng)爐等,因此,溫度是工業(yè)對(duì)象中一個(gè)主要的被控參數(shù)。本單片機(jī)溫度控制系統(tǒng)是以MCS-5l單片機(jī)為控制核心,其系統(tǒng)結(jié)構(gòu)框圖可表示為:系統(tǒng)采用單閉環(huán)形式,其基本控制原理為:將溫度設(shè)定值和溫度采樣值同時(shí)送入控制電路部分,然后經(jīng)過(guò)單片機(jī)運(yùn)算得到輸出控制量,輸出控制量控制其他驅(qū)動(dòng)電路,以此來(lái)對(duì)所要控制的對(duì)象進(jìn)行溫度控制,因此達(dá)到一定的溫度。溫度顯示液晶驅(qū)動(dòng)電路矩陣鍵盤輸入單片機(jī)狀態(tài)指示燈溫度檢測(cè)電路時(shí)鐘電路復(fù)位圖1-1 硬件電路設(shè)計(jì)框圖1.2 原理簡(jiǎn)介 本溫度控制系統(tǒng)共有四個(gè)模塊,分別是單片機(jī)控制系統(tǒng),矩陣鍵盤電路,溫度檢測(cè)電路,液晶顯示電路,其中以單片機(jī)控制系統(tǒng)為控制核心,如圖1-1所示。首先由溫度檢測(cè)電路對(duì)環(huán)境進(jìn)行溫度采集,本系統(tǒng)中檢測(cè)電路中用的溫度傳感器是DS18B20,將所在環(huán)境溫度檢測(cè)出來(lái),單片機(jī)讀取溫度數(shù)據(jù),接著進(jìn)行液晶顯示。矩陣鍵盤輸入設(shè)定的數(shù)據(jù),然后與實(shí)際溫度比較,決定加熱還是降溫,并在液晶顯示屏上顯示相應(yīng)的狀態(tài)。1.3 系統(tǒng)總的原理圖 見附1.第二章 系統(tǒng)硬件處理方案及原理2.1 單片機(jī)控制電路模塊根據(jù)系統(tǒng)要求分析,我們選用MCS-51系列的單片機(jī)來(lái)完成系統(tǒng)設(shè)計(jì),下面對(duì)MCS-51系列的單片作簡(jiǎn)要介紹。MCS-51單片機(jī)有4個(gè)I/O端口,公32根I/O線,4個(gè)端口都是準(zhǔn)雙向口。每個(gè)口都包含一個(gè)鎖存器,即專用寄存器P0P3,一個(gè)輸出驅(qū)動(dòng)器和輸入緩沖器。為方便起見,我們把4個(gè)端口和其中的鎖存器都統(tǒng)稱P0P3。 在訪問(wèn)片外擴(kuò)展存儲(chǔ)器時(shí),低8位地址和數(shù)據(jù)由P0口分時(shí)傳送,高8位地址由P2口傳送。在無(wú)片外擴(kuò)展存儲(chǔ)器的系統(tǒng)中,這4個(gè)口的每一位均可作為雙向的I/O口使用。P0口:可作為一般的I/O口用,但應(yīng)用系統(tǒng)采用外部總線結(jié)構(gòu)時(shí),它分時(shí)作低8位地址和8位雙向數(shù)據(jù)總線用。P1口:每一位均可獨(dú)立作為I/O口。P2口:可作為一般I/O口用,但應(yīng)用系統(tǒng)采用外部系統(tǒng)采用總線結(jié)構(gòu)時(shí),它分時(shí)作為高8位地址線。 P3口:雙功能口。作為第一功能使用時(shí)同P1口,每一位均可獨(dú)立作為I/O口。另外,每一位均具有第二功能,每一位的兩個(gè)功能不能同時(shí)使用。AT89C52單片機(jī)控制電路的原理圖如圖2-1所示:圖2-1單片控制電路原理圖單片機(jī)的外圍電路有復(fù)位電路,晶振電路以及其他一些控制電路。其他引腳功能:1) 主電源引腳VCC和VSSVSS(40腳):主電源+5V,正常操作的對(duì)EPROM編程及驗(yàn)證時(shí)均接+5V電源。VSS(20腳):接地。2) XTAL1(19腳)和XTAL2(18腳):接外部晶振的兩個(gè)引腳。3) RST/VPD、ALE、/PROG、PSEN控制信號(hào)引腳。RST/VPD(9腳):?jiǎn)纹瑱C(jī)復(fù)位/備用電源引腳。剛接上電源時(shí),其內(nèi)部寄存器處于隨機(jī)狀態(tài),在引腳上輸入持續(xù)兩個(gè)機(jī)器周期的高電平將使單片機(jī)復(fù)位。VCC掉電期間,此引腳可接上備用電源,一旦芯片在使用中VCC電壓突然下降或短電,能保護(hù)片內(nèi)RAN中信息不丟失,使復(fù)電后能繼續(xù)正常運(yùn)行。ALE、/PROG(30腳):當(dāng)訪問(wèn)片外存儲(chǔ)器時(shí),ALE的輸出用于鎖存低字節(jié)地址信號(hào)。即使不訪問(wèn)片外存儲(chǔ)器,ALE端仍以不變的頻率周期性地出現(xiàn)脈沖信號(hào)。其頻率為振蕩器頻率1/6。因此,它可用作對(duì)外輸出的時(shí)鐘,或用于定時(shí)的目的。應(yīng)注意的是:當(dāng)訪問(wèn)片外數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖;ALE端可以驅(qū)動(dòng)8個(gè)LSET負(fù)載。對(duì)含有EPROM的單片機(jī),片內(nèi)EPROM編程期間,此引腳用于輸入編程脈沖(PROG)。PROG(29腳):輸出訪問(wèn)片外程序存儲(chǔ)器的讀選通信號(hào)。CPU在從片外程序存儲(chǔ)器取指令(或常數(shù))期間,每個(gè)機(jī)器周期兩次有效。每當(dāng)訪問(wèn)片外存儲(chǔ)器時(shí),這兩次有效的PROG信號(hào)將不會(huì)出現(xiàn)。該端同樣可驅(qū)動(dòng)8個(gè)LSTTL負(fù)載。EA/VPP(31腳):當(dāng)EA 輸入端輸入高電平時(shí),CPU可訪問(wèn)片內(nèi)程序存儲(chǔ)器4KB的地址范圍。若PC值超出4KB地址時(shí),將自動(dòng)轉(zhuǎn)向片外程序存儲(chǔ)器。當(dāng)EA 輸入低電平時(shí),不論片內(nèi)是否有程序存儲(chǔ)器,則CPU只能訪問(wèn)片外程序存儲(chǔ)器。本系統(tǒng)直接將EA端接高電平。2.2 矩陣鍵盤模塊鍵盤分為編碼鍵盤和非編碼鍵盤,鍵盤上閉合鍵的識(shí)別有專用的硬件編碼器實(shí)現(xiàn),并產(chǎn)生編碼號(hào)或鍵值的稱為編碼鍵盤,如計(jì)算機(jī)鍵盤。而靠軟件編程來(lái)識(shí)別的鍵盤稱為非編碼鍵盤,在單片機(jī)組成的各種系統(tǒng)中,用的較多的是非編碼鍵盤。而非編碼鍵盤又分為獨(dú)立鍵盤和矩陣(又稱行列式)鍵盤。 在本系統(tǒng)中,所需的案件要有12個(gè),故所采用的方案就是矩陣鍵盤。溫度控制系統(tǒng)中34矩陣鍵盤(如圖2-1),是將12個(gè)按鍵排成3行4列,第一行將每個(gè)按鍵的一段連接在一起構(gòu)成行線,第一列將每個(gè)按鍵的另一端連接在一起構(gòu)成列線,這樣便一共有3行4列共7跟線,我們將這7跟線連接到單片機(jī)的7個(gè)I/O口上,通過(guò)程序掃描鍵盤就可檢測(cè)12個(gè)鍵。單片機(jī)檢測(cè)是否有鍵被按下的依據(jù)是檢測(cè)該鍵對(duì)應(yīng)的I/O口是否為低電平。矩陣鍵盤兩端都與單片機(jī)I/O口相連,因此在檢測(cè)時(shí)需認(rèn)為通過(guò)單片機(jī)I/O口送出低電平。檢測(cè)時(shí),先送一列為低電平,其余幾列全為高電平(此時(shí)確定了列數(shù)),然后立即輪流檢測(cè)一次各行是否有低電平,若檢測(cè)到某一行為低電平(這時(shí)又確定了行數(shù)),則便可以確認(rèn)當(dāng)前被按下的鍵是哪一行哪一列的,用同樣的方法送各列一次低電平,這就是矩陣鍵盤檢測(cè)的原理和方法。圖2-2 矩陣鍵盤2.3 LCD液晶顯示模塊 溫度控制系統(tǒng)選用的液晶顯示屏HD44780。各引腳功能如下: 1) 主電源引腳VCC和VSSVSS(引腳1):電源地 ; VCC(引腳2):電源(+5V);2) VEE(引腳3):對(duì)比調(diào)整電壓;3)RS,R/W,ERS(引腳4):數(shù)據(jù)/命令選擇端;R/W(引腳5):讀寫控制端;E(引腳6):使能端;4) DB0-DB7(引腳7-14):I/O端;5) A 和KA(引腳14): LCD背光源正極;K引腳15):LCD背光源負(fù)極;1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表下表:序號(hào)指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001I/DS4顯示開/關(guān)控制0000001DCB5光標(biāo)或字符移位000001S/CR/L*6置功能00001DLNF*7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01BF計(jì)數(shù)器地址10寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無(wú)效。指令4:顯示開關(guān)控制。 D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無(wú)光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標(biāo)或顯示移位 S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線 N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 F: 低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。指令7:字符發(fā)生器RAM地址設(shè)置。指令8:DDRAM地址設(shè)置。指令9:讀忙信號(hào)和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)。2.4 溫度檢測(cè)模塊溫度檢測(cè)模塊中檢測(cè)溫度的器件為溫度傳感器,選用DS18B20,連接電路如圖2-2所示:圖2-2 溫度傳感器電路溫度傳感器的種類眾多,在應(yīng)用與高精度、高可靠性的場(chǎng)合時(shí)DALLAS(達(dá)拉斯)公司生產(chǎn)的DS18B20溫度傳感器當(dāng)仁不讓。超小的體積,超低的硬件開消,抗干擾能力強(qiáng),精度高,附加功能強(qiáng),使得DS18B20更受歡迎。對(duì)于我們普通的電子愛好者來(lái)說(shuō),DS18B20的優(yōu)勢(shì)更是我們學(xué)習(xí)單片機(jī)技術(shù)和開發(fā)溫度相關(guān)的小產(chǎn)品的不二選擇。了解其工作原理和應(yīng)用可以拓寬您對(duì)單片機(jī)開發(fā)的思路。DS18B20的主要特征: 1) 全數(shù)字溫度轉(zhuǎn)換及輸出。 2) 先進(jìn)的單總線數(shù)據(jù)通信。 3) 最高12位分辨率,精度可達(dá)土0.5攝氏度。 4) 12位分辨率時(shí)的最大工作周期為750毫秒。 5) 可選擇寄生工作方式。 6) 檢測(cè)溫度范圍為55C +125C (67F +257F) 7) 內(nèi)置EEPROM,限溫報(bào)警功能。 8) 64位光刻ROM,內(nèi)置產(chǎn)品序列號(hào),方便多機(jī)掛接。 9) 多樣封裝形式,適應(yīng)不同硬件系統(tǒng)。DS18B20引腳功能:GND 電壓地 DQ 單數(shù)據(jù)總線 VDD 電源電壓如圖所示2-2,DS18B20只需要接到控制器(單片機(jī))的一個(gè)I/O口上。如要采用寄生工作方式,只要將VDD電源引腳與單總線并聯(lián)即可。但在程序設(shè)計(jì)中,寄生工作方式將會(huì)對(duì)總線的狀態(tài)有一些特殊的要求。本系統(tǒng)采用的是外接電源。DS28B20芯片ROM指令表:1) Read ROM(讀ROM)33H (方括號(hào)中的為16進(jìn)制的命令字)這個(gè)命令允許總線控制器讀到DS18B20的64位ROM。只有當(dāng)總線上只存在一個(gè)DS18B20的時(shí)候才可以使用此指令,如果掛接不只一個(gè),當(dāng)通信時(shí)將會(huì)發(fā)生數(shù)據(jù)沖突。2) Match ROM(指定匹配芯片)55H這個(gè)指令后面緊跟著由控制器發(fā)出了64位序列號(hào),當(dāng)總線上有多只DS18B20時(shí),只有與控制發(fā)出的序列號(hào)相同的芯片才可以做出反應(yīng),其它芯片將等待下一次復(fù)位。這條指令適應(yīng)單芯片和多芯片掛接。3) Skip ROM(跳躍ROM指令)CCH這條指令使芯片不對(duì)ROM編碼做出反應(yīng),在單總線的情況之下,為了節(jié)省時(shí)間則可以選用此指令。如果在多芯片掛接時(shí)使用此指令將會(huì)出現(xiàn)數(shù)據(jù)沖突,導(dǎo)致錯(cuò)誤出現(xiàn)。4) Search ROM(搜索芯片)F0H在芯片初始化后,搜索指令允許總線上掛接多芯片時(shí)用排除法識(shí)別所有器件的64位ROM。5) Alarm Search(報(bào)警芯片搜索)ECH在多芯片掛接的情況下,報(bào)警芯片搜索指令只對(duì)附合溫度高于TH或小于TL報(bào)警條件的芯片做出反應(yīng)。只要芯片不掉電,報(bào)警狀態(tài)將被保持,直到再一次測(cè)得溫度什達(dá)不到報(bào)警條件為止。6) DS28B20芯片存儲(chǔ)器操作指令表:Write Scratchpad (向RAM中寫數(shù)據(jù))4EH這是向RAM中寫入數(shù)據(jù)的指令,隨后寫入的兩個(gè)字節(jié)的數(shù)據(jù)將會(huì)被存到地址2(報(bào)警RAM之TH)和地址3(報(bào)警RAM之TL)。寫入過(guò)程中可以用復(fù)位信號(hào)中止寫入。7) Read Scratchpad (從RAM中讀數(shù)據(jù))BEH此指令將從RAM中讀數(shù)據(jù),讀地址從地址0開始,一直可以讀到地址9,完成整個(gè)RAM數(shù)據(jù)的讀出。芯片允許在讀過(guò)程中用復(fù)位信號(hào)中止讀取,即可以不讀后面不需要的字節(jié)以減少讀取時(shí)間。8) Copy Scratchpad (將RAM數(shù)據(jù)復(fù)制到EEPROM中)48H此指令將RAM中的數(shù)據(jù)存入EEPROM中,以使數(shù)據(jù)掉電不丟失。此后由于芯片忙于EEPROM儲(chǔ)存處理,當(dāng)控制器發(fā)一個(gè)讀時(shí)間隙時(shí),總線上輸出“0”,當(dāng)儲(chǔ)存工作完成時(shí),總線將輸出“1”。在寄生工作方式時(shí)必須在發(fā)出此指令后立刻超用強(qiáng)上拉并至少保持10MS,來(lái)維持芯片工作。9) Convert T(溫度轉(zhuǎn)換)44H收到此指令后芯片將進(jìn)行一次溫度轉(zhuǎn)換,將轉(zhuǎn)換的溫度值放入RAM的第1、2地址。此后由于芯片忙于溫度轉(zhuǎn)換處理,當(dāng)控制器發(fā)一個(gè)讀時(shí)間隙時(shí),總線上輸出“0”,當(dāng)儲(chǔ)存工作完成時(shí),總線將輸出“1”。在寄生工作方式時(shí)必須在發(fā)出此指令后立刻超用強(qiáng)上拉并至少保持500MS,來(lái)維持芯片工作。10) Recall EEPROM(將EEPROM中的報(bào)警值復(fù)制到RAM)B8H此指令將EEPROM中的報(bào)警值復(fù)制到RAM中的第3、4個(gè)字節(jié)里。由于芯片忙于復(fù)制處理,當(dāng)控制器發(fā)一個(gè)讀時(shí)間隙時(shí),總線上輸出“0”,當(dāng)儲(chǔ)存工作完成時(shí),總線將輸出“1”。另外,此指令將在芯片上電復(fù)位時(shí)將被自動(dòng)執(zhí)行。這樣RAM中的兩個(gè)報(bào)警字節(jié)位將始終為EEPROM中數(shù)據(jù)的鏡像。注:每一次通信之前必須進(jìn)行復(fù)位,復(fù)位的時(shí)間、等待時(shí)間、回應(yīng)時(shí)間應(yīng)嚴(yán)格按時(shí)序編程。DS18B20的測(cè)溫過(guò)程由于DS18B20單線通信功能是分時(shí)完成的,他有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對(duì)DS18B20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)發(fā)ROM功能命令發(fā)存儲(chǔ)器操作命令處理數(shù)據(jù)。圖2-3 溫度傳感器DS18B20測(cè)溫過(guò)程初始化DS18B20跳過(guò)ROM匹配溫度變換延時(shí)1S跳過(guò)ROM匹配讀暫存器讀入CPULCD1602液晶顯示11第三章 系統(tǒng)軟件設(shè)計(jì)開始液晶初始化及開始溫度轉(zhuǎn)換打印固定顯示數(shù)據(jù)啟動(dòng)溫度轉(zhuǎn)換讀取溫度并顯示有檢測(cè)設(shè)置鍵是否被按下進(jìn)入中斷執(zhí)行中斷無(wú)圖 2-4 主程序流程圖3.1 主程序 3.2 系統(tǒng)總程序:#include #define uchar unsigned char #define uint unsigned int #define ActualTemp_worth 9#define TempSet_worth 9#define row_worth 16void dentify_key(uchar key);void get_temp(void);uchar keyscan();void solid_data(void);uchar sk,temp2;/sk表示有鍵按下標(biāo)志,temp2用來(lái)臨時(shí)存儲(chǔ)掃描值uchar code table=RealTemp:;uchar code table1=TempRset:;uchar code table2=0xdf,C;uchar code table3=ADD;uchar code table4=SUB;uchar a,a_low,b,t,t1,temp1,key,c;/t表示溫度整數(shù)部分,t1表示溫度小數(shù)部分,temp1為中間變量(P3)float t2,f_temp;uint temp;uchar sg=0,made_temp=0,made_temp1=0;sbit lcden=P17; /*LCD1602的使能端sbit lcdrs=P16; /*LCD1602的數(shù)據(jù)命令端sbit DQ=P11; /*DS18B20的DS端sbit SIG=P15; /*按鍵輸入信號(hào)sbit ADD=P12;sbit SUB=P13;sbit ex0_enter=P32;uchar code tablenum=0xc0,0xf9,0xa4,0xb0,0x99,/09 0x92,0x82,0xf8,0x80,0x90;uchar code tablenum2=0x30,0x31,0x32,0x33,0x34,/09的ASIIC值0x35,0x36,0x37,0x38,0x39;/*LCD1602液晶顯示*/uchar num=0;void delay(int z)/延遲函數(shù)delayuint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void delay1(uint i)/延遲函數(shù)delay1while(i0) i-;void write_com(uchar com)lcdrs=0;P0=com;delay(1);lcden=1;delay(1);lcden=0;void write_data(uchar date)lcdrs=1;P0=date;delay(1);lcden=1;delay(1);lcden=0;void init_lcd()/LCD1602初始化函數(shù)lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);bit int_DS18B20(void)/DS18B20初始化函數(shù)unsigned char x=0;uint i;DQ=0;i=103; while(i0)i-;DQ=1;i=4;while(i0)i-;x=DQ;/延時(shí)片刻后,若x=0,則初始化成功;若x=1,則初始化失敗delay(20);return x;/*DS18B20讀取一位數(shù)據(jù)函數(shù)bit tempreadbit(void)uint i;bit dat;DQ=0;i+;DQ=1;i+;i+;dat=DQ;i=8;while(i0)i-;return (dat);/*DS18B20讀取一個(gè)字節(jié)函數(shù)uchar Read(void)/DS18B20讀取一個(gè)字節(jié)unsigned char i=0;unsigned char j=0;unsigned char dat=0;for(i=8;i0;i-)j=tempreadbit();dat=(j1);return(dat);/*DS18B20寫一個(gè)字節(jié)函數(shù)Write(unsigned char dat)uint i;uchar j;bit testb;for(j=1;j1;if(testb)DQ=0;i+;i+;DQ=1;i=8;while(i0)i-;elseDQ=0;i=8;while(i0)i-;DQ=1;i+;i+;/*啟動(dòng)轉(zhuǎn)換函數(shù)void int_(void)while(int_DS18B20();/若為1,重新初始化delay(1);Write(0xcc);Write(0x44);/main()主函數(shù)void main()init_lcd();/液晶初始化int_(); /啟動(dòng)溫度轉(zhuǎn)換sk=0;c=0;EA=1;/開總中斷EX0=1; /打開外部中斷0中斷 solid_data();/打印固定數(shù)據(jù)while(1)int_();delay1(1700);get_temp();keyscan(); /此次掃描主要是用來(lái)檢測(cè)設(shè)置按鍵是否被按下if(sk!=0)&(c=1)/表明所要設(shè)置的溫度已經(jīng)給定if(t+1)made_temp)ADD=1;SUB=1;write_com(0x80+0x4c);for(num=0;num3;num+)write_data(table4num);elseSUB=1;ADD=0;write_com(0x80+0x4c);for(num=0;num3;num+)write_data(table3num); /main函數(shù)/*溫度讀取函數(shù)void get_temp(void)while(int_DS18B20();Write(0xcc);Write(0xBE);/讀取溫度寄存器指令a=Read();b=Read();temp=b;temp127)sg=1;temp=temp;temp=temp+1;if(a=0x00)b=b+1;a_low=a&0x0f;t2=a_low*5/80;t1=(uchar)(t2*10);a=a4;b=b4;b=b=0&key=9)write_data(tablenum2key);/*顯示固定數(shù)據(jù)void solid_data(void)/*寫第一行顯示數(shù)據(jù)write_com(0x80);for(num=0;numActualTemp_worth;num+)write_data(tablenum);delay(1);/*打印溫度小數(shù)點(diǎn)以及攝氏度 write_com(0x80+0x0c);write_data(0x2e);/打印小數(shù)點(diǎn),0x2e為小數(shù)點(diǎn)的ASCII碼write_com(0x80+0x0e);for(num=0;num2;num+)write_data(table2num);delay(1);/*寫第二行顯示數(shù)據(jù)write_com(0x80+0x40);for(num=0;numTempSet_worth;num+)write_data(table1num);delay(1);/*矩陣鍵盤掃描函數(shù)uchar keyscan()/*矩陣鍵盤第一列掃描P2=0xfe;temp1=P2;temp1=temp1&0xf0;if(temp1!=0xf0)delay(10);/延時(shí)消斗temp1=P2;temp1=temp1&0xf0;while(temp1!=0xf0)sk=sk+1;/有按鍵按下標(biāo)志temp1=P2;switch(temp1)case 0xee:key=0;break;case 0xde:key=4;break;case 0xbe:key=8;break;while(temp1!=0xf0)temp1=P2;temp1=temp1&0xf0;/*矩陣鍵盤第二列掃描P2=0xfd;temp1=P2;temp1=temp1&0xf0;if(temp1!=0xf0)delay(10);temp1=P2;temp1=temp1&0xf0;while(temp1!=0xf0)sk=sk+1;/有按鍵按下標(biāo)志temp1=P2;switch(temp1)case 0xed:key=1;break;case 0xdd:key=5;break;case 0xbd:key=9;break;while(temp1!=0xf0)temp1=P2;temp1=temp1&0xf0;/*矩陣鍵盤第三列掃描P2=0xfb;temp1=P2;temp1=temp1&0xf0;if(temp1!=0xf0)delay(10);temp1=P2;temp1=temp1&0xf0;while(temp1!=0xf0)temp1=P2;sk=sk+1;/有按鍵按下標(biāo)志switch(temp1)case 0xeb:key=2;break;case 0xdb:key=6;break;case 0xbb:key=10;break;while(temp1!=0xf0)temp1=P2;temp1=temp1&0xf0;/*矩陣鍵盤第四列掃描P2=0xf7;temp1=P2;temp1=temp1&0xf0;if(temp1!=0xf0)delay(10);temp1=P2;temp1=temp1&0xf0;while(temp1!=0xf0)temp1=P2;sk=sk+1;/有按鍵按下標(biāo)志switch(temp1)case 0xe7:key=3;break;case 0xd7:key=7;break;case 0xb7:key=11;break;while(temp1!=0xf0)temp1=P2;temp1=temp1&0xf0;return (key);/*中斷函數(shù)void ex_enter() interrupt 0c=1;/表明已進(jìn)入中斷delay(100);write_com
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024杭州科技職業(yè)技術(shù)學(xué)院輔導(dǎo)員招聘筆試真題
- 1.食品安全地方標(biāo)準(zhǔn)立項(xiàng)建議書(式樣)
- 2023.06.21夏至一陰初升
- 2025年陜西省國(guó)家綜合性消防救援隊(duì)伍招聘考試試題【答案】
- 2025年濕簧式繼電器項(xiàng)目發(fā)展計(jì)劃
- 北京海淀區(qū)社區(qū)工作者招聘筆試真題2024
- 2025年昭通市昭陽(yáng)區(qū)龍泉街道辦事處選拔社區(qū)后備干部考試試題【答案】
- 2025年產(chǎn)后健康項(xiàng)目發(fā)展計(jì)劃
- 消防專項(xiàng)方案
- 理財(cái)顧問(wèn)實(shí)習(xí)報(bào)告范文-1
- 招商大使選聘管理辦法
- 智慧教育基于大數(shù)據(jù)的個(gè)性化教學(xué)研究與實(shí)踐
- 2025年中國(guó)鐵路集團(tuán)招聘筆試備考題庫(kù)(帶答案詳解)
- 用工風(fēng)險(xiǎn)培訓(xùn)課件
- 海外現(xiàn)場(chǎng)安全健康環(huán)境管理(HSE)
- 2025年公安機(jī)關(guān)人民警察(行政執(zhí)法)資格考試(客觀題及刑法)含答案
- DB3502∕T 166-2024 既有廠區(qū)及老舊小區(qū)海綿城市方案設(shè)計(jì)導(dǎo)則
- 2025年 江西省金控科技產(chǎn)業(yè)集團(tuán)有限公司招聘考試筆試試卷附答案
- 四川省成都市蓉城聯(lián)盟2024-2025學(xué)年高一下學(xué)期6月期末考試物理試題(含答案)
- 2025年中國(guó)模內(nèi)標(biāo)簽(IML)行業(yè)市場(chǎng)全景分析及前景機(jī)遇研判報(bào)告
- 【人教版】吉林長(zhǎng)春2024-2025學(xué)年 五年級(jí)下學(xué)期期末數(shù)學(xué)試題【附答案】
評(píng)論
0/150
提交評(píng)論