課程設(shè)計(jì)---基于51單片機(jī)的多路溫度采集控制系統(tǒng)設(shè)計(jì)_第1頁
已閱讀1頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  前言</b></p><p>  隨著現(xiàn)代信息技術(shù)的飛速發(fā)展,溫度測(cè)量控制系統(tǒng)在工業(yè)、農(nóng)業(yè)及人們的日常生活中扮演著一個(gè)越來越重要的角色,它對(duì)人們的生活具有很大的影響,所以溫度采集控制系統(tǒng)的設(shè)計(jì)與研究有十分重要的意義。</p><p>  本次設(shè)計(jì)的目的在于學(xué)習(xí)基于51單片機(jī)的多路溫度采集控制系統(tǒng)設(shè)計(jì)的基本流程。本設(shè)計(jì)采用單片機(jī)作為數(shù)據(jù)處理

2、與控制單元,為了進(jìn)行數(shù)據(jù)處理,單片機(jī)控制數(shù)字溫度傳感器,把溫度信號(hào)通過單總線從數(shù)字溫度傳感器傳遞到單片機(jī)上。單片機(jī)數(shù)據(jù)處理之后,發(fā)出控制信息改變報(bào)警和控制執(zhí)行模塊的狀態(tài),同時(shí)將當(dāng)前溫度信息發(fā)送到LED進(jìn)行顯示。本系統(tǒng)可以實(shí)現(xiàn)多路溫度信號(hào)采集與顯示,可以使用按鍵來設(shè)置溫度限定值,通過進(jìn)行溫度數(shù)據(jù)的運(yùn)算處理,發(fā)出控制信號(hào)達(dá)到控制蜂鳴器和繼電器的目的。我所采用的控制芯片為AT89c51,此芯片功能較為強(qiáng)大,能夠滿足設(shè)計(jì)要求。通過對(duì)電路的設(shè)計(jì),

3、對(duì)芯片的外圍擴(kuò)展,來達(dá)到對(duì)某一車間溫度的控制和調(diào)節(jié)功能。</p><p>  1.總體設(shè)計(jì)方案 </p><p>  1.1 溫度控制系統(tǒng)設(shè)計(jì)方案</p><p>  圖1.溫度控制系統(tǒng)的系統(tǒng)款圖 </p><p>  溫度控制系統(tǒng)主要是由四部分組成:其中包括CPU單片機(jī)處理器;外圍輸入設(shè)備按鍵,其功能是設(shè)置溫度報(bào)警的上下限;數(shù)碼管顯

4、示部分,顯示當(dāng)前等我溫度和溫度的上下限;溫度傳感器,也是最重要的部分其功能是采集周圍的溫度;蜂蜜器用于報(bào)警使用,但溫度超過上線溫度和下線溫度時(shí)則發(fā)出報(bào)警聲,直到溫度恢復(fù)正常。</p><p>  1.2溫度控制系統(tǒng)的方案和原理</p><p>  該系統(tǒng)的設(shè)計(jì)方案是通過溫度傳感器DS18B20將周圍的環(huán)境溫度進(jìn)行采集,等待單片機(jī)將其采集,當(dāng)采集的信號(hào)一到就釋放信號(hào)。而單片機(jī)通過單線總線的方

5、式對(duì)DS18B20采集的信號(hào)進(jìn)行采集并且將其轉(zhuǎn)化成數(shù)字信號(hào)通過數(shù)碼管進(jìn)行顯示。而獨(dú)立按鍵是用來設(shè)置溫度的上下限的。</p><p>  其原理是:?jiǎn)纹瑱C(jī)對(duì)采集的溫度進(jìn)行處理并且進(jìn)行采集,將采集到的溫度使用數(shù)碼管進(jìn)行顯示,并且將采集的溫度和存儲(chǔ)的上下限溫度進(jìn)行比較,當(dāng)溫度超過上下限制的時(shí)候驅(qū)動(dòng)蜂鳴器鳴叫,直到溫度達(dá)到正常溫度是蜂鳴器停止工作;而使用兩個(gè)獨(dú)立按鍵則是用來設(shè)計(jì)溫度上下限。</p><

