單片機(jī)接口原理及應(yīng)用課程設(shè)計(jì)報(bào)告數(shù)字式溫度計(jì)設(shè)計(jì)_第1頁
單片機(jī)接口原理及應(yīng)用課程設(shè)計(jì)報(bào)告數(shù)字式溫度計(jì)設(shè)計(jì)_第2頁
單片機(jī)接口原理及應(yīng)用課程設(shè)計(jì)報(bào)告數(shù)字式溫度計(jì)設(shè)計(jì)_第3頁
單片機(jī)接口原理及應(yīng)用課程設(shè)計(jì)報(bào)告數(shù)字式溫度計(jì)設(shè)計(jì)_第4頁
單片機(jī)接口原理及應(yīng)用課程設(shè)計(jì)報(bào)告數(shù)字式溫度計(jì)設(shè)計(jì)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、單片機(jī)接口原理及應(yīng)用課程設(shè)計(jì)報(bào)告學(xué) 院: 工學(xué)院 題 目: 數(shù)字式溫度計(jì)設(shè)計(jì) 專 業(yè): 機(jī)械設(shè)計(jì)制造及其自動(dòng)化 班 級(jí): 07機(jī)電2班 姓 名: 學(xué) 號(hào): 070105085 指導(dǎo)教師: 起止日期:2010年12月1日2010年12月20日目錄一、前言(2)二、課程設(shè)計(jì)目的和要求(2)三、總體設(shè)計(jì)方案(2)1. 整體功能說明 (2)2. 硬件功能模塊組成 (2)3. 軟件功能模塊組成 (3)4. 硬件總體框圖 (3)5. 測(cè)試計(jì)劃 (3)四、系統(tǒng)硬件設(shè)計(jì)(4)1. 整體功能說明 (4)2. 硬件功能模塊組成 (4)2.1 主控制器(4)2.2 溫度測(cè)量模塊(4)2.3 顯示電路(5)2.4 溫

2、度傳感器工作原理(5)五、系統(tǒng)的軟件設(shè)計(jì)(7)1. 主程序 (7)2. 讀出溫度子程序 (8)3. 溫度轉(zhuǎn)換命令子程序 (9)4. 計(jì)算溫度子程序 (9)5. 顯示數(shù)據(jù)刷新子程序 (9)六、程序清單(10)七、結(jié)束語(17)八、參考文獻(xiàn)(18)附錄:系統(tǒng)原理圖(見a3圖紙)前言當(dāng)今社會(huì),溫度檢測(cè)系統(tǒng)被廣泛的社會(huì)生產(chǎn)、生活的各個(gè)領(lǐng)域。在工業(yè)、環(huán)境檢測(cè)、醫(yī)療、家庭等多方面都有應(yīng)用。同時(shí)單片機(jī)在電子產(chǎn)品中的應(yīng)用已經(jīng)越來越廣泛。隨著溫度檢測(cè)理論與技術(shù)的不斷更新,溫度傳感器的種類也越來越多,在微機(jī)系統(tǒng)中使用的傳感器,必須是能夠?qū)⒎请娏哭D(zhuǎn)換成電量的傳感器,目前常用的有熱電偶傳感器、熱電阻傳感器和單導(dǎo)體傳感

3、器等,每種傳感器根據(jù)其自身特性,都有它自己的應(yīng)用領(lǐng)域。本設(shè)計(jì)所介紹的數(shù)字溫度計(jì)與傳統(tǒng)的溫度計(jì)相比,具有讀數(shù)方便、測(cè)溫范圍廣、測(cè)溫準(zhǔn)確、其輸出溫度采用數(shù)字顯示等優(yōu)點(diǎn),主要用于對(duì)溫度比較準(zhǔn)確的場(chǎng)所,或科研實(shí)驗(yàn)室使用。該設(shè)計(jì)控制器使用單片機(jī)at89c51,溫度傳感器使用ds18b20,用4位共陽極led數(shù)碼管以串口顯示數(shù)據(jù),實(shí)現(xiàn)溫度顯示。2、 課程設(shè)計(jì)目的和要求1 設(shè)計(jì)目的1.學(xué)會(huì)a/d轉(zhuǎn)換芯片的用法;2.學(xué)會(huì)掌握8051單片機(jī)用法;3.學(xué)會(huì)單片機(jī)的程序設(shè)計(jì);4.培養(yǎng)查閱資料的能力。 2.設(shè)計(jì)要求 本設(shè)計(jì)主要是介紹了單片機(jī)控制下的溫度檢測(cè)系統(tǒng),詳細(xì)介紹了其硬件和軟件設(shè)計(jì),并對(duì)其各功能模塊做了詳細(xì)介紹

