單片機(jī)課程設(shè)計(jì)--溫度控制系統(tǒng)設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  單片機(jī)課程設(shè)計(jì)</b></p><p>  學(xué) 院 理學(xué)院 </p><p>  年級(jí)專(zhuān)業(yè) 2011級(jí)電子信息工程01班 </p><p>  指導(dǎo)老師 </p><p>  學(xué) 號(hào)

2、 </p><p>  姓 名 </p><p><b>  2014年6月</b></p><p><b>  目錄</b></p><p>  摘 要- 1 -</p>

3、<p>  第一章 緒論- 2 -</p><p>  1.1 單片機(jī)概述- 2 -</p><p>  1.2 選題背景及設(shè)計(jì)意義- 3 -</p><p>  一、選題背景- 3 -</p><p>  二、設(shè)計(jì)意義- 3 -</p><p>  1.3設(shè)計(jì)方案論證- 3 -</p

4、><p>  第二章 硬件設(shè)計(jì)- 4 -</p><p>  2.1硬件電路的設(shè)計(jì)- 5 -</p><p>  2.2各元器件介紹- 10 -</p><p>  第四章 調(diào)試- 17 -</p><p>  4.1綜合調(diào)試- 18 -</p><p>  參考文獻(xiàn)- 19 -<

5、;/p><p><b>  附錄- 19 -</b></p><p><b>  摘 要</b></p><p>  在一些溫控系統(tǒng)電路中,廣泛采用的是通過(guò)熱電偶、熱電阻或PN結(jié)測(cè)溫電路經(jīng)過(guò)相應(yīng)的信號(hào)調(diào)理電路,轉(zhuǎn)換成A/D轉(zhuǎn)換器能接收的模擬量,再經(jīng)過(guò)采樣/保持電路進(jìn)行A/D轉(zhuǎn)換,最終送入單片機(jī)及其相應(yīng)的外圍電路,完成

6、監(jiān)控。但是由于傳統(tǒng)的信號(hào)調(diào)理電路實(shí)現(xiàn)復(fù)雜、易受干擾、不易控制且精度不高。本文介紹單片機(jī)結(jié)合DS18B20溫度控制系統(tǒng)設(shè)計(jì),因此,本系統(tǒng)用一種新型的可編程溫度傳感器(DS18B20),不需復(fù)雜的信號(hào)調(diào)理電路和A/D轉(zhuǎn)換電路能直接與單片機(jī)完成數(shù)據(jù)采集和處理,實(shí)現(xiàn)方便、精度高,可根據(jù)不同需要用于各種場(chǎng)合。</p><p>  關(guān)鍵詞:?jiǎn)纹瑱C(jī),AT89S51,MAX232,傳感器DS18B20</p>&

7、lt;p><b>  第一章 緒論</b></p><p><b>  1.1 單片機(jī)概述</b></p><p>  單片機(jī)的結(jié)構(gòu)特征是將組成計(jì)算機(jī)的基本部件集成在一塊晶體芯片上,構(gòu)成一臺(tái)功能獨(dú)特的單片微型計(jì)算機(jī)。一臺(tái)典型的單片機(jī)的基本組成結(jié)構(gòu)包括中央處理器(CPU),存儲(chǔ)器(ROM和RAM),并行I/O口,串行I/O口,定時(shí)器/計(jì)數(shù)器

8、,定時(shí)電路及元件。由此可見(jiàn),單片機(jī)在結(jié)構(gòu)上突破了常規(guī)的按邏輯功能劃分芯片。由多片構(gòu)成了微型計(jì)算機(jī)的設(shè)計(jì)思想,將構(gòu)成計(jì)算機(jī)的許多功能集成在一塊晶體芯片上。</p><p><b>  單片機(jī)的特點(diǎn):</b></p><p>  受密度限制:芯片存儲(chǔ)器存儲(chǔ)容量較小,一般ROM小于4/ 2KB,RAM小于256字節(jié)。</p><p>  可靠性良好:

9、單片機(jī)是按照工業(yè)控制要求設(shè)計(jì)的,其抗工業(yè)噪聲干擾優(yōu)于一般的 CPU,程序指令及常數(shù)數(shù)據(jù)都燒在ROM內(nèi),其許多信號(hào)通道均在同一芯片內(nèi),因此可靠性較高。</p><p>  易擴(kuò)充:?jiǎn)纹瑱C(jī)具有一般微電腦所必須的器件,可以擴(kuò)充為各種規(guī)模的微電腦系統(tǒng)。</p><p>  控制功能強(qiáng):為了滿(mǎn)足工業(yè)控制要求,單片機(jī)指令除了輸入/輸出控制指令,邏輯判斷指令外,還有更為豐富的條件分支跳躍指令。</

10、p><p>  單片機(jī)的應(yīng)用領(lǐng)域如下:</p><p>  家用電器領(lǐng)域:目前國(guó)內(nèi)各種家用電器已普遍采用單片機(jī)控制取代傳統(tǒng)的控制電路,做成單片機(jī)控制系統(tǒng)。</p><p>  辦公自動(dòng)化領(lǐng)域:現(xiàn)代辦公室所使用的大量通信,信息產(chǎn)品多數(shù)采用了單片機(jī)。</p><p>  在商業(yè)營(yíng)銷(xiāo)系統(tǒng)已廣泛使用的電子秤,收款機(jī),條形碼閱讀器,倉(cāng)庫(kù)安全監(jiān)控系統(tǒng),商場(chǎng)保

11、安系統(tǒng),空氣調(diào)節(jié)系統(tǒng)等,目前已紛紛采用單片機(jī)構(gòu)成專(zhuān)用系統(tǒng)。</p><p>  工業(yè)自動(dòng)化:如工業(yè)過(guò)程控制,過(guò)程監(jiān)測(cè),工業(yè)控制器及機(jī)電一體化系統(tǒng)等,這些系統(tǒng)除一些小型工控機(jī)之外,許多都是以單片機(jī)為核心的單機(jī)或多機(jī)網(wǎng)絡(luò)系統(tǒng)。</p><p>  智能儀表與集成智能傳感器傳統(tǒng)的控制電路:目前各種變送器,電氣測(cè)量?jī)x表普遍采用單片機(jī)應(yīng)用系統(tǒng)替代傳統(tǒng)的測(cè)量系統(tǒng),使測(cè)量系統(tǒng)具有各種智能化功能。將單片機(jī)