6、p><b>  2.單元模塊設(shè)計(jì)</b></p><p>  2.1主控制器 單片機(jī)AT89C51具有低電壓供電和體積小等特點(diǎn),四個(gè)端口只需要兩個(gè)口就能滿足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用系統(tǒng)可用二節(jié)電池供電。AT89C51單片機(jī)是ATMEL公司生產(chǎn)的高性能8位單片機(jī),主要功能特性如下: ①兼容MCS-51指令系統(tǒng); ②32個(gè)雙向I/O口,兩個(gè)1

7、6位可編程定時(shí)/計(jì)數(shù)器; ③1個(gè)串行中斷,兩個(gè)外部中斷源; ④可直接驅(qū)動(dòng)LED; ⑤低功耗空閑和掉電模式; ⑥4 kB可反復(fù)擦寫(>1 000次)FLASI ROM; ⑦全靜態(tài)操作O~24 MHz; ⑧128×8 b內(nèi)部RAM。該款芯片的超低功耗和良好的性能價(jià)格比使其非常適合嵌入式產(chǎn)品應(yīng)用。 </p><p>  2.2溫度傳感器DS18B20 DS1

8、8B20溫度傳感器是美國DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過簡(jiǎn)單的編程實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式。</p><p>  2.2.1 DS18B20特性介紹 </p><p>  DS18B20是DALLAS公司的最新單線數(shù)字溫度傳感器,它的體積更小、適用電壓更寬、更經(jīng)濟(jì),DS18B20是世

9、界上第一片支持“一線總線”接口的溫度傳感器,一線總線獨(dú)特而且經(jīng)濟(jì)的特點(diǎn),使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測(cè)量系統(tǒng)的構(gòu)建引入全新概念,它的測(cè)量溫度范圍為-55~+125℃,在-10~+85℃范圍內(nèi),精度為±0.5℃,現(xiàn)場(chǎng)溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性,適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量,如:環(huán)境控制、設(shè)備或過程控制、測(cè)溫類消費(fèi)電子產(chǎn)品等,與前一代產(chǎn)品不同,新的產(chǎn)品支持3~5.5V的電壓范圍,使系統(tǒng)設(shè)計(jì)更

10、靈活、方便,而且新一代產(chǎn)品更便宜,體積更小,DS18B20可以程序設(shè)定9~12位的分辨率,精度為±0.5℃??梢赃x擇更小的封裝方式,更寬的電壓適用范圍,分辨率設(shè)定及用戶設(shè)定的報(bào)警溫度存儲(chǔ)在E2PROM中,掉電后依然保存,DS18B20的性能是新一代產(chǎn)品中最好的,性能價(jià)格比也非常出色,繼“一線總線”的早期產(chǎn)品后,DS18B20開辟了溫度傳感器技術(shù)的新概念,DS18B20和DS18B22使電壓、特性及封裝有更多的選擇,讓我們可以構(gòu)

11、建適合自己的經(jīng)濟(jì)的測(cè)溫系統(tǒng)。</p><p>  2.2.2 DS18B20的內(nèi)部結(jié)構(gòu)</p><p>  DS18B20采用3腳PR-35封裝或8腳SOIC封裝,其內(nèi)部結(jié)構(gòu)框圖如圖2所示,主要由4部分組成:64位光刻ROM,溫度傳感器,非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL,配制寄存器。DS18B20的管腳排列如圖所示。</p><p>  圖3. DS18B20引腳圖

12、</p><p>  2.2.3 DS18B20溫度傳感器的存儲(chǔ)器 </p><p>  64位ROM的結(jié)構(gòu)開始8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前面56位的CRC檢驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線進(jìn)行通信的原因。溫度報(bào)警觸發(fā)器TH和TL,可通過軟件寫入戶報(bào)警上下限。 DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存RAM和一

13、個(gè)非易失性的可電擦除的EERAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖3所示。頭2個(gè)字節(jié)包含測(cè)得的溫度信息,第8和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第5個(gè)字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時(shí)寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的定義如圖3所示。低5位一直為1,TM是工作模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式,DS18B20出廠時(shí)