4、,其主要功能和指標(biāo)如下:1.利用溫度傳感器(ds18b20)測(cè)量某一點(diǎn)環(huán)境溫度;2.測(cè)量范圍為-5599,精度為0.5;3.用數(shù)碼管進(jìn)行實(shí)際溫度值顯示;4.能夠根據(jù)需要方便設(shè)定上下限報(bào)警溫度。三、總體設(shè)計(jì)方案 整體功能說明:以51單片機(jī)為主控制器,以數(shù)字式溫度傳感器ds18b20為傳感元件,以led數(shù)碼管作為顯示器件實(shí)時(shí)顯示測(cè)量溫度(十進(jìn)制數(shù))。數(shù)字式溫度計(jì)測(cè)溫范圍在55125,誤差在0.5以內(nèi)。溫度測(cè)量間隔時(shí)間選擇1 s 。 通過鍵盤擴(kuò)展,實(shí)現(xiàn)溫度上下限值的設(shè)定及溫度報(bào)警功能。對(duì)溫度采樣值實(shí)現(xiàn)數(shù)字濾波。通過硬件或軟件方法實(shí)現(xiàn)時(shí)間顯示。2. 硬件功能模塊組成:溫度計(jì)的控制器使用單片機(jī)at89c

5、2051,溫度傳感器使用ds18b20,用4位共陽led數(shù)碼管以動(dòng)態(tài)掃描法實(shí)現(xiàn)溫度顯示。主控制器: 單片機(jī)at89c2051具有低電壓供電和小體積等特點(diǎn),兩個(gè)端口剛好滿足電路系統(tǒng)的設(shè)計(jì)需要。顯示電路:顯示電路采用4位共陽led數(shù)碼管,從p1口輸出段碼,列掃描用p3.0p3.3口來實(shí)現(xiàn),列驅(qū)動(dòng)用9012三極管。3. 軟件功能組成模塊:系統(tǒng)程序主要包括主程序、讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、計(jì)算溫度子程序和顯示數(shù)據(jù)刷新子程序等。主程序:主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理ds18b20的測(cè)量溫度值。溫度測(cè)量每1 s 進(jìn)行一次。讀出溫度子程序:主要功能是讀出ram中的9字節(jié)。在讀出時(shí)須進(jìn)行c

6、rc校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。溫度轉(zhuǎn)換命令子程序:主要是發(fā)溫度轉(zhuǎn)換開始命令。計(jì)算溫度子程序:將ram中讀取值進(jìn)行bcd碼的轉(zhuǎn)換運(yùn)行,并進(jìn)行溫度值正負(fù)的判定。顯示數(shù)據(jù)刷新子程序:主要是對(duì)顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)最高數(shù)據(jù)顯示位為0時(shí),將符號(hào)顯示位移入下一位。4. 硬件總體框圖:5. 測(cè)試計(jì)劃: (1)硬件測(cè)試:主要測(cè)試各部分硬件是否能正常工作,每部分通過簡(jiǎn)單程序來檢測(cè)。 (2)軟件測(cè)試:測(cè)試軟件是否符合設(shè)計(jì)要求、是否存在bug。四、系統(tǒng)的硬件設(shè)計(jì)1. 整體功能說明:以51單片機(jī)為主控制器,以數(shù)字式溫度傳感器ds18b20為傳感元件,以led數(shù)碼管作為顯示器件實(shí)時(shí)顯示測(cè)量溫

7、度(十進(jìn)制數(shù))。數(shù)字式溫度計(jì)測(cè)溫范圍在55125,誤差在0.5以內(nèi)。溫度測(cè)量間隔時(shí)間選擇1 s 。 通過鍵盤擴(kuò)展,實(shí)現(xiàn)溫度上下限值的設(shè)定及溫度報(bào)警功能。對(duì)溫度采樣值實(shí)現(xiàn)數(shù)字濾波。通過硬件或軟件方法實(shí)現(xiàn)時(shí)間顯示。2硬件功能模塊組成:溫度計(jì)電路設(shè)計(jì)原理圖見a3圖紙,溫度計(jì)的控制器使用單片機(jī)at89c51,溫度傳感器使用ds18b20,用4位共陽極led數(shù)碼管以動(dòng)態(tài)掃描法實(shí)現(xiàn)溫度顯示。圖中有3個(gè)獨(dú)立式按鍵可以分別調(diào)整溫度的上下限報(bào)警設(shè)置,圖中蜂鳴器可以在被測(cè)溫度不在上下限范圍內(nèi)時(shí),發(fā)出報(bào)警鳴叫聲音,同時(shí)led數(shù)碼管將沒有被測(cè)溫度顯示,這時(shí)可以調(diào)整上下限,從而測(cè)出被測(cè)的溫度值。2.1主控制器單片機(jī)at