12、和傳感器相結(jié)合可以構(gòu)成新一代的智能傳感器。他將傳感器初級(jí)變換后的電量做進(jìn)一步的變換,處理,輸出能滿(mǎn)足遠(yuǎn)距離傳送,能與微機(jī)接口的數(shù)字信號(hào)。</p><p>  汽車(chē)電子與航空航天電子系統(tǒng):通常在這些電子系統(tǒng)中的集中顯示系統(tǒng),動(dòng)力監(jiān)測(cè)控制系統(tǒng),自動(dòng)駕馭系統(tǒng),通信系統(tǒng),以及運(yùn)行監(jiān)視器(黑匣子)等,都要都成冗余的網(wǎng)絡(luò)系統(tǒng)。</p><p>  1.2 選題背景及設(shè)計(jì)意義</p>&l

13、t;p><b>  一、選題背景</b></p><p>  最早的溫度計(jì)是在1593年由意大利科學(xué)家伽利略發(fā)明的。他的第一只溫度計(jì)是一根一端敞口的玻璃管,另一端帶有核桃大的玻璃泡。使用時(shí)先給玻璃泡加熱,然后把玻璃管插入水中。隨著溫度的變化,玻璃管中的水面就會(huì)上下移動(dòng),根據(jù)移動(dòng)的多少就可以判定溫度的變化和溫度的高低。這種溫度計(jì),受外界大氣壓強(qiáng)等環(huán)境因素的影響較大,所以測(cè)量誤差大。荷蘭

14、人華倫海特在1709年利用酒精,在1714年又利用水銀作為測(cè)量物質(zhì),制造了更精確的溫度計(jì)。把一定濃度的鹽水凝固時(shí)的溫度定為0℉,把純水凝固時(shí)的溫度定為32℉,把標(biāo)準(zhǔn)大氣壓下水沸騰的溫度定為212℉,用℉代表華氏溫度,這就是華氏溫度計(jì)。 </p><p><b>  二、設(shè)計(jì)意義</b></p><p>  本設(shè)計(jì)所介紹的數(shù)字溫度計(jì)與傳統(tǒng)的溫度計(jì)相比,具有讀數(shù)方便,測(cè)溫

15、范圍廣,測(cè)溫準(zhǔn)確,其輸出溫度采用數(shù)字顯示,主要用于對(duì)測(cè)溫比較準(zhǔn)確的場(chǎng)所,或科研實(shí)驗(yàn)室使用。它具有結(jié)構(gòu)簡(jiǎn)單,不需外接元件,采用一根I/ O 數(shù)據(jù)線(xiàn)既可供電又可傳輸數(shù)據(jù)、并可由用戶(hù)設(shè)置溫度報(bào)警界限等特點(diǎn),可廣泛用于食品庫(kù)、冷庫(kù)、糧庫(kù)等需要控制溫度的地方。該設(shè)計(jì)控制器使用單片機(jī)AT 89S51,測(cè)溫傳感器使用DS18B20,,實(shí)現(xiàn)溫度顯示,能準(zhǔn)確達(dá)到以下要求:</p><p>  測(cè)溫范圍-55℃~125℃ 精

16、度誤差小于0.5℃</p><p>  LED數(shù)碼管直讀顯示 可以任意設(shè)置溫度的上下限報(bào)警功能</p><p><b>  1.3設(shè)計(jì)方案論證</b></p><p><b>  方案一:</b></p><p>  本電路是溫度計(jì)的設(shè)計(jì),在測(cè)溫電路中利用熱敏電阻器件的感溫效應(yīng),將隨被測(cè)溫

17、變化的電壓或電流采集過(guò)來(lái),進(jìn)行A/D轉(zhuǎn)換后,用單片機(jī)進(jìn)行數(shù)據(jù)處理,經(jīng)顯示電路就可以顯示出來(lái)。</p><p><b>  方案二:</b></p><p>  在日常生活及工農(nóng)業(yè)生產(chǎn)中經(jīng)常要用到溫度的檢測(cè)及控制,傳統(tǒng)的測(cè)溫元件有熱電偶和熱電阻。而熱電偶和熱電阻測(cè)出的一般都是電壓,再轉(zhuǎn)換成對(duì)應(yīng)的溫度,需要比較多的外部硬件支持,硬件電路復(fù)雜,軟件調(diào)試復(fù)雜,制作成本高。&l

18、t;/p><p><b>  方案三:</b></p><p>  基于單片機(jī)的溫度傳感器設(shè)計(jì)的數(shù)字溫度計(jì)已經(jīng)很成熟,各種精度很高的溫度計(jì)不斷推出。數(shù)字溫度計(jì)要求檢測(cè)的精度必須高于控制的精確度,否則無(wú)從實(shí)現(xiàn)控制的精度要求。所以精度已經(jīng)成為數(shù)字溫度計(jì)的一項(xiàng)重要的性能參數(shù)。因此追求高精度是數(shù)字溫度計(jì)的一個(gè)目標(biāo)。不僅如此,檢測(cè)還涉及國(guó)計(jì)民生各個(gè)部門(mén),可以說(shuō)在所以科學(xué)技術(shù)領(lǐng)域無(wú)時(shí)

19、不在進(jìn)行檢測(cè)。科學(xué)技術(shù)的發(fā)展和檢測(cè)技術(shù)的發(fā)展是密切相關(guān)的?,F(xiàn)代化的檢測(cè)手段能達(dá)到的精度、靈敏度及測(cè)量范圍等,在很大程度上決定了科學(xué)技術(shù)的發(fā)展水平。同時(shí),科學(xué)技術(shù)的發(fā)展達(dá)到的水平越高,又為檢測(cè)技術(shù)、傳感器技術(shù)提供了新的前提手段。目前市場(chǎng)上出現(xiàn)了很多傳感器,很多精度高的傳感器已經(jīng)出現(xiàn),而且精度越來(lái)越高。數(shù)字溫度計(jì)未來(lái)將會(huì)更精確、更人性化,為我們做出更多貢獻(xiàn)。為此我們選擇方案三的設(shè)計(jì),框圖如下</p><p>  溫度

20、計(jì)電路設(shè)計(jì)總體設(shè)計(jì)方框圖如圖所示,控制器采用單片機(jī)AT89S51,溫度傳感器采用DS18B20,用四位LED數(shù)碼管以串行口傳送數(shù)據(jù)實(shí)現(xiàn)溫度顯示。</p><p><b>  第二章 硬件設(shè)計(jì)</b></p><p>  2.1硬件電路的設(shè)計(jì)</p><p>  本設(shè)計(jì)系統(tǒng)共由四部分組成:</p><p> ?、?AT89