14、該位被設(shè)置為0,用戶要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率。</p><p>  由表1可見,DS18B20溫度轉(zhuǎn)換的時(shí)間比較長(zhǎng),而且分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間越長(zhǎng)。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。高速暫存RAM的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的CRC碼,可用來檢驗(yàn)數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后

15、,開始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第1、2字節(jié)。單片機(jī)可以通過單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時(shí)低位在先,高位在后,數(shù)據(jù)格式以0.0625℃/LSB形式表示。當(dāng)符號(hào)位S=0時(shí),表示測(cè)得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號(hào)位S=1時(shí),表示測(cè)得的溫度值為負(fù)值,要先將補(bǔ)碼變成原碼,再計(jì)算十進(jìn)制數(shù)值。表2是一部分溫度值對(duì)應(yīng)的二進(jìn)制溫度數(shù)據(jù)。 </p>

16、<p>  DS18B20完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較。若T>TH或T<TL,則將該器件內(nèi)的報(bào)警標(biāo)志位置位,并對(duì)主機(jī)發(fā)出的報(bào)警搜索命令作出響應(yīng)。因此,可用多只DS18B20同時(shí)測(cè)量溫度并進(jìn)行報(bào)警搜索。在64位ROM的最高有效字節(jié)中存儲(chǔ)有循環(huán)冗余檢驗(yàn)碼(CRC)。主機(jī)ROM的前56位來計(jì)算CRC值,并和存入DS18B20的CRC值作比較,以判斷主機(jī)收到的ROM數(shù)據(jù)是否正確。</p

17、><p>  2.2.4 DS18B20控制方法 </p><p>  在硬件上,DS18B20與單片機(jī)的連接有兩種方法,一種是Vcc接外部電源,GND接地,I/O與單片機(jī)的I/O線相連;另一種是用寄生電源供電,此時(shí)UDD、GND接地,I/O接單片機(jī)I/O。無論是內(nèi)部寄生電源還是外部供電,I/O口線要接5KΩ左右的上拉電阻。 </p><p>  DS18B20有六條控

18、制命令,如表所示:</p><p><b>  表2 指令表</b></p><p>  CPU對(duì)DS18B20的訪問流程是:先對(duì)DS18B20初始化,再進(jìn)行ROM操作命令,最后才能對(duì)存儲(chǔ)器操作,數(shù)據(jù)操作。DS18B20每一步操作都要遵循嚴(yán)格的工作時(shí)序和通信協(xié)議。如主機(jī)控制DS18B20完成溫度轉(zhuǎn)換這一過程,根據(jù)DS18B20的通訊協(xié)議,須經(jīng)三個(gè)步驟:每一次讀寫之前都

19、要對(duì)DS18B20進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對(duì)DS18B20進(jìn)行預(yù)定的操作。</p><p>  2.2.5 DS18B20的測(cè)溫原理</p><p>  DS18B20的測(cè)溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)

20、數(shù)器2的脈沖輸入。器件中還有一個(gè)計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí),DS18B20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù)進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)振蕩器來決定,每次測(cè)量前,首先將-55℃所對(duì)應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器1、溫度寄存器中,計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55℃所對(duì)應(yīng)的一個(gè)基數(shù)值。減法計(jì)數(shù)器1對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器1的預(yù)置值減到0時(shí),溫度寄存器的值將加1,減法計(jì)數(shù)器1的預(yù)置將重新

21、被裝入,減法計(jì)數(shù)器1重新開始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器計(jì)數(shù)到0時(shí),停止溫度寄存器的累加,此時(shí)溫度寄存器中的數(shù)值就是所測(cè)溫度值。其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)器門仍未關(guān)閉就重復(fù)上述過程,直到溫度寄存器值大致被測(cè)溫度值。 </p><p>  2.2.6 DS18B20溫度傳感器與單片機(jī)的接口電路</p><p>  DS18B20可以采用兩種

22、方式供電,一種是采用電源供電方式,此時(shí)DS18B20的1腳接地,2腳作為信號(hào)線,3腳接電源。另一種是寄生電源供電方式,如圖4 所示單片機(jī)端口接單線總線,為保證在有效的DS18B20時(shí)鐘周期內(nèi)提供足夠的電流,可用一個(gè)MOSFET管來完成對(duì)總線的上拉。當(dāng)DS18B20處于寫存儲(chǔ)器操作和溫度A/D轉(zhuǎn)換操作時(shí),總線上必須有強(qiáng)的上拉,上拉開啟時(shí)間最大為10us。采用寄生電源供電方式時(shí)VDD端接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。