8、89c51具有低電壓供電和小體積等特點(diǎn),兩個(gè)端口剛好滿足電路系統(tǒng)的設(shè)計(jì)需要。2.2溫度測(cè)量模塊主要用到的是ds18b20溫度傳感器,將采集到的溫度模擬量(-55度到125度)轉(zhuǎn)換成數(shù)字量,并接上一個(gè)上拉電阻后再送給單片機(jī)p3.4口。2.3顯示電路顯示電路采用4位共陽極led數(shù)碼管,從p0口輸出段碼,列掃描用p2.0p2.3口來實(shí)現(xiàn),列驅(qū)動(dòng)用9012三極管。2.4溫度傳感器工作原理1. ds18b20的性能特點(diǎn)ds18b20溫度傳感器是美國dallas半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器。與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過簡(jiǎn)單的編程實(shí)現(xiàn)9-12位

9、的數(shù)字值讀數(shù)方式。ds18b20的性能特點(diǎn)如下:.獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信;.多個(gè)ds18b20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;.不需要外部器件;.可通過數(shù)據(jù)線供電,電壓范圍為3.0-5.5 v;.零待機(jī)功耗;.溫度以912位數(shù)字量讀出;.用戶可定義的非易失性溫度報(bào)警設(shè)置;.報(bào)警搜索命令識(shí)別并標(biāo)志超過程序限定溫度(溫度報(bào)警條件)的器件;. 負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,只是不能正常工作。2. ds18b20的內(nèi)部結(jié)構(gòu)ds18b20采用3腳pr一35封裝或8腳soil封裝,其內(nèi)部結(jié)構(gòu)框圖如圖4.2所示。圖4.2 ds18b20內(nèi)部結(jié)構(gòu)框圖64位ro

10、m的位結(jié)構(gòu)如圖4.3所示。開始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)警上下限數(shù)據(jù)。圖4.3 64位rom結(jié)構(gòu)框圖3.ds18b20測(cè)溫原理圖4.4所示,圖中低溫度系數(shù)振蕩器的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1;高溫度系數(shù)振蕩器隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸人。圖4.4 ds18b20的測(cè)溫原理圖圖中還隱含著計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí),ds18b20就對(duì)低溫度系數(shù)振蕩

11、器產(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ù)置值減到。時(shí),溫度寄存器的值將加1,減法計(jì)數(shù)器1的預(yù)置值將重新被裝人,并重新開始對(duì)低溫度系數(shù)振蕩器產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù)。如此循環(huán),直到減法計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值就是所測(cè)溫度值。圖4.8中的斜率累加器用于補(bǔ)償和修正測(cè)溫過程中的非線形性,其輸出用于修正減法

12、計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)門仍未關(guān)閉就重復(fù)上述過程,直到溫度寄存器值達(dá)到被測(cè)溫度值。另外 ,由 于ds18b20單線通信功能是分時(shí)完成的,有嚴(yán)格的時(shí)隙概念,因此讀/寫時(shí)序很重要。系統(tǒng)對(duì)ds18b20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化ds18b20(發(fā)復(fù)位脈沖)發(fā)rom功能命令發(fā)存儲(chǔ)器操作命令處理數(shù)據(jù)。4.ds18b20與單片機(jī)的接口電路ds 18 b 20可以采用兩種方式供電:一種是采用電源供電方式,此時(shí)ds18b20的第1腳接單片機(jī)課程設(shè)計(jì)指導(dǎo)地,第2腳作為信號(hào)線,第3腳接電源;另一種是寄生電源供電方式,如圖4.5所示。單片機(jī)端口接單線總線,為保證在有效的ds18b20時(shí)鐘周期內(nèi)提供