21、S51為控制裝置,負(fù)責(zé)各部分的控制和數(shù)據(jù)采集。</p><p> ?、?DB9和MAX232組成了通訊系統(tǒng),負(fù)責(zé)和上位機(jī)通訊的TTL/RS232電平轉(zhuǎn)換。</p><p>  ③ DS18B20為溫度測(cè)量裝置,負(fù)責(zé)對(duì)溫度進(jìn)行采集并轉(zhuǎn)換為數(shù)字信號(hào)送AT89S51進(jìn)行處理。</p><p>  ④ 共陽(yáng)極數(shù)碼管為顯示裝置,負(fù)責(zé)顯示工作狀態(tài)和DS18B20 采集到的數(shù)據(jù)

22、。</p><p>  注:LED數(shù)碼管驅(qū)動(dòng)電路中采用P0 口加上拉電阻的形式,為方便焊接,本設(shè)計(jì)中電阻使用了排阻的方式,三極管使用的是S9012.</p><p><b>  1、時(shí)鐘電路</b></p><p>  時(shí)鐘電路用于產(chǎn)生單片機(jī)工作所需的時(shí)鐘信號(hào),時(shí)序是指令執(zhí)行中各信號(hào)之間的相互關(guān)系。單片機(jī)本身就如同一個(gè)復(fù)雜的同步時(shí)序電路,為了保

23、證同步工作方式的實(shí)現(xiàn),電路應(yīng)在唯一的時(shí)鐘信號(hào)控制下嚴(yán)格地按時(shí)序進(jìn)行工作。在A(yíng)T89S51單片機(jī)內(nèi)部帶有時(shí)鐘電路,因此,只需要在片外通過(guò)XTAL1和XTAL2引腳接入定時(shí)控制元件(晶體振蕩器和電容),即可構(gòu)成一個(gè)穩(wěn)定的自激振蕩器。在A(yíng)T89s51芯片內(nèi)部有一個(gè)高增益反相放大器,而在芯片的外部,XTAL1和XTAL2之間跨接晶體振蕩器和微調(diào)電容。</p><p>  在單片機(jī)的XTAL1腳和XTAL2腳之間并接一個(gè)晶

24、體振蕩器就構(gòu)成了內(nèi)部振蕩方式。AT89S51單片機(jī)內(nèi)部有一個(gè)高增益的反相放大器,XTAL1為內(nèi)部反相放大器的輸入端,XTAL2為內(nèi)部反相放大器的輸出端,在其兩端接上晶振后,就構(gòu)成了自激振蕩電路,并產(chǎn)生振蕩脈沖,振蕩電路輸出的脈沖信號(hào)的頻率就是晶振的固有頻率。在實(shí)際應(yīng)用中通常還需要在晶振的兩端和地之間各并上一個(gè)小電容。</p><p>  AT89S51的時(shí)鐘電路如圖2.2所示:</p><p&

25、gt;  圖2.2AT89S51的時(shí)鐘電路</p><p>  圖中,電容器C1、C2常稱(chēng)為微調(diào)電容,其作用有三個(gè):快速起振、穩(wěn)定振蕩頻率、微調(diào)振蕩頻率。AT89S51單片機(jī)允許外接0~33M Hz的晶振,電容器C1、C2可取5pF~33pF。一般情況下,使用頻率較低的晶振時(shí),C1、C2的容量可選大一點(diǎn)。為了更好地保證振蕩器穩(wěn)定可靠地工作,在實(shí)際裝配電路時(shí),晶振X和電容C1、C2應(yīng)盡可能地安裝在XTAL1、XTA

26、L2引腳附近。內(nèi)部振蕩方式所得到時(shí)鐘信號(hào)比較穩(wěn)定,在實(shí)際電路中,一般是選用內(nèi)部振蕩方式。</p><p>  用晶振和電容構(gòu)成諧振電路。電容大小與晶振頻率和工作電壓有關(guān)。但電容的大小影響振蕩器的穩(wěn)定性和起振的快速性,為了提高精度,本實(shí)驗(yàn)板采用30pF的電容作為微調(diào)電容。在設(shè)計(jì)電路板時(shí),晶振、電容等均應(yīng)盡可能靠近芯片,以減小分布電容,保證振蕩器振蕩的穩(wěn)定性。</p><p><b>

27、;  2、復(fù)位電路</b></p><p>  復(fù)位的功能:復(fù)位是單片機(jī)的初始化操作,其目的是使CPU和系統(tǒng)中各部分處于一個(gè)確定的狀態(tài),并從這一狀態(tài)開(kāi)始工作。系統(tǒng)上電路或死機(jī)后都要進(jìn)行復(fù)位操作。單片機(jī)復(fù)位時(shí),將程序計(jì)數(shù)器PC初始化為0000H,表明復(fù)位后程序從0000H地址單元開(kāi)始執(zhí)行,同時(shí)復(fù)位時(shí)輸出控制信號(hào)ALE,PSEN均為高電平。復(fù)位后,P0~P3口輸出高電平,且使準(zhǔn)雙向口均處于輸入狀態(tài)。復(fù)

28、位不改變片內(nèi)RAM單元的內(nèi)容,但使各特殊功能寄存器SFR回復(fù)到初始狀態(tài),復(fù)位后各特殊功能寄存器值如表2—6所示:</p><p>  表2—6      主要特殊功能寄存器復(fù)位初始值</p><p>  表2—6中部分符號(hào)的含義如下:</p><p>  PSW=00H:表明復(fù)位后自動(dòng)選擇第0組工作寄存器組為當(dāng)前工作

29、寄存器組SP=07H:表明堆棧指針指向片內(nèi)RAM07H單元,堆棧的壓入操作為先加后壓,所以第一個(gè)被壓入的數(shù)據(jù)存放在08H單元中P0~P3=FFH:表明各端口寫(xiě)入1,此時(shí)各端口既可作輸入口,也可以作輸出口A(yíng)UXR=XXX0 0XX0:表明ALE引腳在CPU不訪(fǎng)問(wèn)外部存儲(chǔ)器期間有脈沖信號(hào)輸出AUXR1=XXXX XXX0:表明選擇DPTR0作數(shù)據(jù)指針I(yè)E=00H:表明各中斷均關(guān)閉TCON=00H:表明T0,T1 均被停止SCO