23、</p><p>  3.溫度控制系統(tǒng)程序設(shè)計(jì)</p><p>  本軟件系統(tǒng)有1個(gè)主程序,6個(gè)子程序組成。6個(gè)子程序?yàn)槎〞r(shí)/計(jì)數(shù)器0中斷服務(wù)程序、溫度采集及模數(shù)轉(zhuǎn)換子程序ADCON、溫度計(jì)算子程序CALCU、驅(qū)動(dòng)控制子程序DRVCON、十進(jìn)制轉(zhuǎn)換子程序METRICCON及數(shù)碼管顯示子程序DISP。</p><p><b>  3.1主程序</b&g

24、t;</p><p>  主程序進(jìn)行系統(tǒng)初始化操作,主要是進(jìn)行定時(shí)/計(jì)數(shù)器的初始化。</p><p>  3.2 定時(shí)/計(jì)數(shù)器0中斷服務(wù)程序</p><p>  應(yīng)用定時(shí)計(jì)數(shù)器0中斷的目的是進(jìn)行定時(shí)采樣,消除數(shù)碼管溫度顯示的閃爍現(xiàn)象,用戶可以根據(jù)實(shí)際環(huán)境溫度變化率進(jìn)行采樣時(shí)間調(diào)整。每當(dāng)定時(shí)時(shí)間到,調(diào)用溫度采集機(jī)模數(shù)轉(zhuǎn)換子程序ADCON,得到一個(gè)溫度樣本,并將其轉(zhuǎn)換為

25、數(shù)字量,傳送給89C51單片機(jī),然后在調(diào)用溫度計(jì)算子程序CALCU,驅(qū)動(dòng)控制子程序DRVCON,十進(jìn)制轉(zhuǎn)換子程序MERTRICCON,溫度數(shù)碼顯示子程序DISP。</p><p>  3.3 溫度采集及模數(shù)轉(zhuǎn)換子程序ADCON</p><p>  該子程序進(jìn)行溫度采樣并將其轉(zhuǎn)換為8位數(shù)字量傳送給89C51的P0口。采樣得到的溫度數(shù)據(jù)存放在片內(nèi)RAM的20H單元中。</p>&

26、lt;p>  3.4 溫度計(jì)算子程序CALCU</p><p>  根據(jù)熱敏電阻的分度值和電路參數(shù)計(jì)算出出一張溫度表,存放在DATATAB數(shù)據(jù)表中,由于篇幅關(guān)系,本程序只給出0-49℃的溫度數(shù)據(jù)。一個(gè)溫度有兩個(gè)字節(jié)組成,前一字節(jié)為溫度值,后一字節(jié)為該溫度所對(duì)應(yīng)的熱敏電阻上的電壓的數(shù)字量。根據(jù)采樣值,通過查表及比較的方法計(jì)算出當(dāng)前的溫度值,并將其存入片內(nèi)RAM的21H單元。采用查表法計(jì)算溫度值時(shí)為了克服熱敏電

27、阻的阻值——溫度特性曲線的非線性,提高測(cè)量精度。</p><p>  3.5 驅(qū)動(dòng)控制子程序DRVCON</p><p>  該子程序調(diào)節(jié)溫度,當(dāng)溫度高于上限溫度時(shí)(本程序設(shè)為30℃), P1.0輸出驅(qū)動(dòng)控制信號(hào),驅(qū)動(dòng)外設(shè)工作降溫;當(dāng)溫度下降到下限溫度時(shí)(本程序設(shè)為25℃),P1.0停止輸出,溫度上升,周而復(fù)始;工作狀態(tài)有LED1-LED4指示。</p><p> 

