基于STC89C52單片機(jī)的溫度控制電路設(shè)計(jì)說(shuō)明_第1頁(yè)
基于STC89C52單片機(jī)的溫度控制電路設(shè)計(jì)說(shuō)明_第2頁(yè)
基于STC89C52單片機(jī)的溫度控制電路設(shè)計(jì)說(shuō)明_第3頁(yè)
基于STC89C52單片機(jī)的溫度控制電路設(shè)計(jì)說(shuō)明_第4頁(yè)
基于STC89C52單片機(jī)的溫度控制電路設(shè)計(jì)說(shuō)明_第5頁(yè)
已閱讀5頁(yè),還剩12頁(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)介

./基于溫度傳感器的單片機(jī)溫控電路設(shè)計(jì)設(shè)計(jì)分析在各行業(yè)中廣泛應(yīng)用的溫度控制器及儀器儀表主要具有如下的特點(diǎn):一是在復(fù)雜的溫度控制系統(tǒng)中能夠適應(yīng)于大慣性、大滯后的控制;二是在受控系統(tǒng)數(shù)學(xué)模型難以建立的情況下,得到控制;三是在受控系統(tǒng)中,能夠被控制過(guò)程很復(fù)雜且參數(shù)時(shí)變的溫度控制系統(tǒng)控制;五是溫度控制系統(tǒng)普遍具有參數(shù)自檢功能,借助計(jì)算機(jī)技術(shù),能控制對(duì)象和參數(shù),并且具有特性進(jìn)行自動(dòng)調(diào)整的功能等特點(diǎn)[1]。本次電子工藝實(shí)訓(xùn)旨在練習(xí)實(shí)用單片機(jī)系統(tǒng)的設(shè)計(jì)與安裝,掌握典型51系列單片機(jī)最小系統(tǒng)及外圍電路設(shè)計(jì)、常用電子元器件的識(shí)別、萬(wàn)用板焊接電路的方法、鞏固常用電子儀表測(cè)量與調(diào)試電路參數(shù)的方法,培養(yǎng)創(chuàng)新實(shí)踐動(dòng)手能力,為下學(xué)期單片機(jī)、電子系統(tǒng)設(shè)計(jì)等課程奠定理論和實(shí)踐基礎(chǔ)。具體要求如下:自行設(shè)計(jì)以STC89C52RC40單片機(jī)為控制核心的實(shí)用單片機(jī)控制系統(tǒng)的硬件電路,實(shí)現(xiàn)至少一個(gè)環(huán)境參量信息采集、數(shù)值顯示、報(bào)警功能。根據(jù)設(shè)計(jì),利用萬(wàn)用板焊接硬件電路,并做簡(jiǎn)單調(diào)試。要求模塊化設(shè)計(jì),單片機(jī)最小系統(tǒng)模塊、顯示模塊、信息采集報(bào)警模塊、鍵盤(pán)模塊,主要貴重器件用排座插接,電阻、電容、按鍵等元器件要求布局合理、排列整齊,無(wú)虛焊。設(shè)計(jì)方案本文設(shè)計(jì)是以單片機(jī)為核心,實(shí)現(xiàn)溫度實(shí)時(shí)測(cè)控和顯示。確定電路中的一些主要參數(shù),了解溫度控制電路的結(jié)構(gòu),工作原理,對(duì)該控制電路性能進(jìn)行測(cè)試。具體設(shè)計(jì)方案:<1>本設(shè)計(jì)是用來(lái)測(cè)控溫度的,可以利用熱敏電阻的感溫效應(yīng),將被測(cè)溫度變化的模擬信號(hào),電壓或電流的采集過(guò)來(lái),首先進(jìn)行放大和濾波后,再通過(guò)A/D轉(zhuǎn)換,將得到的數(shù)字量送往單片機(jī)中去處理,用數(shù)碼管將被測(cè)得的溫度值顯示出來(lái)。但是這種電路的設(shè)計(jì)需要用到放大濾波電路,A/D轉(zhuǎn)換電路,感溫電路等一系列模擬電路,設(shè)計(jì)起來(lái)較麻煩[2]。<2>本設(shè)計(jì)采用單片機(jī)做處理器,可以考慮使用溫度傳感器,采用由達(dá)拉斯公司研制的DS18B20型溫度傳感器,此傳感器可以將被測(cè)的溫度直接讀取出來(lái),并進(jìn)行轉(zhuǎn)換,這樣就很容易滿足設(shè)計(jì)要求。從上面的兩種方案,可以很容易看出來(lái),雖然方案<2>軟件部分設(shè)計(jì)復(fù)雜點(diǎn),但是電路比較簡(jiǎn)單且精度高,故采用方案<2>。單單片機(jī)最小系統(tǒng)顯示模塊顯示模塊設(shè)置模塊設(shè)置模塊采集模塊采集模塊圖1.總體方框圖系統(tǒng)硬件設(shè)計(jì)據(jù)設(shè)計(jì)的需求,分析單片機(jī)的工作原理,可以大體得出來(lái)溫度控制電路設(shè)計(jì)的總體方框圖,主處理器采用單片機(jī)STC89C52RC40,溫度采集部分采用溫度傳感器,用4位LED顯示數(shù)碼管作為顯示部分,用來(lái)將溫度顯示出來(lái)。系統(tǒng)硬件電路部分由四大模塊組成:溫度采集模塊、溫度顯示模塊、報(bào)警模塊、鍵盤(pán)模塊和單片機(jī)最小系統(tǒng)模塊[3]?!惨粏纹瑱C(jī)最小系統(tǒng)模塊在課題設(shè)計(jì)的溫度控制系統(tǒng)設(shè)計(jì)中,控制核心是STC89C52單片機(jī),該單片機(jī)為51系列增強(qiáng)型8位單片機(jī),它有32個(gè)I/O口,片含4KFLASH工藝的程序存儲(chǔ)器,便于用電的方式瞬間擦除和改寫(xiě),而且價(jià)格便宜,其外部晶振為12MHz,一個(gè)指令周期為1μS。使用該單片機(jī)完全可以完成設(shè)計(jì)任務(wù),其最小系統(tǒng)主要包括:復(fù)位電路、震蕩電路以及存儲(chǔ)器選擇模式〔EA腳的高低電平選擇,電路如下圖3.1所示:圖2.最小系統(tǒng)本課題設(shè)計(jì)的溫度控制系統(tǒng)主控制芯片選型為STC89C52單片機(jī),其特點(diǎn)如下:STC89C52單片機(jī)的40個(gè)引腳中有2個(gè)專用于主電源引腳,2個(gè)外接晶振的引腳,4個(gè)控制或與其它電源復(fù)用的引腳,以及32條輸入輸出I/O引腳。下面按引腳功能分為4個(gè)部分?jǐn)⑹鰝€(gè)引腳的功能?!?電源引腳Vcc和VssVcc〔40腳:接+5V電源正端Vss〔20腳:接+5V電源正端。〔2外接晶振引腳XTAL1和XTAL2XTAL1〔19腳:接外部石英晶體的一端。在單片機(jī)部,它是一個(gè)反相放大器的輸入端,這個(gè)放大器構(gòu)成采用外部時(shí)鐘時(shí),對(duì)于HMOS單片機(jī),該引腳接地;對(duì)于CHOMS單片機(jī),該引腳作為外部振蕩信號(hào)的輸入端。XTAL2〔18腳:接外部晶體的另一端。在單片機(jī)部,接至片振蕩器的反相放大器的輸出端。當(dāng)采用外部時(shí)鐘時(shí),對(duì)于HMOS單片機(jī),該引腳作為外部振蕩信號(hào)的輸入端。對(duì)于CHMOS芯片,該引腳懸空不接。〔3控制信號(hào)或與其它電源復(fù)用引腳控制信號(hào)或與其它電源復(fù)用引腳有RST/VPD、ALE/P、PSEN和EA/VPP等4種形式。〔A.RST/VPD〔9腳:RST即為RESET,VPD為備用電源,所以該引腳為單片機(jī)的上電復(fù)位或掉電保護(hù)端。當(dāng)單片機(jī)振蕩器工作時(shí),該引腳上出現(xiàn)持續(xù)兩個(gè)機(jī)器周期的高電平,就可實(shí)現(xiàn)復(fù)位操作,使單片機(jī)復(fù)位到初始狀態(tài)。當(dāng)VCC發(fā)生故障,降低到低電平規(guī)定值或掉電時(shí),該引腳可接上備用電源VPD〔+5V為部RAM供電,以保證RAM中的數(shù)據(jù)不丟失?!睟.ALE/P〔30腳:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),ALE〔允許地址鎖存信號(hào)以每機(jī)器周期兩次的信號(hào)輸出,用于鎖存出現(xiàn)在P0口的低〔C.PSEN<29腳>:片外程序存儲(chǔ)器讀選通輸出端,低電平有效。當(dāng)從外部程序存儲(chǔ)器讀取指令或常數(shù)期間,每個(gè)機(jī)器周期PESN兩次有效,以通過(guò)數(shù)據(jù)總線口讀回指令或常數(shù)。當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器期間,PESN信號(hào)將不出現(xiàn)?!睤.EA/Vpp〔31腳:EA為訪問(wèn)外部程序儲(chǔ)器控制信號(hào),低電平有效。當(dāng)EA端保持高電平時(shí),單片機(jī)訪問(wèn)片程序存儲(chǔ)器4KB〔MS—52子系列為8KB。若超出該圍時(shí),自動(dòng)轉(zhuǎn)去執(zhí)行外部程序存儲(chǔ)器的程序。當(dāng)EA端保持低電平時(shí),無(wú)論片有無(wú)程序存儲(chǔ)器,均只訪問(wèn)外部程序存儲(chǔ)器。對(duì)于片含有EPROM的單片機(jī),在EPROM編程期間,該引腳用于接21V的編程電源Vpp?!?輸入/輸出〔I/O引腳P0口、P1口、P2口及P3口<A>.P0口〔39腳~22腳:P0.0~P0.7統(tǒng)稱為P0口。當(dāng)不接外部存儲(chǔ)器與不擴(kuò)展I/O接口時(shí),它可作為準(zhǔn)雙向8位輸入/輸出接口。當(dāng)接有外部程序存儲(chǔ)器或擴(kuò)展I/O口時(shí),P0口為地址/數(shù)據(jù)分時(shí)復(fù)用口。它分時(shí)提供8位雙向數(shù)據(jù)總線。對(duì)于片含有EPROM的單片機(jī),當(dāng)EPROM編程時(shí),從P0口輸入指令字節(jié),而當(dāng)檢驗(yàn)程序時(shí),則輸出指令字節(jié)。<B>.P1口〔1腳~8腳:P1.0~P1.7統(tǒng)稱為P1口,可作為準(zhǔn)雙向I/O接口使用。對(duì)于MCS—52子系列單片機(jī),P1.0和P1.1還有第2功能:P1.0口用作定時(shí)器/計(jì)數(shù)器2的計(jì)數(shù)脈沖輸入端T2;P1.1用作定時(shí)器/計(jì)數(shù)器2的外部控制端T2EX。對(duì)于EPROM編程和進(jìn)行程序校驗(yàn)時(shí),P0口接收輸入的低8位地址。<C>.P2口〔21腳~28腳:P2.0~P2.7統(tǒng)稱為P2口,一般可作為準(zhǔn)雙向I/O接口。當(dāng)接有外部程序存儲(chǔ)器或擴(kuò)展I/O接口且尋址圍超過(guò)256個(gè)字節(jié)時(shí),P2口用于高8位地址總線送出高8位地址。對(duì)于EPROM編程和進(jìn)行程序校驗(yàn)時(shí),P2口接收輸入的8位地址。<D>.P3口〔10腳~17腳:P3.0~P3.7統(tǒng)稱為P3口。它為雙功能口,可以作為一般的準(zhǔn)雙向I/O接口,也可以將每1位用于第2功能,而且P3口的每一條引腳均可獨(dú)立定義為第1功能的輸入輸出或第2功能。P3口的第2功能見(jiàn)下表:引腳第2功能P3.0RXD〔串行口輸入端0P3.1TXD〔串行口輸出端P3.2INT0〔部中斷0請(qǐng)求輸入端,低電平有效P3.3INT1〔中斷1請(qǐng)求輸入端,低電平有效P3.4T0〔時(shí)器/計(jì)數(shù)器0計(jì)數(shù)脈沖端P3.5T1〔時(shí)器/計(jì)數(shù)器1數(shù)脈沖端P3.6WR〔部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通信號(hào)輸出端,低電平有效P3.7RD〔部數(shù)據(jù)存儲(chǔ)器讀選通信號(hào)輸出端,低電平有效表1單片機(jī)P3.0管腳含義<二>溫度采集模塊DS18B20溫度傳感器是美國(guó)達(dá)拉斯<DALLAS>半導(dǎo)體公司推出的應(yīng)用單總線技術(shù)的數(shù)字溫度傳感器。該器件將半導(dǎo)體溫敏器件、A/D轉(zhuǎn)換器、存儲(chǔ)器等做在一個(gè)很小的集成電路芯片上。本設(shè)計(jì)中溫度傳感器之所以選擇單線數(shù)字器件DS18B20,是在經(jīng)過(guò)多方面比較和考慮后決定的,主要有以下幾方面的原因:〔1系統(tǒng)的特性:測(cè)溫圍為-55℃~+125℃,測(cè)溫精度為士0.5℃;溫度轉(zhuǎn)換精度9~12位可變,能夠直接將溫度轉(zhuǎn)換值以16位二進(jìn)制數(shù)碼的方式串行輸出;12位精度轉(zhuǎn)換的最大時(shí)間為750ms;可以通過(guò)數(shù)據(jù)線供電,具有超低功耗工作方式?!?系統(tǒng)成本:由于計(jì)算機(jī)技術(shù)和微電子技術(shù)的發(fā)展,新型大規(guī)模集成電路功能越來(lái)越強(qiáng)大,體積越來(lái)越小,而價(jià)格也越來(lái)越低?!?系統(tǒng)復(fù)雜度:由于DS18B20是單總線器件,微處理器與其接口時(shí)僅需占用1個(gè)I/O端口且一條總線上可以掛接幾十個(gè)DS18B20,測(cè)溫時(shí)無(wú)需任何外部元件,因此,與模擬傳感器相比,可以大大減少接線的數(shù)量,降低系統(tǒng)的復(fù)雜度,減少工程的施工量?!?系統(tǒng)的調(diào)試和維護(hù):由于引線的減少,使得系統(tǒng)接口大為簡(jiǎn)化,給系統(tǒng)的調(diào)試帶來(lái)方便。同時(shí)因?yàn)镈S18B20是全數(shù)字元器件,故障率很低,抗干擾性強(qiáng),因此,減少了系統(tǒng)的日常維護(hù)工作。DS18B20溫度傳感器只有三根外引線:?jiǎn)尉€數(shù)據(jù)傳輸總線端口DQ,外供電源線VDD,共用地線GND。DS18B20有兩種供電方式:一種為數(shù)據(jù)線供電方式,此時(shí)VDD接地,它是通過(guò)部電容在空閑時(shí)從數(shù)據(jù)線獲取能量,來(lái)完成溫度轉(zhuǎn)換,相應(yīng)的完成溫度轉(zhuǎn)換的時(shí)間較長(zhǎng)。這種情況下,用單片機(jī)的一個(gè)I/O口來(lái)完成對(duì)DS18B20總線的上拉。另一種是外部供電方式<VDD接+5V>,相應(yīng)的完成溫度測(cè)量的時(shí)間較短?!踩龍?bào)警模塊設(shè)計(jì)中的報(bào)警裝置電路用到了發(fā)光二級(jí)管、三極管、10K的電阻。將發(fā)光二級(jí)管的一端接地,另一端接三極管的發(fā)射極,三極管的基極通過(guò)電阻接在三極管上,三極管的集電極電源。圖5.報(bào)警器〔四鍵盤(pán)模塊鍵盤(pán)實(shí)際是就是很多案件的一種組合,按鍵的按下與否形成一個(gè)高低電平,主控芯片CPU通過(guò)高低電平來(lái)識(shí)別所需信號(hào),進(jìn)而使程序進(jìn)行下一步的操作。鍵盤(pán)操作的軟硬件的設(shè)計(jì)有以下幾個(gè)方面的問(wèn)題:對(duì)于此設(shè)計(jì)來(lái)說(shuō)我們要準(zhǔn)確的顯示我們所要對(duì)應(yīng)的信息,每按一次按鍵要顯示所要顯示的信息。這按鍵是主要用來(lái)控制溫度而設(shè)計(jì)的。這樣比鍵盤(pán)操作方便,也比較實(shí)惠。按鍵電路采用中斷模式。圖6.鍵盤(pán)輸入〔五顯示、指示模塊本模塊用的是0.56英寸2位數(shù)碼管紅色共陽(yáng)數(shù)碼管5261BS,一般正向壓降的都是1.5~2V,額定電流為10mA,通過(guò)最大的電流為40mA。根據(jù)各種不同管接線的方式,可將數(shù)碼管分成共陰極型和共陽(yáng)極型。圖7.數(shù)碼管〔六系統(tǒng)總電路圖系統(tǒng)整體硬件電路包括,傳感器數(shù)據(jù)采集電路,溫度顯示電路,單片機(jī)主控電路等,通過(guò)AltiumDesigner可畫(huà)出如圖所示的電路圖[4][5][6]圖8.系統(tǒng)總電路圖系統(tǒng)硬件制作〔一硬件電路制作方法1.按照電路圖插接面包板,連接線路。2.電路焊接,將各元件焊接到面包板上。硬件電路制作過(guò)程1.準(zhǔn)備好各類器件以及工具。2.按電路圖插接好面包板,先焊接小器件及簡(jiǎn)單電路.3.用電線連接距離較遠(yuǎn)的器件,進(jìn)行焊接.4.焊接完成后用萬(wàn)用表進(jìn)行電路測(cè)試,確保沒(méi)有短路。五、系統(tǒng)軟件設(shè)計(jì)軟件設(shè)計(jì)思路及流程圖主控制程序的主要是用來(lái)實(shí)時(shí)控制當(dāng)前所要測(cè)控的環(huán)境溫度,并讀出由DS18B20測(cè)量的經(jīng)過(guò)處理的當(dāng)前環(huán)境的溫度值,同時(shí)檢查溫度是否在限度之,否則報(bào)警,同時(shí)調(diào)整溫度值。其主控制程序流程圖如9所示。開(kāi)始STC89C52開(kāi)始STC89C52初始化DS18B20初始化溫度是否到達(dá)設(shè)定限度溫度顯示結(jié)束紅燈亮溫度在顯示范圍內(nèi)YNYNY發(fā)溫度轉(zhuǎn)換命令發(fā)DS18B20復(fù)位命令發(fā)跳過(guò)讀序列號(hào)命令讀取操作,CRC校驗(yàn)9字節(jié)完?CRC校驗(yàn)正?確?移入溫度暫存器結(jié)束NNY圖9主程序流程圖圖10讀溫度流程圖1.讀溫度子程序讀溫度子程序的功能主要是用來(lái)將隨機(jī)存儲(chǔ)器中的9個(gè)字節(jié)讀出,在讀出字節(jié)時(shí)侯,需要進(jìn)行冗余碼校驗(yàn)。在校驗(yàn)到有錯(cuò)誤的時(shí)侯,所測(cè)得的溫度數(shù)據(jù)就會(huì)不進(jìn)行改寫(xiě)。其讀溫度子程序流程圖如10所示。2.溫度轉(zhuǎn)換子程序溫度轉(zhuǎn)換命令子程序的功能主要是用來(lái)發(fā)送溫度開(kāi)始轉(zhuǎn)換命令,讓溫度轉(zhuǎn)換自動(dòng)進(jìn)行,其溫度轉(zhuǎn)換命令子程序流程圖如11所示。發(fā)DS18B20復(fù)位命令發(fā)DS18B20復(fù)位命令發(fā)跳過(guò)讀序列號(hào)命令發(fā)溫度轉(zhuǎn)換開(kāi)始命令結(jié)束圖11溫度轉(zhuǎn)換流程圖3.計(jì)算溫度子程序計(jì)算溫度子程序的功能主要將隨機(jī)存儲(chǔ)器中的溫度數(shù)值讀取出來(lái),將取得的溫度數(shù)值的每一位經(jīng)過(guò)計(jì)算分別取出來(lái),放入指定的字節(jié)中,并進(jìn)行溫度值數(shù)正負(fù)的判定。計(jì)算溫度子程序流程圖如12所示。開(kāi)始開(kāi)始溫度零下?溫度值取補(bǔ)碼置"—"標(biāo)志取出小數(shù)位的溫度值取出整數(shù)位的溫度值結(jié)束置"+"標(biāo)志NY圖12.計(jì)算溫度流程圖圖12.計(jì)算溫度流程圖圖3-4計(jì)算溫度流程圖4.溫度顯示子程序溫度顯示子程序的功能主要是對(duì)顯示數(shù)據(jù)寄存器中的數(shù)據(jù)反復(fù)進(jìn)行刷新操作。如果最高位顯示是0時(shí)的時(shí)候,就將符號(hào)顯示位立即移入下一位字節(jié)中。溫度顯示子程序流程圖如13所示。溫度數(shù)據(jù)移入顯示寄存器溫度數(shù)據(jù)移入顯示寄存器十位數(shù)0?百位數(shù)0?十位數(shù)顯示符號(hào)百位數(shù)不顯示百位數(shù)顯示數(shù)據(jù)〔不顯示符號(hào)結(jié)束NNYY圖13.溫度顯示數(shù)據(jù)刷新流程圖圖13.溫度顯示數(shù)據(jù)刷新流程圖〔二程序源代碼#include<reg51.h>#defineuintunsignedint#defineucharunsignedcharsbitp34=P2^4;sbitp35=P2^5;sbitp36=P2^6;sbitdp=P0^7;sbitp37=P2^7;sbitDQ=P2^2;//定義DS18B20總線I/OsbitSET=P3^1;//定義選擇報(bào)調(diào)整警溫度上限和下限〔1為上限,0為下限sbitLING=P2^0;//定義閃爍signedcharm;//溫度值全局變量bitsign=0;//外部中斷狀態(tài)標(biāo)志signedcharshangxian=38;//上限報(bào)警溫度,默認(rèn)值為38signedcharxiaxian=5;//下限報(bào)警溫度,默認(rèn)值為5ucharcodeLEDData[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};/*****延時(shí)子程序*****/voidDelay<uinti>{while<i-->;}/*****初始化DS18B20*****/voidInit_DS18B20<void>{unsignedcharx=0;DQ=1;Delay<8>;//稍做延時(shí)DQ=0;//單片機(jī)將DQ拉低Delay<80>;//精確延時(shí),大于480usDQ=1;//拉高總線Delay<14>;x=DQ;//稍做延時(shí)后,如果x=0則初始化成功,x=1則初始化失敗Delay<20>;}/*****讀一個(gè)字節(jié)*****/unsignedcharReadOneChar<void>{unsignedchari=0;unsignedchardat=0;for<i=8;i>0;i-->{DQ=0;//給脈沖信號(hào)dat>>=1;DQ=1;//給脈沖信號(hào)if<DQ>dat|=0x80;Delay<4>;}return<dat>;}/*****寫(xiě)一個(gè)字節(jié)*****/voidWriteOneChar<unsignedchardat>{unsignedchari=0;for<i=8;i>0;i-->{DQ=0;DQ=dat&0x01;Delay<5>;DQ=1;dat>>=1;}}voidTmpchange<void>//發(fā)送溫度轉(zhuǎn)換命令{Init_DS18B20<>;WriteOneChar<0xCC>;//跳過(guò)讀序號(hào)列號(hào)的操作WriteOneChar<0x44>;//啟動(dòng)溫度轉(zhuǎn)換}/*****讀取溫度*****/unsignedintReadTemperature<void>{unsignedchara=0;unsignedcharb=0;unsignedintt=0;floattt=0;Tmpchange<>;Init_DS18B20<>;WriteOneChar<0xCC>;//跳過(guò)讀序號(hào)列號(hào)的操作WriteOneChar<0xBE>;//讀取溫度寄存器a=ReadOneChar<>;//讀低8位b=ReadOneChar<>;//讀高8位t=b;t<<=8;t=t|a;tt=t*0.0625;t=tt*100+0.5;//放大100倍輸出并四舍五入return<t>;}/*****顯示開(kāi)機(jī)初始化等待畫(huà)面*****/Disp_init<>{P0=0x80;//顯示-p34=1;p35=0;p36=0;p37=0;Delay<200>;P0=0x80;p34=0;p35=1;p36=0;p37=0;Delay<200>;P0=0x80;p34=0;p35=0;p36=1;p37=0;Delay<200>;P0=0x80;p34=0;p35=0;p36=0;p37=1;Delay<200>;P0=0x80;}/*****顯示溫度子程序*****/Disp_Temperature<>//顯示溫度{uinta,b,c,d,e;e=ReadTemperature<>;//獲取溫度值a=e/1000;//計(jì)算得到十位數(shù)字b=e/100-a*10;//計(jì)算得到個(gè)位數(shù)字d=e%10;//計(jì)算得到小數(shù)點(diǎn)后兩位c=<e%100>/10;//計(jì)算得到小數(shù)點(diǎn)后一位m=e/100;if<m>shangxian||m<xiaxian>LING=1;//溫度不在圍報(bào)警elseLING=0;p34=0;p35=0;p36=0;p37=0;P0=LEDData[d];//顯示小數(shù)點(diǎn)后兩位p34=1;p35=0;p36=0;p37=0;Delay<300>;p34=0;p35=0;p36=0;p37=0;P0=LEDData[c];//顯示小數(shù)點(diǎn)后一位p34=0;p35=1;p36=0;p37=0;Delay<300>;p34=0;p35=0;p36=0;p37=0;P0=LEDData[b];//顯示個(gè)位dp=0;p34=0;p35=0;p36=1;p37=0;Delay<300>;p34=0;p35=0;p36=0;p37=0;P0=LEDData[a];//顯示十位p34=0;p35=0;p36=0;p37=1;Delay<300>;p34=0;p35=0;p36=0;p37=0;//關(guān)閉顯示}disptiaozheng<>{ucharf,g,j,k;f=shangxian/10;g=shangxian%10;j=xiaxian/10;k=xiaxian%10;p34=0;p35=0;p36=0;p37=0;P0=0xc0;//顯示0p34=1;p35=0;p36=0;p37=0;Delay<200>;p34=0;p35=0;p36=0;p37=0;P0=0xc0;//顯示0p34=0;p35=1;p36=0;p37=0;Delay<200>;p34=0;p35=0;p36=0;p37=0;if<SET==1>{P0=LEDData[g];dp=0;//顯示上限溫度個(gè)位}else{ P0=LEDData[k];dp=0;}p34=0;p35=0;p36=1;p37=0;Delay<200>;p34=0;p35=0;p36=0;p37=0;if<SET==1>P0=LEDData[f];//顯示上限溫度十位else{if<f==0>P0=0x00;//不顯示下限溫度十位elseP0=LEDData[j];//顯示下限溫度十位}p34=0;p35=0;p36=0;p37=1;Delay<200>;p34=0;p35=0;p36=0;p37=0;//關(guān)閉顯示Delay<20>;}/*****外部中斷0服務(wù)程序*****/voidint0<void>interrupt0{EX0=0;//關(guān)外部中斷0sign=1;if<SET==1>shangxian++;elsexiaxian++;Delay<500>;EX0=1;}/*****外部中斷1服務(wù)程序*****/voidint1<void>interrupt2{EX1=0;//關(guān)外部中斷0sign=1;if<SET==1>shangxian--;elsexiaxian--;Delay<500>;EX1=1;}/*****主函數(shù)*****/voidmain<void>{uintz;IT0=1;IT1=1;EX0=1;EX1=1;EA=1;ReadTemperature<>;LING=0;for<z=0;z<100;z++>{Disp_init<>;}while<1>{Disp_Temperature<>; if<sign==1> { for<z=0;z<300;z++> disptiaozheng<>; sign=0; }}}六、系統(tǒng)調(diào)試〔一調(diào)試方法單片機(jī)應(yīng)用系統(tǒng)樣機(jī)組裝好以后,便可進(jìn)入系統(tǒng)的在線〔聯(lián)仿真器調(diào)試,其主要任務(wù)是排除樣機(jī)硬件故障,并完善其硬件結(jié)構(gòu),試運(yùn)行所設(shè)計(jì)的程序,排除程序錯(cuò)誤,優(yōu)化程序結(jié)構(gòu),使系統(tǒng)達(dá)到期望的功能,進(jìn)而固化軟件,使其產(chǎn)品化。單片機(jī)應(yīng)用系統(tǒng)的硬件和軟件調(diào)試是交叉進(jìn)行的,但通常是先排除樣機(jī)中明顯的硬件故障,尤其是電源故障,才能安全地和仿真器相連,進(jìn)行綜合調(diào)試。本設(shè)計(jì)調(diào)試過(guò)程中所用的調(diào)試方法有:靜態(tài)測(cè)試、聯(lián)仿真器在線調(diào)試等。軟件調(diào)試所使用的方法有:計(jì)算程序的調(diào)試方法、I/O處理程序的調(diào)試法、綜合調(diào)試法等?!捕{(diào)試過(guò)程及現(xiàn)象計(jì)算程序的錯(cuò)誤是一種靜態(tài)的固定的錯(cuò)誤,因此主要用單拍或斷點(diǎn)運(yùn)行方式來(lái)調(diào)試。根據(jù)計(jì)算程序的功能,事先準(zhǔn)備好一組測(cè)試數(shù)據(jù)。調(diào)試時(shí),用防真器的寫(xiě)命令,將數(shù)據(jù)寫(xiě)入計(jì)算程序的參數(shù)緩沖單元,然后從計(jì)算程序開(kāi)始運(yùn)行到結(jié)束,運(yùn)行的結(jié)果和正確數(shù)據(jù)比較,如果對(duì)有的測(cè)試數(shù)據(jù)進(jìn)行測(cè)試,都沒(méi)有發(fā)生錯(cuò)誤,則該計(jì)算程序調(diào)試成功;如果發(fā)現(xiàn)結(jié)果不正確,改用單步運(yùn)行方式,即可檢查出錯(cuò)誤所在。計(jì)算程序的修改視錯(cuò)誤性質(zhì)而定。若是算法錯(cuò)誤,那是根本性錯(cuò)誤,應(yīng)重新設(shè)計(jì)該程序;若是局部的指令有錯(cuò),修改即可。如果用于測(cè)試的數(shù)據(jù)

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論