30、N=00H:表明串口處于方式0,允許發(fā)送,不允許接收PCON=00H:表明SMOD=0,波特率不加倍。PD=0,IDL=0,單片機(jī)處于正常工作方式。單片機(jī)的RST引腳為復(fù)位引腳,振蕩電路正常工作后,RST端加上持續(xù)兩個(gè)機(jī)器周期的高電平后,單片機(jī)就被復(fù)位。復(fù)位電路有3種基本方式:上電復(fù)位,開(kāi)關(guān)復(fù)位和看門(mén)狗復(fù)位。這里只介紹上電復(fù)位和開(kāi)關(guān)復(fù)位。</p><p><b>  (1)上電復(fù)位 </b&g

31、t;</p><p>  所謂上電復(fù)位就是單片機(jī)只要一上電就自動(dòng)實(shí)現(xiàn)復(fù)位操作。常用的上電復(fù)位電路如圖1所示</p><p> ?。╝) (b)</p><p>  圖1單片機(jī)上電復(fù)位電路圖圖a、圖b所示電路在本質(zhì)上是一樣,它們都是RC微分復(fù)位電路。由于單片機(jī)的RST端對(duì)地存在一個(gè)等效電阻R,圖a中的微分電阻為R1與R的并

32、聯(lián)電阻,圖b中的微分電阻取至RST端的等效電阻R。上電時(shí),電源通過(guò)微分電阻對(duì)電容充電,由于電容兩端電壓不能突變,所以RST端出現(xiàn)一個(gè)正脈沖。過(guò)一段時(shí)間后,電容兩端電荷充滿(mǎn),電容等效為開(kāi)路,于是RST端所加電壓為低電平,單片機(jī)完成復(fù)位。從圖中可以看出,RST端高電平持續(xù)時(shí)間取于RC電路的充電時(shí)間常數(shù)。合理選擇C1和R1就可以實(shí)現(xiàn)上電復(fù)位。由于上電后,振蕩電路起振要經(jīng)歷一個(gè)振蕩建立時(shí)間,不同頻率的振蕩器,起振蕩建立時(shí)間不同,所以不同振蕩頻

33、率下,上述上電復(fù)位電路的參數(shù)不同。通常要求上電時(shí)RST復(fù)位高電平能持續(xù)10ms以上,R、C的取值一般為:C1=10~30μF,R1=1K?~10K?當(dāng)晶振頻率為6MHz時(shí),可取R1=1 K?,C1=22μF晶振頻率為12MHz時(shí),可取C1=10μF,R1=8.2 K?(2) 開(kāi)關(guān)復(fù)位開(kāi)關(guān)復(fù)位是指通過(guò)接通按鈕開(kāi)關(guān),使單片機(jī)進(jìn)入復(fù)位狀態(tài)。開(kāi)關(guān)復(fù)位電路一般不單獨(dú)使用。在應(yīng)用系統(tǒng)設(shè)計(jì)中,若需使用</p><

34、;p>  圖2.3-單片機(jī)組合復(fù)位電路圖單片機(jī)組合復(fù)位電路 圖中C1,R1構(gòu)成了上電復(fù)位電路。上電復(fù)位后,電源經(jīng)R1對(duì)C1充滿(mǎn)電源,C1等效于開(kāi)路,RST端為低電平;單片機(jī)正常工作。按開(kāi)關(guān)K后,C1兩端電荷經(jīng)R2迅速放電,K斷開(kāi)后,由C1、R1及電源完成對(duì)單片機(jī)的復(fù)位操作。在上述電路中,R2的取值一般為0~200?,C1、R1按上電復(fù)位電路的設(shè)計(jì)而取值。 復(fù)位電路的作用非常重要,能否成功復(fù)位關(guān)系但單片機(jī)系統(tǒng)能否正常

35、運(yùn)行的問(wèn)題。如果振蕩電路正常而單片機(jī)系統(tǒng)不能正常運(yùn)行,其主要原因是單片機(jī)沒(méi)有完成正常復(fù)位,程序計(jì)數(shù)器的值沒(méi)有回0,特殊功能寄存器沒(méi)有回到初始狀態(tài)。這時(shí)可以適當(dāng)?shù)卣{(diào)整上電復(fù)位電路的阻容值,增加其充電時(shí)間常數(shù)來(lái)解決問(wèn)題。</p><p>  本文采用上復(fù)位電路。</p><p>  3、LED數(shù)碼管顯示電路</p><p>  單片機(jī)系統(tǒng)中常用的顯示器有:發(fā)光二極管LE

36、D(Light Emitting Diode)顯示器、液晶LCD(Liquid Crystal Display)顯示器、CRT顯示器等。LED、LCD顯示器有兩種顯示結(jié)構(gòu):段顯示(7段、米字型等)和點(diǎn)陣顯示(5×8、8×8點(diǎn)陣等)。 </p><p><b>  (1)靜態(tài)顯示方式</b></p><p>  LED顯示器工作方式有兩種:靜態(tài)顯示方

37、式和動(dòng)態(tài)顯示方式。靜態(tài)顯示的特點(diǎn)是每個(gè)數(shù)碼管必須接一個(gè)8位鎖存器用來(lái)鎖存待顯示的字形碼。送入一次字形碼顯示字形一直保持,直到送入新字形碼為止。這種方法的優(yōu)點(diǎn)是占用CPU時(shí)間少,顯示便于監(jiān)測(cè)和控制。缺點(diǎn)是硬件電路比較復(fù)雜,成本較高。</p><p><b>  (2)動(dòng)態(tài)顯示</b></p><p>  動(dòng)態(tài)顯示的特點(diǎn)是將所有位數(shù)碼管的段選線(xiàn)并聯(lián)在一起,由位選線(xiàn)控制是哪

38、一位數(shù)碼管有效。這樣一來(lái),就沒(méi)有必要每一位數(shù)碼管配一個(gè)鎖存器,從而大大地簡(jiǎn)化了硬件電路。選亮數(shù)碼管采用動(dòng)態(tài)掃描顯示。所謂動(dòng)態(tài)掃描顯示即輪流向各位數(shù)碼管送出字形碼和相應(yīng)的位選,利用發(fā)光管的余輝和人眼視覺(jué)暫留作用,使人的感覺(jué)好像各位數(shù)碼管同時(shí)都在顯示。動(dòng)態(tài)顯示的亮度比靜態(tài)顯示要差一些,所以在選擇限流電阻時(shí)應(yīng)略小于靜態(tài)顯示電路中的。 </p><p>  圖2.4 七段LED顯示器</p><p&g

39、t;  使用LED顯示器時(shí),要注意區(qū)分這兩種不同的接法。為了顯示數(shù)字或字符,必須對(duì)數(shù)字或字符進(jìn)行編碼。七段數(shù)碼管加上一個(gè)小數(shù)點(diǎn),共計(jì)8段。因此為L(zhǎng)ED顯示器提供的編碼正好是一個(gè)字節(jié)。用共陰LED顯示器顯示16進(jìn)制數(shù)的編碼已列在下表。</p><p><b>  共陰數(shù)碼管碼表</b></p><p>  0x3f , 0x06 , 0x5b , 0x4f , 0x6

40、6 , 0x6d ,</p><p>  0 1 2 3 4 5</p><p>  0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c ,</p><p>  6 7 8 9 A B</p><p>  0x39

41、, 0x5e , 0x79 , 0x71 , 0x00</p><p>  C D E F 無(wú)顯示</p><p><b>  2.2各元器件介紹</b></p><p>  AT89S51

42、

43、 AT89S51 是一種帶4K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器的低電壓、高性能 CMOS8位微處理器。該器件采

44、用A</p><p>  AT89S51圖如下:</p><p><b> ?。?)主要特性:</b></p><p>  8031 CPU與MCS-51兼容</p><p>  4K字節(jié)可編程FLASH存儲(chǔ)器(壽命:1000寫(xiě)/擦循環(huán)) </p><p>  全靜態(tài)工作:0Hz-24KHz&