28、 3.6十進(jìn)制轉(zhuǎn)換子程序METRICCON</p><p>  將存放于內(nèi)部RAM21H單元的當(dāng)前溫度值得二進(jìn)制數(shù)形式轉(zhuǎn)換為十進(jìn)制數(shù)(BCD碼)形式,以便輸出顯示,轉(zhuǎn)換結(jié)果存放在片內(nèi)RAM的32H單元(百位)、31H(十位)、30H單元(個(gè)位)。</p><p>  3.7數(shù)碼顯示子程序DISP</p><p>  該子程序利用89C51串口的方式0串行移位寄存器工

29、作方式,將片內(nèi)RAM的30H、31H、32H單元的BCD碼查表轉(zhuǎn)換為七段碼后由RXD端串行發(fā)出去,然后經(jīng)74LS164串并轉(zhuǎn)換,將七段值傳送給數(shù)碼管,以十進(jìn)制形式顯示出當(dāng)前溫度值。</p><p>  4系統(tǒng)軟件算法分析 </p><p>  系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計(jì)算溫度子程序,顯示數(shù)據(jù)刷新子程序等。</p><p>&

30、lt;b>  4.1主程序流程</b></p><p>  主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20的測(cè)量的當(dāng)前溫度值,溫度測(cè)量每1s進(jìn)行一次。這樣可以在一秒之內(nèi)測(cè)量一次被測(cè)溫度,其程序流程見下圖所示.</p><p><b>  圖4 主函數(shù)流程圖</b></p><p>  4.2 DS18B20復(fù)位

31、子程序</p><p>  此部分程序在執(zhí)行前先將DAT復(fù)位,然后通過對(duì)DAT的判斷來檢測(cè)DS18B20的回應(yīng),并進(jìn)行相應(yīng)的置位,通過R2計(jì)數(shù)的控制來將C中的數(shù)據(jù)送入數(shù)據(jù)線,一共寫入一字節(jié),本程序當(dāng)R2=8時(shí)共計(jì)數(shù)8次,送入的數(shù)據(jù)正好一字節(jié),其程序流程見下圖所示。</p><p>  N </p><p>  Y

32、 </p><p>  圖5 DS18B20流程圖 </p><p>  4.3 讀溫度值命令</p><p>  此子程序主要是通過FLAG1的判斷來進(jìn)行如何執(zhí)行,若存在,則跳過ROM,并由DS18B20發(fā)出溫度轉(zhuǎn)換命令,并讀取命令,最終在DS18B20中讀取兩字節(jié)溫度。若不存在,則返回,對(duì)應(yīng)程序流程圖如下。</

33、p><p><b>  N</b></p><p><b>  Y</b></p><p>  圖6 溫度讀取流程圖</p><p><b>  4.4 按鍵設(shè)置</b></p><p>  此程序是通過對(duì)四個(gè)按鍵有無按下的判斷來對(duì)其相應(yīng)的TH、TL值進(jìn)行相

34、應(yīng)的設(shè)置,其流程圖如下。</p><p><b>  K1</b></p><p>  K4 K2</p><p><b>  K3</b></p><p>  圖7 按鍵設(shè)計(jì)流程圖</p><p>  4.5響鈴與

35、亮燈的設(shè)置</p><p>  此程序是通過TEMPNUM與TH的比較來進(jìn)行是否響鈴與亮燈,其流程圖如下圖。</p><p><b>  Y</b></p><p><b>  N</b></p><p><b>  Y</b></p><p><

36、b>  N</b></p><p>  圖8 蜂鳴器程序流程圖</p><p><b>  5 設(shè)計(jì)總結(jié)</b></p><p>  經(jīng)過將近兩周的單片機(jī)課程設(shè)計(jì),終于完成了數(shù)字溫度傳感器測(cè)溫現(xiàn)實(shí)系統(tǒng)的設(shè)計(jì),雖然有些地方可能還存在一些小缺點(diǎn),但從心底里說,還是高興的,畢竟這次設(shè)計(jì)把實(shí)物都做了出來,高興之余不得不深思呀!在本次