13、足夠的電流,可用一個(gè)mosfet管來完成對(duì)總線的上拉。當(dāng) ds 18 b20處于寫存儲(chǔ)器操作和溫度a/d轉(zhuǎn)換操作時(shí),總線上必須有強(qiáng)的上拉,上拉開啟時(shí)間最長(zhǎng)為500 ms。采用寄生電源供電方式時(shí),vdd和gnd端均接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。圖4.5 ds18b20采用寄生電源的電路圖4.測(cè)溫系統(tǒng)的硬件工作原理 對(duì)ds18b20初始化后,主機(jī)發(fā)出skip rom命令,此命令執(zhí)行后的存儲(chǔ)器操作命令將對(duì)所在線的ds18b20,在發(fā)出溫度轉(zhuǎn)換啟動(dòng)碼(44h),等待750ms后,先發(fā)出匹配rom命令(55h)緊接著主機(jī)提供一片ds18b20的64位序列號(hào),讀取其溫度存儲(chǔ)器值,存

14、入數(shù)據(jù)緩存。五、系統(tǒng)的軟件設(shè)計(jì)系統(tǒng)程序主要包括主程序、讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、計(jì)算溫度子程序和顯示數(shù)據(jù)刷新子程序等。1.主程序主程序需要調(diào)用4個(gè)子程序,分別為數(shù)碼管顯示程序,溫度測(cè)試及處理子程序,報(bào)警子程序,中斷設(shè)定子程序。各模塊程序功能如下:數(shù)碼管顯示程序:向數(shù)碼的顯示送數(shù),控制系統(tǒng)的顯示部分。溫度測(cè)試及處理程序:對(duì)溫度芯片送過來的數(shù)據(jù)進(jìn)行處理,進(jìn)行判斷和顯示。報(bào)警子程序:進(jìn)行溫度上下限判斷及報(bào)警輸出。中斷設(shè)定程序:實(shí)現(xiàn)設(shè)定上下限報(bào)警功能。主程序流程見圖5.1:圖5.1 主程序流程圖2. 讀出溫度子程序讀出溫度子程序的主要功能是讀出ram中的9字節(jié)。在讀出時(shí)須進(jìn)行crc校驗(yàn),校驗(yàn)

15、有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。其流程如圖5.2所示。發(fā)ds18b20復(fù)位命令發(fā)讀取溫度命令移入溫度暫存器結(jié)束發(fā)跳過rom命令讀取操作,crc校驗(yàn)9字節(jié)完?crc校驗(yàn)正確?nnyy圖5.2讀ds18b20流程圖3. 溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令。其流程如圖5.3所示。發(fā)ds18b20復(fù)位命令發(fā)跳過rom命令發(fā)溫度轉(zhuǎn)換開始命令結(jié)束圖5.3溫度轉(zhuǎn)換命令子程序流程圖4. 計(jì)算溫度子程序計(jì)算溫度子程序的主要功能是將ram中讀取值進(jìn)行bcd碼的轉(zhuǎn)換運(yùn)行,并進(jìn)行溫度值正負(fù)的判定。其流程如圖5.4所示。開始溫度值取補(bǔ)碼置“”標(biāo)志計(jì)算小數(shù)位溫度bcd碼計(jì)算整數(shù)位溫度bcd碼置“+”

16、標(biāo)志結(jié)束溫度零下?ny圖5.4計(jì)算溫度子程序流程5. 顯示數(shù)據(jù)刷新子程序顯示數(shù)據(jù)刷新子程序的主要功能是對(duì)顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)最高數(shù)據(jù)顯示位為0時(shí),將符號(hào)顯示位移入下一位。其流程如圖5.5所示。結(jié)束百位數(shù)顯示數(shù)據(jù)(不顯示符號(hào))十位數(shù)顯示符號(hào)百位數(shù)不顯示溫度數(shù)據(jù)移入顯示寄存器十位數(shù)0?百位數(shù)0?nnyy圖5.5 顯示數(shù)據(jù)刷新子程序流程六、程序清單 ;常數(shù)定義timel equ 0e0htimeh equ 0b1h ; 20ms,定時(shí)器0時(shí)間常數(shù)temphead equ 36h ;工作內(nèi)存定義bitst data 20htime1sok bit bitst.1temponeok b

17、it bitst.2templ data 26htemph data 27htemphc data 28htemplc data 29h ;引腳定義tempdin bit p3.4 ;中斷向量區(qū) org 0000h ljmp start org 000bh ljmp toit ;系統(tǒng)初始化 org 0030h start: mov sp,#60h clsmem: mov r0,#20h mov r1,#60hclsmem1: mov r0,#00h inc r0 djnz r1,clsmem1 mov tmod,#00100001b ;定時(shí)器0工作方式(16位) mov th0,#timel