45、lt;/p><p>  三級(jí)程序存儲(chǔ)器保密鎖定</p><p>  128*8位內(nèi)部RAM</p><p>  32條可編程I/O線(xiàn)</p><p>  兩個(gè)16位定時(shí)/器計(jì)數(shù)器</p><p><b>  6個(gè)中斷源</b></p><p><b>  可編程串行通

46、道</b></p><p>  低功耗的閑置和調(diào)電模式</p><p><b>  VCC:供電電壓</b></p><p>  GND: 接地 </p><p> ?。?) 各引腳及功能說(shuō)明</p><p>  P0口:P0口為一個(gè)8位漏極開(kāi)路雙向I/O口。P0口能用于外部程序

47、數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FLASH編程時(shí),P0口作為原碼輸入口,當(dāng)FALSH進(jìn)行校驗(yàn)時(shí),P0口輸出原碼,此時(shí)P0口外部必須被拉高。</p><p>  P1口: P1口是 一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口。P1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流。在FALSH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。</p><p>

48、;  P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口。當(dāng)P2口被寫(xiě)入“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。</p><p>  P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口。當(dāng)P3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平并用作輸入。</p&g

49、t;<p>  P3口:除作I/O口使用外,還有特殊功能如圖所示</p><p>  P3口同時(shí)為編程和校驗(yàn)接收一些控制信號(hào)。</p><p>  RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。</p><p>  ALE/PROG:當(dāng)訪(fǎng)問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié)。在FALSH編程期間,

50、此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6.因此它可用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如果想禁止ALE的輸出可在SFR8EH地址上置0.此時(shí),ALE只有在執(zhí)行MOVX,MOVC指令時(shí)ALE才起作用。另外,該指令被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。</p><p>  /PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取

51、指期間,每個(gè)機(jī)器周期兩次/PSEN有校。但在訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。</p><p>  /EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H~FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器,注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。</p>

52、<p>  XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入</p><p>  XTAL2:來(lái)自反向振蕩器的輸出</p><p>  ISP:在線(xiàn)編程引腳</p><p>  P1.5、P1.6、P1.7、RST四個(gè)引腳可以作為在系統(tǒng)編程引腳</p><p><b>  (3)振蕩器特性:</b>

53、</p><p>  XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)件,XTAL2應(yīng)不接。其余輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求,但必須保證,脈沖的高低電平要求的寬度。</p><p><b>  MAX232</b></p>

54、<p>  MAX232是一種雙組驅(qū)動(dòng)器接收器,片內(nèi)含有一個(gè)電容性電壓發(fā)生器以便在單5V電源供電時(shí)提供EIA/TIA-232-E電平,每個(gè)接收器將EIA/TIA-232-E 電平輸入轉(zhuǎn)換為5 V TTL/CMOS電平。這些接收器具有1.3 V的典型門(mén)限及0.5V的典型遲滯,而且可以接收±30的輸入,每個(gè)驅(qū)動(dòng)器將TTL/CMOS輸入電平轉(zhuǎn)換為 EIA/TIA-232-E電平,其主要特點(diǎn)為:</p>&

55、lt;p><b>  ①單5V電源工作</b></p><p> ?、贚inBiCMOSTM工藝技術(shù)</p><p> ?、蹆蓚€(gè)驅(qū)動(dòng)器及兩個(gè)接收器</p><p><b>  ④±30V輸入電平</b></p><p> ?、莸碗娫措娏鳎旱湫椭凳?mA</p><

56、p> ?、薹螦NSI標(biāo)準(zhǔn)EIA/TIA-232-E及ITU推薦標(biāo)準(zhǔn) V.28 </p><p> ?、逧SD保護(hù)大于MIL-STD-883 標(biāo)準(zhǔn)的2000V</p><p><b>  DS18B20 </b></p><p>  DS18B20基本知識(shí)DS18B20數(shù)字溫度計(jì)是DALLAS公司生產(chǎn)的1-Wire,即單總線(xiàn)器件,具有線(xiàn)

57、路簡(jiǎn)單,體積小的特點(diǎn)。因此用它來(lái)組成一個(gè)測(cè)溫系統(tǒng),具有線(xiàn)路簡(jiǎn)單,在一根通信線(xiàn),可以?huà)旌芏噙@樣的數(shù)字溫度計(jì),十分方便。</p><p>  DS18B20產(chǎn)品的特點(diǎn)(1)、只要求一個(gè)端口即可實(shí)現(xiàn)通信。(2)、在DS18B20中的每個(gè)器件上都有獨(dú)一無(wú)二的序列號(hào)。(3)、實(shí)際應(yīng)用中不需要外部任何元器件即可實(shí)現(xiàn)測(cè)溫。(4)、測(cè)量溫度范圍在-55。C到+125。C之間。(5)、數(shù)字溫度計(jì)的分辨率用戶(hù)可以從9位到1

58、2位選擇。(6)、內(nèi)部有溫度上、下限告警設(shè)置。DS18B20的引腳介紹  TO-92封裝的DS18B20的引腳排列見(jiàn)圖1,其引腳功能描述見(jiàn)表1。 (底視圖)圖1</p><p>  表1 DS18B20詳細(xì)引腳功能描述</p><p>  第三章 系統(tǒng)軟件設(shè)計(jì)</p><p><b>  3.1各部分流程圖</b&