37、設(shè)計(jì)的過程中,我們發(fā)現(xiàn)很多的問題,雖然以前還做過這樣的設(shè)計(jì)但這次設(shè)計(jì)真的讓我們長(zhǎng)進(jìn)了很多。在調(diào)程序的時(shí)候按鍵一度成為我們的難點(diǎn),但經(jīng)過反復(fù)調(diào)整修改程序,還是實(shí)現(xiàn)了按鍵功能。單片機(jī)課程設(shè)計(jì)重點(diǎn)就在于軟件算法的設(shè)計(jì),需要有很巧妙的程序算法,雖然以前寫過幾次程序,但我們覺的寫好一個(gè)程序并不是一件簡(jiǎn)單的事,有好多的東西,只有我們?nèi)ピ囍隽?,才能真正的掌握,只學(xué)習(xí)理論有些東西是很難理解的,更談不上掌握。 從這次的課程設(shè)計(jì)中,我們真真正正的

38、意識(shí)到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí)用到實(shí)際當(dāng)中,學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次課程設(shè)計(jì)中的最大收獲。</p><p><b>  6 參考文獻(xiàn)</b></p><p>  [1] 李朝青.單片機(jī)原理及接口技術(shù):北京航空航天大學(xué)出版社,1998.1-29[2] 李廣弟.單片機(jī)基礎(chǔ)[M].北京:北京

39、航空航天大學(xué)出版社,1994.42-91[3] 閻石.數(shù)字電子技術(shù)基礎(chǔ)(第三版). 北京:高等教育出版社,1989.28-29[4] 廖常初.現(xiàn)場(chǎng)總線概述[J].電工技術(shù),1999.111-123</p><p>  [4] 胡學(xué)海.單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計(jì):電子工業(yè)出版社,2005.8.101-134</p><p>  [6] 李勛.單片機(jī)實(shí)用教程:北京航空航天大學(xué)出版社,200

40、6.5.104-107</p><p><b>  附錄1:系統(tǒng)原理圖</b></p><p><b>  附錄2:元件清單</b></p><p><b>  附錄3 程序部分</b></p><p>  #include<regx52.h></p>

41、<p>  #include<intrins.h></p><p>  #include"confing.h"</p><p>  void main()</p><p><b>  {</b></p><p><b>  HC138(5);</b><

42、;/p><p>  P0 = 0x00; //關(guān)閉蜂蜜器、繼電器</p><p>  HC138(0); //鎖存</p><p>  P0 = 0XFF;//消隱</p><p><b>  HC138(4);</b></p><p>  P0 = 0xff; //關(guān)閉LED</p>

43、<p>  HC138(0); //鎖存</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  read_ds18b20_temp();</p><p>  display();</p><p>&l

44、t;b>  key();</b></p><p><b>  get();</b></p><p><b>  alarm();</b></p><p><b>  }</b></p><p><b>  }</b></p>

45、<p>  void HC138(unsigned char x)</p><p><b>  {</b></p><p>  P2 = ( x<<5 )|( P2&0x1f);</p><p><b>  }</b></p><p>  void delay(uns

46、igned char i)</p><p><b>  {</b></p><p>  unsigned char k;</p><p>  while(i--)</p><p>  for(k = 0 ; k <20 ; k ++);</p><p><b>  }</b&

47、gt;</p><p>  void read_ds18b20_temp()</p><p><b>  {</b></p><p>  Init_DS18B20(); //初始化</p><p>  Write_DS18B20(0xcc); //跳過ROM區(qū)</p><p>

48、;  Write_DS18B20(0x44); //溫度轉(zhuǎn)換</p><p>  Init_DS18B20();</p><p>  Write_DS18B20(0xcc);</p><p>  Write_DS18B20(0xbe); //讀取地址</p><p>  temp_L = Read_DS18B20();

49、 //讀取低字節(jié)</p><p>  temp_H = Read_DS18B20(); //讀取高字節(jié)</p><p>  temp_H = temp_H<<4;</p><p>  temp_L = temp_L>>4;</p><p>  wen_H = temp_H|temp_L; //整數(shù)部

50、分</p><p><b>  }</b></p><p>  void get()//讀取密碼</p><p><b>  {</b></p><p>  table[0] = read_dat(0x01);</p><p>  delay(10);</p>