18、mov tl0,#timeh ;20ms sjmp init error: nop ljmp start nop init: nop setb et0 setb tr0 setb ea mov psw,#00h clr temponeok ljmp main ;定時(shí)器0中斷服務(wù)程序 toit: push psw mov psw,#10h mov th0,#timeh mov tl0,#timel inc r7 cjne r7, #32h,toit1 mov r7, #00h setb time1sok ;1s定時(shí)標(biāo)志 toit1: pop psw reti ;主程序 main: lcall d

19、isp1 ;調(diào)用顯示子程序 jnb time1sok,main clr time1sok ;測(cè)溫每1s一次 jnb temponeok,main2 ;上電時(shí)先溫度轉(zhuǎn)換一次 lcall readtemp1 ;讀出溫度子程序 lcall convtemp ;溫度bcd碼計(jì)算處理子程序 lcall dispbcd ;顯示區(qū)bcd碼 溫度值刷新子程序 lcall disp1 ;消閃爍,顯示一次 main2: lcall readtemp ;溫度轉(zhuǎn)換開始 setb temponeok ljmp main ;子程序區(qū) ;復(fù)位ds18b20initds1820: setb tempdin nop nop c

20、lr tempdin mov r6,#0a0h ;延時(shí)480us djnz r6,$ mov r6,#0a0h djnz r6,$ setb tempdin mov r6,#32h ;延時(shí)70us djnz r6,$ mov r6,#3ch loop1820: mov c, tempdin jc initds1820out djnz r6, loop1820 mov r6,#064h ;延時(shí)200us djnz r6,$ sjmp initds1820 retinitds1820out:setb tempdin ret ;讀ds18b20的程序,從讀出ds18b20一字節(jié)的數(shù)據(jù)readds18

21、20: mov r7, #08h setb tempdin nop nopreadds1820loop: clr tempdin nop nop nop setb tempdin mov r6,#07h ;延時(shí)15us djnz r6,$ mov c, tempdin mov r6,#3ch ;延時(shí)120us djnz r6,$ rrc a setb tempdin djnz r7, readds1820loop mov r6,#3ch ;延時(shí)120us djnz r6,$ ret ;寫ds18b20的程序,從讀出ds18b20一字節(jié)的數(shù)據(jù) writeds1820: mov r7, #08h

22、setb tempdin nop nop writeds1820lop: clr tempdin mov r6,#07h ;延時(shí)15us djnz r6,$ rrc a mov tempdin,c mov r6,#34h ;延時(shí)104us djnz r6,$ setb tempdin djnz r7, writeds1820lop ret;*讀溫度temp* readtemp:lcall initds1820 mov a,#0cch lcall writeds1820 ;skip rom mov r6,#34h ;延時(shí)104us djnz r6,$ mov a,#44h lcall write

23、ds1820 ;開始轉(zhuǎn)換 mov r6,#34h ;延時(shí)104us djnz r6,$ retreadtemp1:lcall initds1820 mov a,#0cch lcall writeds1820 ;skip rom mov r6,#34h ;延時(shí)104us djnz r6,$mov a,#0behlcall writeds1820mov r6,#34hdjnz r6,$mov r5,#09hmov r0,#tempheadmov b,#00hreadtemp2: lcall readds1820 mov r0,a inc r0readtemp21: lcall crc8cal dj

24、nz r5,readtemp2 mov a,b jnz readtempout mov a,temphead+0 mov templ,a mov a,temphead+1 mov temph,a readtempout:ret;*處理溫度bcd碼子程序* convtemp: mov a,temph anl a ,#80h jz tempc1 clr c mov a,templ cpl a add a,#01h mov templ,a mov a,temph ;- cpl a addc a,#00h mov temph,a ;temphc hi=符號(hào)位 mov temphc,#0bh sjmp

25、tempc11tempc1: mov temphc,#0ah ;+tempc11:mov a,temphc swap a mov temphc,a mov a,templ anl a,#0fh ;乘以0.625 mov dptr,#tempdottab movc a,a+dptr mov templc,a ;templc low=小數(shù)部分bcd mov a,templ ;整數(shù)部分 anl a,#0f0h swap a mov templ,a mov a,temph anl a,#0fh swap a orl a,templ lcall hex2bcd1 mov templ,a anl a,#0