59、gt;</p><p><b>  第四章調(diào)試</b></p><p><b>  4.1綜合調(diào)試</b></p><p>  單片機(jī)系統(tǒng)的硬件調(diào)試和軟件調(diào)試是不能分開(kāi)的,去多硬件錯(cuò)誤是在軟件調(diào)試中被發(fā)現(xiàn)和糾正的,但是硬件的調(diào)試是基礎(chǔ),如果硬件調(diào)試不通過(guò)軟件設(shè)計(jì)則是無(wú)從做起,所以我們是先排除明顯的硬件故障以后,再和軟件

60、結(jié)合起來(lái)以進(jìn)一步排除故障。硬件設(shè)計(jì)從布線(xiàn)到焊接安裝完成之后,我就開(kāi)始進(jìn)入硬件調(diào)試階段,調(diào)試大體分為以下幾步:</p><p>  1. 硬件靜態(tài)的調(diào)試</p><p><b> ?、倥懦壿嫻收?lt;/b></p><p>  這類(lèi)故障由于設(shè)計(jì)和加工制板過(guò)程中工藝性錯(cuò)誤所造成的。主要包括錯(cuò)線(xiàn)、開(kāi)路、短路。我將其排除的方法是首先將焊制的電路板認(rèn)真對(duì)

61、照原理圖,看兩者是否一致,特別主意了電源系統(tǒng)的檢查,以防止電源短路和極性錯(cuò)誤,并利用數(shù)字萬(wàn)用表的短路測(cè)試功能重點(diǎn)檢查了系統(tǒng)總線(xiàn)是否存在相互之間短路或與其他信號(hào)線(xiàn)路短路。</p><p><b> ?、谂懦骷?lt;/b></p><p>  我考慮到造成這類(lèi)錯(cuò)誤的原因有兩個(gè):一個(gè)是元器件買(mǎi)來(lái)是就已經(jīng)壞了,另一個(gè)是由于安裝錯(cuò)誤,造成器件燒壞。我采取檢查器件與設(shè)計(jì)要求的

62、型號(hào)、規(guī)格和安裝是否一致,在保證安裝無(wú)誤后,用替換法排除了錯(cuò)誤。</p><p><b> ?、叟懦娫垂收?lt;/b></p><p>  在通電前,首先檢查了電源電壓的幅值和極性,避免造成集成塊損壞,加電后檢查各插件上引腳的電位,先檢查Vcc與GND之間電位,在5V~4.8V 之間屬正常,若有高壓,聯(lián)機(jī)仿真器調(diào)試時(shí),將會(huì)損壞仿真器等,有時(shí)會(huì)使系統(tǒng)中的集成塊發(fā)熱損壞。&

63、lt;/p><p><b>  2.聯(lián)機(jī)仿真調(diào)試</b></p><p>  聯(lián)機(jī)仿真借助了仿真開(kāi)發(fā)裝置、示波器、萬(wàn)用表等工具,這些工具是單片機(jī)開(kāi)發(fā)的最基本工具。</p><p>  信號(hào)線(xiàn)是聯(lián)絡(luò)AT89S51和外部器件的紐帶,如果信號(hào)線(xiàn)聯(lián)接錯(cuò)誤或時(shí)序不對(duì),那么都會(huì)造成對(duì)外圍電路讀寫(xiě)錯(cuò)誤,51系列單片機(jī)的信號(hào)線(xiàn)大體分為讀、寫(xiě)信號(hào)線(xiàn)、時(shí)鐘信號(hào)線(xiàn)、外部

64、程序存儲(chǔ)器讀選通信號(hào)、地址所存信號(hào)、復(fù)位信號(hào)等幾大類(lèi),這些信號(hào)大多屬于脈沖信號(hào),對(duì)于脈沖信號(hào)借助示波器用常規(guī)方法很難測(cè)到,我利用軟件編程的方法來(lái)實(shí)現(xiàn)。</p><p>  顯示器部分調(diào)試,首先將AT89S51與LED 顯示分離,用靜態(tài)方法先測(cè)試LED 顯示,分別用規(guī)定的電平加至控制數(shù)碼管段和位顯示的引腳,看數(shù)碼管顯示是否與理論上一致,不一致,一般LED顯示器接觸不良所致,必須找出故障。</p>&l

65、t;p><b>  調(diào)試通過(guò)。</b></p><p><b>  致謝</b></p><p>  本設(shè)計(jì)介紹了溫度計(jì)的測(cè)量和控制之間的關(guān)系:檢測(cè)是控制的基礎(chǔ)和前提,而檢測(cè)的精度必須高于控制的精確度,否則無(wú)從實(shí)現(xiàn)控制的精度要求。通過(guò)這次實(shí)驗(yàn),我更加深刻的了解了AT89S51單片機(jī)的內(nèi)部結(jié)構(gòu),和 DS18B20溫度傳感器的工作原理,熟悉了一

66、些常用的指令使用,增強(qiáng)了處理混亂邏輯關(guān)系的能力。</p><p><b>  參考文獻(xiàn)</b></p><p>  樓然苗、李光飛編著. 《51系列單片機(jī)設(shè)計(jì)實(shí)例》 </p><p>  北京航空航天大學(xué)出版社 2004年10月</p><p>  何立民、張俊謨編著. 《單片機(jī)中級(jí)教程原理與應(yīng)用》北京航空航天大學(xué)出版

67、社 1999年12月</p><p>  馮文旭、劉傳璽編著.《單片機(jī)應(yīng)用技術(shù)》</p><p>  中國(guó)礦業(yè)大學(xué)出版社 2003年5月 </p><p>  【4】 張正明、卓鄭安編著 《電路與電子技術(shù)》 北京航空航天大學(xué)出版社 2004年9月 </p><p><b>  附錄</b><

68、/p><p>  附錄1 元件清單</p><p><b>  附錄2匯編語(yǔ)言程序</b></p><p>  ;************************</p><p>  ;* 匯編語(yǔ)言程序 *</p><p>  ;************************</

69、p><p>  ENABLE EQU 00H</p><p>  DTSIGN EQU 01H</p><p>  SDSIGN EQU 02H</p><p>  HAVE EQU 03H</p><p>  PSHU EQU 04H</p><p>  LE

70、D0 EQU P0.0</p><p>  LED1 EQU P0.1</p><p>  LED2 EQU P0.2</p><p>  LED3 EQU P0.3</p><p>  WR1820 EQU P1.1</p><p>  SEG EQU