51、<p>  table[1] = read_dat(0x02);</p><p>  delay(10);</p><p><b>  }</b></p><p>  void set()</p><p><b>  {</b></p><p>  write_

52、dat(0x01,a[0]);</p><p>  delay(10);</p><p>  write_dat(0x02,a[1]);</p><p>  delay(10);</p><p><b>  }</b></p><p>  void key() //按鍵掃描</p>

53、;<p><b>  {</b></p><p>  if(k1 == 0) //溫度上限加</p><p><b>  {</b></p><p>  delay(20);</p><p>  while(k1 == 0);</p><p><b&g

54、t;  a[0]++;</b></p><p>  if(a[0]==100)</p><p><b>  {</b></p><p>  a[0] = a[1];</p><p><b>  }</b></p><p><b>  set();<

55、/b></p><p><b>  }</b></p><p>  if(k2 == 0) //上限溫度減</p><p><b>  {</b></p><p>  delay(20);</p><p>  while(k2 == 0);</p>

56、<p>  if(a[0]>a[1])</p><p><b>  a[0]--;</b></p><p><b>  set();</b></p><p><b>  }</b></p><p>  if(k3 == 0) //溫度下限加</p>

57、;<p><b>  {</b></p><p>  delay(20);</p><p>  while(k3 == 0);</p><p><b>  a[1]++;</b></p><p>  if(a[1] >= a[0])</p><p><

58、;b>  {</b></p><p>  a[1] = a[0];</p><p><b>  }</b></p><p><b>  set();</b></p><p><b>  }</b></p><p>  if(k4 ==

59、0) //下限溫度減</p><p><b>  {</b></p><p>  delay(20);</p><p>  while(k4 == 0);</p><p>  if(a[1]>0)</p><p><b>  a[1]--;</b></p&g

60、t;<p><b>  set();</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void alarm()</p><p><b>  {</b></p><

61、p>  if(wen_H < table[1]||wen_H>table[0])</p><p><b>  {</b></p><p><b>  HC138(5);</b></p><p>  P0 = 0x50; //關(guān)閉蜂蜜器,打開繼電器</p><p>  HC138(0

62、); //鎖存</p><p>  P0 = 0XFF;//消隱</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  HC138(5);&

63、lt;/b></p><p>  P0 = 0x00; //關(guān)閉蜂蜜器,打開繼電器</p><p>  HC138(0); //鎖存</p><p>  P0 = 0XFF;//消隱</p><p><b>  }</b></p><p><b>  }</b>&l

64、t;/p><p><b>  目 錄</b></p><p><b>  前言1</b></p><p>  1.總體設(shè)計(jì)方案2</p><p>  1.1 溫度控制系統(tǒng)設(shè)計(jì)方案2</p><p>  2.單元模塊設(shè)計(jì)3</p><p><

65、;b>  2.1主控制器3</b></p><p>  2.2溫度傳感器18B203</p><p>  2.2.1 DS18B20特性介紹4</p><p>  2.2.2 DS18B20的內(nèi)部結(jié)構(gòu)4</p><p>  2.2.3 DS18B20溫度傳感器的存儲(chǔ)器6</p><p>  

66、2.2.4 DS18B20控制方法7</p><p>  2.2.5 DS18B20的測(cè)溫原理8</p><p>  2.2.6 DS18B20溫度傳感器與單片機(jī)的接口電路9</p><p>  3.溫度控制系統(tǒng)程序設(shè)計(jì)9</p><p><b>  3.1主程序9</b></p><p&

67、gt;  3.2 定時(shí)/計(jì)數(shù)器0中斷服務(wù)程序10</p><p>  3.3 溫度采集及模數(shù)轉(zhuǎn)換子程序ADCON10</p><p>  3.4 溫度計(jì)算子程序CALCU10</p><p>  3.5 驅(qū)動(dòng)控制子程序DRVCON10</p><p>  3.6十進(jìn)制轉(zhuǎn)換子程序METRICCON11</p><p

68、>  3.7數(shù)碼顯示子程序DISP11</p><p>  4系統(tǒng)軟件算法分析 11</p><p>  4.1主程序流程11</p><p>  4.2 DS18B20復(fù)位子程序12</p><p>  4.3 讀溫度值命令14</p><p>  4.4 按鍵設(shè)置15</p><

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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)論