26、f0h swap a ;temphc low=十位 orl a,temphc mov temphc,a mov a,templ anl a,#0fh swap a ; temphc hi=個(gè)位 orl a,templc mov templc,a mov a,r7 jz tempc12 anl a,#0fh swap a mov r7,a mov a,temphc ;temphc hi=百位bcd anl a,#0fh orl a,r7 mov temphc,atempc12:ret;*小數(shù)碼表* tempdottab: db 00h 01h 01h 02h 03h 03h 04h 05h 05

27、h db 06h 07h 07h 08h 09h 09h;*顯示bcd碼子程序*dispbcd: mov a,templc anl a,#0fh mov 70h,a mov a,templc swap a anl a,#0fh mov 71h,a mov a,temphc anl a,#0fh mov 72h,a mov a,temphc swap a anl a,#0fh mov 73h,a mov a,temphc anl a,#0f0h cjne a,#010h,dispbcd0 sjmp dispbcd2dispbcd0: mov a,temphc anl a,#0fh jnz dis

28、pbcd2 ;十位是0 mov a,temphc swap a anl a,#0fh mov 73h,#0ah ;符號(hào)位不顯示 mov 72h,a ;十位顯示符號(hào)dispbcd2: ret ;顯示子程序;顯示數(shù)據(jù)在70h73h單元,用4位led數(shù)碼管顯示,p1口輸出段碼數(shù)據(jù);p3口作掃描控制,每個(gè)led數(shù)碼管亮1ms時(shí)間再逐位循環(huán)disp1:mov r1,#70h ;指向顯示數(shù)據(jù)首址 mov r5,#0feh ;掃描控制字初值 play:mov p0,#0ffh mov a,r5 ;掃描字放入a mov p2,a ;從p2口輸出 mov a,r1 ;取顯示數(shù)據(jù)到a mov dptr,#tab

29、;取段碼表地址 movc a,a+dptr ;查顯示數(shù)據(jù)對(duì)應(yīng)段碼 mov p0,a ;段碼放入p2口 mov a,r5 jb acc.1,loop5 ;小數(shù)點(diǎn)處理 clr p0.7 loop5:lcall dl1ms ;顯示1ms inc r1 ;指向下一地址 mov a,r5 ;掃描控制字放入a jnb acc.3,endout ;acc.3=0時(shí)顯示結(jié)束 rl a ;a中數(shù)據(jù)循環(huán)左移 mov r5,a ;放回r5內(nèi) ajmp play ;跳回play循環(huán)endout:mov p0,#0feh ;一次顯示結(jié)束,p0口復(fù)位 mov p2,#0ffh ;p2口復(fù)位 ret ;子程序返回 tab:

30、 db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0ffh,0bfh ;共陽段碼表09,不亮,-dl1ms:mov r6,#14h ;1ms延時(shí)程序dl1 :mov r7,#19hdl2 :djnz r7,dl2 djnz r6,dl1 ret; 單字節(jié)十六進(jìn)制轉(zhuǎn)bcdhex2bcd1:mov b,#064h ;十六進(jìn)制轉(zhuǎn)bcd div ab ;b=a%100 mov r7,a ;r7=百位數(shù) mov a,#0ah xch a,b div ab ;b=a%b swap a orl a,b ret; crc-8校驗(yàn)程序crc8cal: push a

31、cc mov r7,#08hcrc8loop1:xrl a,b rrc a mov a,b jnc crc8loop2 xrl a,#18hcrc8loop2:rrc a mov b,a pop acc rr a push acc djnz r7,crc8loop1 pop acc ret end七、結(jié)束語本系統(tǒng)的設(shè)計(jì),是為了保證某特定環(huán)境溫度維持在設(shè)定的范圍內(nèi),以保證工作系統(tǒng)在穩(wěn)定的狀態(tài)下工作。本系統(tǒng)的設(shè)計(jì)成本很低。如果采用大批量生產(chǎn)的話,生產(chǎn)成本會(huì)更低。在市場(chǎng)上的溫度自動(dòng)控制系統(tǒng)的價(jià)格在百元人民幣以上。對(duì)于本系統(tǒng)的使用者來說,本系統(tǒng)能夠很穩(wěn)定的控制溫度而且穩(wěn)定性很高。只要配上適當(dāng)?shù)臏囟葌鞲衅鳎@個(gè)系統(tǒng)便還可以實(shí)現(xiàn)很多領(lǐng)域的溫度自動(dòng)控制。這對(duì)于提高系統(tǒng)的利用率,避免重復(fù)設(shè)計(jì)有很大的幫助的。在本系統(tǒng)的作用下,可以為工作系統(tǒng)提供一個(gè)

溫馨提示

  • 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. 人人文庫網(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)論