71、 P2</p><p>  WARNH0 EQU 31H</p><p>  WARNH1 EQU 32H</p><p>  TEMP0 EQU 34H</p><p>  TEMP1 EQU 35H</p><p>  DIS0 EQU 36H</p><

72、;p>  DIS1 EQU 37H</p><p>  DIS2 EQU 38H</p><p>  DIS3 EQU 39H</p><p>  SDAT EQU 'D'</p><p>  WORK EQU 'W'</p><

73、;p>  PAUSE EQU 'P'</p><p>  ERR EQU 'E'</p><p>  ORG 0000H</p><p>  AJMP MAIN</p><p>  ORG 000BH</p><p>  AJMP

74、T0INT</p><p>  ORG 0023H</p><p>  AJMP S_INT</p><p>  ;*******************</p><p>  ;* 主程序 *</p><p>  ;*******************</p><p

75、>  ORG 0030H</p><p>  MAIN: MOV SP,#40H ; 堆棧棧底放50H</p><p>  MOV WARNH0,#30H</p><p>  MOV WARNH1,#00</p><p>  CALL T0INIT ;初始化

76、T0</p><p>  CALL T1INIT ;初始化T1</p><p>  CALL SINIT ;初始化串口</p><p>  CLR ENABLE ;清使能標(biāo)志</p><p>  CLR DTSIGN ;清數(shù)據(jù)

77、標(biāo)志</p><p>  JNB ENABLE,$ ;查詢(xún)使能,無(wú)效則停機(jī)</p><p>  LCALL INT_EN</p><p>  LOOP: CALL DISPLY ;調(diào)用顯示子程序</p><p>  JNB ENABLE,$ ;查詢(xún)使能,無(wú)效則停機(jī)

78、</p><p>  AJMP LOOP</p><p><b>  ;T0初始化</b></p><p>  T0INIT:ORL TMOD,#01H</p><p>  ANL TMOD,#0F1H</p><p>  MOV TH0,#3CH</p><

79、p>  MOV TL0,#0B0H</p><p>  MOV R7,#15H ;軟件記數(shù)初值</p><p><b>  RET</b></p><p><b>  ;T1初始化</b></p><p>  T1INIT:ORL TMOD,#20H</

80、p><p>  ANL TMOD,#02FH</p><p>  MOV TH1,#0FDH</p><p>  MOV TL0,#0FDH</p><p>  CLR ET1 ; 關(guān)T1中斷</p><p>  SETBTR1 ; T1開(kāi)始

81、計(jì)數(shù)</p><p><b>  RET</b></p><p><b>  ;串口初始化</b></p><p>  SINIT: ANL PCON,#7FH</p><p>  MOV SCON,#50H</p><p>  SETBEA

82、 ; 開(kāi)全局中斷</p><p>  SETB ES ; 開(kāi)串口中斷</p><p><b>  RET</b></p><p><b>  ;開(kāi)中斷子程序</b></p><p>  INT_EN: SETB ET0

83、 ;開(kāi)T0中斷</p><p>  SETB TR0</p><p>  RET ;T0開(kāi)始計(jì)數(shù)</p><p><b>  ;關(guān)中斷子程序</b></p><p>  INT_DS: CLR ET0 ;關(guān)T0中斷</p>&

84、lt;p>  CLR TR0 ;T0停止計(jì)數(shù)</p><p><b>  RET</b></p><p>  ;******************</p><p>  ;* 顯示子程序 *</p><p>  ;******************</p>&l

85、t;p>  DISPLY: PUSH ACC ;保護(hù)現(xiàn)場(chǎng)</p><p>  PUSH 06H</p><p>  MOV A,TEMP1 ;溫度整數(shù)部分送A</p><p>  MOV B,#100H</p><p>  DIV AB

86、 ;相除取百位</p><p>  MOV DIS3,A ;百位送DIS3</p><p>  MOV A, B ; 余數(shù)送 A</p><p>  MOV B,#10</p><p>  DIV AB ; 相除取十位</p>

87、;<p>  MOV DIS2,A ;十位送DIS2</p><p>  MOV DIS1,B ;個(gè)位送DIS1</p><p>  MOV DIS0,TEMP0 ;小數(shù)部分送DIS0</p><p>  MOV DPTR,#ZIXING ;送字型碼首地址</p

88、><p>  MOV A,DIS0 ;取小數(shù)</p><p>  MOVC A,@A+DPTR ;取對(duì)應(yīng)字型碼</p><p>  SETB LED0</p><p>  SETB LED1</p><p>  SETB LED2</p><p&

89、gt;  SETB LED3</p><p>  CLR LED0</p><p>  MOV SEG, A ;送字型碼</p><p>  CALL DELAY0</p><p>  MOV A,DIS1 ;取各位</p><p>  MOVC

90、A,@A+DPTR ;取對(duì)應(yīng)字型碼</p><p>  CLR ACC.7 ;清最高位顯示小數(shù)點(diǎn)</p><p>  SETB LED0</p><p>  SETB LED1</p><p>  SETB LED2</p><p>  SETB LE

91、D3</p><p>  CLR LED1</p><p>  MOV SEG, A ;送字型碼</p><p>  CALL DELAY0</p><p>  MOV A, DIS2 ;取十位</p><p>  MOVC A,@A+DPT

92、R ;取對(duì)應(yīng)字型碼</p><p>  SETB LED0</p><p>  SETB LED1</p><p>  SETB LED2</p><p>  SETB LED3</p><p>  CLR LED2</p><p>  MOV

93、 SEG,A ;送字型碼</p><p>  CALL DELAY0</p><p>  MOV A,DIS3 ;取百位</p><p>  JNB FSHU,ZHENG ;判斷是否為正數(shù)</p><p>  MOV A,#16

94、 ;如果不是正數(shù)送'-' ZHENG: MOVC A,@A+DPTR ;取對(duì)應(yīng)字型碼</p><p>  SETB LED0</p><p>  SETB LED1</p><p>  SETB LED2</p><p>  SETB LED3</p

95、><p>  CLR LED3</p><p>  MOV SEG, A ;送字型碼</p><p>  CALL DELAY0</p><p>  OUTDIS: POP 06H</p><p>  POP ACC</p><p><b

96、>  RET</b></p><p>  ZIXING: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H ; 共陽(yáng)數(shù)碼管字型碼</p><p>  DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0BFH</p><p><b>  ;延遲子程序</b><

97、;/p><p>  DELAY0: MOV R6,#1FH</p><p>  DEL0: MOV R5,#0bh</p><p><b>  DEL1: NOP</b></p><p>  DJNZ R5,DEL1</p><p>  DJNZ R6,DEL0</p>

98、;<p><b>  RET</b></p><p>  ; ************************</p><p>  ; * 串口中斷 *</p><p>  ; ************************</p><p>  S_INT: PUSH ACC

99、</p><p>  JNB T I,RINT ;若不是發(fā)送中斷則轉(zhuǎn)接收中斷處理程序</p><p>  CLR TI ;清發(fā)中斷標(biāo)志</p><p>  RINT: JBC RI,RXD ;判斷是否收中斷,若不是退出</p><p>  OUTSint:

100、 POP ACC</p><p><b>  RETI</b></p><p>  RXD: MOV A,SBUF ; 將輸入緩沖送A</p><p>  JNB DTSIGN, COMMEND0 ;判斷是否為上位機(jī)發(fā)送數(shù)據(jù)</p><p>  MOV

101、 @R0,A ; 若是數(shù)據(jù)送A里面的數(shù)到警報(bào)溫度RAM</p><p>  INC R0</p><p>  DJNZ R6,OUTSint ; 未送完則退出等待</p><p>  CLR DTSIGN ; 送完,清數(shù)據(jù)標(biāo)志位</p><p>  AJM

102、P OUTSint</p><p>  COMMEND0:CJNE A,#SDAT,COMMEND1 ; 判斷PC是否開(kāi)始發(fā)送數(shù)據(jù)</p><p>  SETB DTSIGN ;數(shù)據(jù)標(biāo)志位置1</p><p>  MOV R6,#04H</p><p>  MOV R0,#WARNH0

103、 ; R0送警報(bào)溫度首地址</p><p>  AJMP OUTSint</p><p>  COMMEND1: CJNE A,#WORK,NOTWORK ;判斷是否為允許工作命令</p><p>  SETB ENABLE ;若允許工作使能標(biāo)志置1</p><p>  LCALL INT_EN

104、 ;開(kāi)中斷</p><p>  AJMP OUTSint</p><p>  NOTWORK: CJNE A,#PAUSE,NOTPAU ;判斷是否為暫停工作命令</p><p>  CLR ENABLE ;若暫停工作使能標(biāo)志清0</p><p>  LCALL INT_DS

105、 ;關(guān)中斷</p><p>  MOV P0,0FFH</p><p>  MOV P1,0FFH</p><p>  AJMP OUTSint</p><p>  NOTPAU:CJNE A,#ERR,ISERR0 ;判斷數(shù)據(jù)是否錯(cuò)誤</p><p>

106、  JB SDSIGN,NOERR ;判斷發(fā)送數(shù)據(jù)為第一個(gè)字節(jié)還是第二個(gè)</p><p>  MOV R6,#02H ;若為第一個(gè),置發(fā)送計(jì)數(shù)</p><p>  SETB SDSIGN ;發(fā)送標(biāo)志置1</p><p>  MOV R0,#TEMP0 ;溫度數(shù)據(jù)指針<

107、/p><p>  NOERR1: MOV A,@R0 ;溫度數(shù)據(jù)送A</p><p>  MOV SBUF ,A ;發(fā)送溫度數(shù)據(jù)</p><p>  INC R0 ;指針加1</p><p>  DJNZ R6,OUTSint</

108、p><p>  CLR SDSIGN ;清發(fā)送標(biāo)志</p><p>  AJMP OUTSint</p><p>  ISERR0: MOV A, #45H ;錯(cuò)誤,發(fā)'E' 的ASCII碼</p><p>  MOV SBUF,A</p><

109、p>  AJMP OUTSint</p><p>  ; ********************</p><p>  ;* T0中斷子程序 *</p><p>  ;*********************</p><p>  T0INT: PUSH ACC ;保護(hù)現(xiàn)場(chǎng)</p

110、><p>  PUSH 06H</p><p>  PUSH 05H</p><p>  MOV TL0,#0B0H ;初值重裝</p><p>  MOV TH0,#3CH</p><p>  DJNZ R7, OUTSint</p><p>  

111、MOV R7, #15H</p><p>  LCALL GET_TEMPER ;讀取溫度</p><p>  JNB HAVE,OUTT0int</p><p>  MOV A,TEMP1</p><p><b>  CLR C</b></p><p> 

112、 SUBB A,WARNH0 ;將讀取的溫度與高溫限比較</p><p>  TINT0: JNC TINT1 ;判斷是否大于高溫限</p><p>  AJMP TINT2 ;不大于轉(zhuǎn)TINT2</p><p>  TINT1:MOV A,#'H'

113、 ;大于高溫限發(fā)送'H'到 PC</p><p>  MOV SBUF,A</p><p>  AJMP TINT4</p><p>  TINT2: SUBB A,WARNH1 ;將讀取的溫度與低溫限比較</p><p>  JC TINT3 ;判

114、斷是否小于低溫限</p><p>  AJMP TINT4 ;不小于轉(zhuǎn)TINT4</p><p>  TINT3: MOV A,#'L' ;小于低溫限發(fā)送 'L'到PC</p><p>  MOV SBUF,A</p><p>  TINT4:

115、 CALL PRO ; 處理數(shù)據(jù)</p><p>  OUTT0int: POP 05H</p><p>  POP 06H</p><p>  POP ACC</p><p><b>  RETI</b></p><p>  ; ******

116、************************</p><p>  ; * 從18B20獲得溫度數(shù)據(jù)程序 *</p><p>  ; ******************************</p><p>  GET_TEMPER:</p><p>  CALL INI_18B20 ;操作前先復(fù)位</

117、p><p>  JB HAVE,GET0 ;若18 20存在則轉(zhuǎn)</p><p>  MOV TEMP0,#0FH ;數(shù)碼管顯示000E</p><p>  MOV TEMP1,#00H</p><p>  MOV A,#'N' ;發(fā)送'

118、;N'到計(jì)算機(jī)</p><p>  MOV SBUF,A</p><p>  AJMP OUTGET ;退出</p><p>  GET0: MOV A,#0CCH ;跳過(guò) ROM匹配</p><p>  CALL WR_18B20</p><

119、p>  MOV A,#44H ;開(kāi)始轉(zhuǎn)換</p><p>  CALL WR_18B20</p><p>  MOV R6,#11H ;延遲約800MS</p><p>  GET1: LCALL DISPLY</p><p>  DJNZ R6,GET1&l

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論