版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 單片機課程設計報告</b></p><p><b> 數字溫度計</b></p><p> 2009 年6月 15日</p><p><b> 摘要</b></p><p> 隨著電子技術的進步和發(fā)展,單片機的應用已經普及到我們生活、工作、
2、科研等各個領域,其技術日趨成熟和完善。本設計是一個基于AT89S52單片機,采用“一線總線”數字化溫度傳感器DS18B20的測溫系統(tǒng)。采用WAVE6000集成調試軟件編寫匯編程序實現溫度的轉化、數值計算以及數碼管顯示當前溫度功能,并且可以通過按鍵設置高低溫報警溫度,對應配置報警器和報警指示燈。數碼管顯示采取動態(tài)掃描的方法,簡化了硬件電路;溫度調整運用中斷處理,保證了報警溫度調整的實時性。本設計可以方便快捷的實現溫度的采集和顯示,具有精度
3、高、測溫范圍寬、體積小、功耗低等優(yōu)點,適用于我們日常生活和工、農業(yè)生產中的溫度測量,也可以作為溫度處理模塊嵌入其它系統(tǒng)中,作為其他主系統(tǒng)的擴展電路。DS18B20與AT89S52結合實現最簡溫度檢測系統(tǒng),結構簡單,抗干擾能力強,適合于惡劣環(huán)境下進行現場溫度測量,有廣泛的應用前景。</p><p> 關鍵詞:一線總線 動態(tài)掃描 中斷處理 報警溫度</p><p><b> 目錄
4、</b></p><p><b> 1 概述3</b></p><p> 1.1 設計目的與意義3</p><p> 1.2 設計任務及要求3</p><p> 2 系統(tǒng)總體方案及硬件設計4</p><p> 2.1數字溫度計設計方案論證:4</p>
5、<p> 2.1.1 方案一4</p><p> 2.1.2 方案二4</p><p> 2.1.3 方案三4</p><p> 2.2 選用方案的設計思路4</p><p> 2.2.1 主控芯片5</p><p> 2.2.2 顯示電路5</p><p>
6、 2.2.3 報警溫度調整電路5</p><p> 2.2.4 報警電路5</p><p> 2.2.5 溫度傳感器5</p><p> 2.3 DS18B20溫度傳感器與單片機的接口電路6</p><p> 2.4 系統(tǒng)整體硬件電路7</p><p><b> 3 軟件設計9</
7、b></p><p><b> 3.1主程序9</b></p><p> 3.2讀溫度子程序10</p><p> 3.3報警溫度調整子程序11</p><p> 3.4 顯示子程序12</p><p><b> 4 實驗仿真13</b></p
8、><p> 4.1 溫度顯示13</p><p> 4.2 報警溫度調節(jié)15</p><p> 5 課程設計體會17</p><p><b> 參考文獻17</b></p><p> 附件1: 源程序代碼18</p><p> 附件2: 系統(tǒng)原理圖2
9、7</p><p><b> 1 概述</b></p><p> 隨著電子技術水平的不斷提高,單片機在日常生活中的應用也越來越廣泛,它所給人類帶來的方便也是有目共睹的,其中數字溫度計就是一個典型的例子。隨著人們對它的要求越來越高,要為現代人的生活、工作以及科研提供更為方便的設施還需要從單片機技術和更優(yōu)越的溫度傳感器入手,一切向著數字化控制,智能化控制方向發(fā)展。
10、 我們設計的數字溫度計與傳統(tǒng)的溫度計相比,具有讀數直觀、方便,測溫范圍廣,測溫準確等優(yōu)點,其輸出溫度采用數碼管顯示。主要應用于對測溫精度和測溫范圍要求比較高的場所,也可在科研實驗室使用。該設計主控芯片使用AT89S52單片機,測溫傳感器使用“一線總線”數字化溫度傳感器DS18B20,使用4位共陰極LED數碼管以動態(tài)掃描方式,實現溫度顯示,能準確達到以上要求。</p><p> 1.1 設計目的與意義<
11、/p><p> 綜合利用所學單片機知識完成一個單片機應用系統(tǒng)設計并仿真實現所要求的功能,從而加深對單片機軟硬件知識的理解和對相關傳感器的原理和使用方法的掌握,獲得進一步的應用實踐經驗,為走出校門從事單片機應用的相關工作打下基礎。該設計同時也是我們對所學理論知識進行的檢測和驗證,理論與實踐相結合,探索知識的真理殿堂,不拘泥于課本,培養(yǎng)自己發(fā)現問題并獨立解決問題的能力。</p><p> 1.
12、2 設計任務及要求 1)基本范圍-50℃-110℃ 2)精度誤差小于0.5℃ 3)LED數碼直讀顯示 4)擴展功能 5)可以任意設定上下限報警溫度</p><p> 2 系統(tǒng)總體方案及硬件設計</p><p> 2.1數字溫度計設計方案論證:</p><p> 2.1.1 方案一 由于本設計是測溫電路,
13、可以使用熱敏電阻等器件利用其感溫效應,在把隨溫度變化的電壓或電流采集過來進行A/D轉換之后,再利用單片機進行數據的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設計需要用到A/D轉換電路,感溫電路比較麻煩,而且熱敏電阻的線性度不高,測量精度。</p><p> 2.1.2 方案二 直接使用數字溫度傳感器來測溫,可以使用“一線總線”數字化溫度傳感器DS18B20。此傳感器可以直接讀取被測溫度值,只需進
14、行簡單轉換,就可以得到所測環(huán)境的溫度值。顯示電路采用串口移位靜態(tài)顯示方式,采用串入并出移位芯片74LS164和數碼管來實現溫度的顯示。</p><p> 2.1.3 方案三 也是直接使用數字溫度傳感器DS18B20來測溫,但顯示電路采用動態(tài)掃描的方式來實現,電路簡單,容易實現,節(jié)約成本。 比較以上三種方案,很容易看出,采用方案三,硬件電路比較簡單,軟件設計也不難,是為最佳選擇,故采用方案三。&l
15、t;/p><p> 2.2 選用方案的設計思路 數字溫度計電路設計總體設計方框圖如圖2-1所示,主控芯片采AT89S52,溫度傳感器采用DS18B20,用4位LED數碼管以動態(tài)掃描方式實現溫度顯示,報警溫度調整采用獨立按鍵,報警電路由蜂鳴器和報警指示燈組成。 </p><p> 圖2-1 系統(tǒng)總體框圖</p><p> 2.2.1 主控芯片 AT
16、89S52價格便宜、體積小,很適合便攜手持式產品的設計,4個IO端口和2個外部中斷完全能滿足本設計的需要。</p><p> 2.2.2 顯示電路</p><p> 顯示電路采用4位共陰LED數碼管,從P0口輸出段碼,接470Ω上拉電阻,用P2口的P2.4-P2.7腳來輸出數碼管動態(tài)掃描位選信號。</p><p> 2.2.3 報警溫度調整電路</p&g
17、t;<p> 采用獨立鍵盤,分別用外部中斷0和1來調整高溫報警溫度和低溫報警溫度,在中斷中查詢加減按鍵的動作來調整溫度,進入中斷后,清EA,然后將與中斷1即P3.3腳相連的按鍵作為確定鍵使用。</p><p> 2.2.4 報警電路</p><p> 采用蜂鳴器來發(fā)出報警聲音,超高亮發(fā)光二極管作為報警指示燈,由于AT89S52的驅動能力較弱,所以蜂鳴器要加三極管驅動,報
18、警燈外接上拉電阻,單片機用灌電流方式點亮它,可獲得較高的亮度!</p><p> 2.2.5 溫度傳感器 DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它可根據實際要求通過簡單的編程實現9~12位的分辨率的設定。</p><p> DS18B20的性能特點如下: ●零待機功耗;●溫度以9或12位數字;
19、●用戶可定義報警設置;</p><p> ●可通過數據線供電,電壓范圍為3.0~5.5V;</p><p> ●獨特的單線接口,僅需要一個端口引腳進行通信;●多個DS18B20可以并聯在一條線上,輕松實現傳感器網絡組建;●報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件。 </p><p> DS18B20內部高速暫存RAM為8字節(jié)的
20、存儲器,前2個字節(jié)包含測得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復位時被刷新。第5個字節(jié),為配置寄存器,它的內容用于確定溫度值的數字轉換分辨率。</p><p> DS18B20溫度轉換得時間比較長,而且分辨率越高,所需要得溫度數據轉換時間越長。具體得分辨率轉換為相應精度得溫度數值所需時間如表2-1所示。我</p><p> 們的設計采用12位精度,因此對18B
21、20操作時要對時序根據表2-1來調整。</p><p> 當DS18B20接收到溫度轉換命令后,開始啟動轉換。轉換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第1、2字節(jié)中。單片機可以通過單線接口讀出該數據,讀數據時低8位在先,高8位在后,數據格式以0.0625℃/LSB形式表示。當符號位S=0時,表示測得的溫度值為正值,可以直接將二進制位轉換為十進制;當符號位S=1時,表示測得的溫
22、度值為負值,要先將補碼變成原碼,再計算十進制數值。</p><p> 表2-1 DS18B20溫度轉換時間表</p><p> 另外,由于DS18B20單線通信功能是分時完成的,它有嚴格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作按協(xié)議進行。操作協(xié)議為:初使化DS18B20(發(fā)復位脈沖)→發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數據。</p><
23、p> 1、初始化:單總線的所有處理均從初始化開始。初始化過程是主機通過向作為從機的DS18B20芯片發(fā)一個具有一定時間寬度的初始化脈沖實現的。初始化后,才可進行讀寫操作。</p><p> 2 、ROM操作命令:總線主機檢測到DS18B20的存在 便可以發(fā)出ROM操作命令。ROM操作命令如表2-2所示:</p><p> 表2-2 ROM操作命令</p><
24、;p> 3、存儲器操作:存儲器操作命令如表2-3所示:</p><p> 4、時序:主機使用時間隙(time slots)來讀寫DS18B20的數據位和寫命令字的位。</p><p> 2.3 DS18B20溫度傳感器與單片機的接口電路</p><p> DS18B20可以采用兩種方式供電,一種是采用電源供電方式,此時DS18B20的1腳接地,2腳作為
25、信號線,3腳接電源;另一種是寄生電源供電方式。本設計采用第一種供電方式,為保證在有效的DS18B20時鐘周期內提供足夠的電流,可在信號線與電源線之間接上拉電阻,接口電路如圖2-2所示。</p><p> 表2-3 存儲區(qū)操作命令</p><p> 圖2-2 DS18B20與單片機的接口電路</p><p> 2.4 系統(tǒng)整體硬件電路</p>
26、<p> 系統(tǒng)整體硬件電路包括:傳感器數據采集電路,溫度顯示電路,上下限報警溫度調整電路和報警電路,如圖2-3所示。圖中有4個獨立式按鍵可以分別調整溫度計的上下限報警溫度,蜂鳴器可以在被測溫度超出上下限范圍內時,發(fā)出報警鳴叫聲音,同時報警指示燈超高亮發(fā)光二極管將被點亮。圖中畫出來的是上電復位電路,實際電路將采用按健加上電復位電路,使用比較方便,在程序跑飛時,可以手動復位,這樣就不用重啟單片機電源,就可以實現復位。顯示電路采用
27、動態(tài)掃描方式,這樣不僅使用單片機端口較少,而且外圍電路也比較簡單。</p><p> 圖2-3 系統(tǒng)整體硬件電路</p><p><b> 3 軟件設計</b></p><p> 系統(tǒng)程序主要包括主程序,讀溫度子程序,報警溫度調整子程序和顯示子程序。</p><p><b> 3.1主程序</b
28、></p><p> 主程序的主要功能是負責溫度的實時顯示、讀出并處理DS18B20測量的當前溫度值,其程序流程如圖3-1所示。</p><p> 圖3-1 主程序流程圖</p><p><b> 3.2讀溫度子程序</b></p><p> 讀出溫度子程序的主要功能是讀出溫度轉換之后RAM中的前2個字節(jié)
29、中暫存的溫度值,其程序流程圖如圖3-2所示。</p><p> 圖3-2 讀溫度流程圖</p><p> 3.3報警溫度調整子程序</p><p> 報警溫度調整子程序主要是對按鍵的處理,具體流程如圖3-3所示。</p><p> 圖3-3 報警溫度調整流程圖</p><p><b> 3.4
30、顯示子程序</b></p><p> 顯示子程序要先判斷要顯示的是18B20采集到的溫度值還是報警溫度值,再計算出溫度值的百位(若溫度值大于99°C)、十位和個位并掃描顯示,如圖3-4。</p><p> 圖3-4 顯示流程圖</p><p><b> 4 實驗仿真</b></p><p>
31、<b> 4.1 溫度顯示</b></p><p> 由于18B20的測溫范圍是-55~125°C,所以當溫度為負值時,第一位數碼管用來顯示溫度的負號,如圖4-1所示。</p><p><b> 圖4-1</b></p><p> 當溫度值的十位數字為0時,不顯示,如圖4-2所示。</p>
32、<p><b> 圖4-2</b></p><p> 溫度值為正且小于100°C時,第一位數碼管也是用來顯示符號,為正時不顯示,如圖4-3。</p><p><b> 圖4-3</b></p><p> 當溫度值大于等于100°C時,第一位數碼管用來顯示溫度的百位數字,如圖4-4。&l
33、t;/p><p><b> 圖4-4</b></p><p> 4.2 報警溫度調節(jié)</p><p> 調節(jié)高溫報警溫度時,先按下高溫調節(jié)按鍵,進入高溫調節(jié)模式,此時4位數碼管的第一位當報警溫度小于100°C時不顯示,大于等于100°C時顯示百位數字,第二位顯示報警溫度的十位數字,第三位顯示報警溫度的個位,第四位顯示“H”
34、 ,表示處于高溫報警溫度調節(jié)狀態(tài)。按下加一鍵后報警溫度值會加一并且數碼管閃亮一次顯示更新的高溫報警溫度值,按下減一鍵時執(zhí)行同樣操作。直到按下確定鍵,才退出設定狀態(tài)。</p><p> 高溫報警溫度調節(jié)狀態(tài)如圖4-5所示。</p><p> 調節(jié)低溫報警溫度時,先按下低溫調節(jié)按鍵,進入低溫調節(jié)模式,數碼管顯示和高溫調節(jié)時相似,只是第四位顯示“L” ,表示處于低溫報警溫度調節(jié)狀態(tài)。按鍵操作
35、也和高溫調節(jié)時相同。</p><p> 低溫報警溫度調節(jié)狀態(tài)如圖4-6所示。</p><p> 在此值得一提的是低溫調節(jié)按鍵和確認鍵是復用的,也就是說如果按下低溫調節(jié)按鍵后再按一次,就會直接退出低溫設定狀態(tài)。另外低溫調節(jié)按鍵還具有關報警電路的功能,當所測溫度值超出上下限報警溫度時,蜂鳴器響同時報警指示燈亮,此時連續(xù)按下2次確認鍵即可關掉報警,再連續(xù)按下2次確認鍵就又進入了報警狀態(tài)。&l
36、t;/p><p> 圖4-5 高溫報警溫度調節(jié)</p><p> 圖4-6 低溫報警溫度調節(jié)</p><p><b> 5 課程設計體會</b></p><p> 經過將近三周的學習與實踐,終于成功的完成了我的數字溫度計的設計,它的各方面的性能基本上都已達到課程設計要求。 </p><p>
37、; 在本次設計過程中,我發(fā)現了很多的問題,而這些問題是在只學習課本知識時所不能遇到的,比如說由于AT89S52的端口驅動能力較弱,用P0口送段碼時要接上拉電阻,數碼管的位選端理論上采用三極管驅動才能使數碼管的亮度比較可觀,可是在實際操作中,接上三極管驅動后出現了亮度不均勻的現象,而且很容受到干擾,去掉三極管驅動電路之后,顯示正常,而且亮度也能滿足要求,這就是理論與實踐的差別。我在大量搜集資料的基礎上,結合向同學和老師請教的策略,把遇到
38、的問題都一一解決了,這使我增長了不少知識。尤其在用匯編語言編寫單片機程序方面,我終于邁出了堅實的一步。</p><p> 從這次的課程設計中,我真真切切的體會到了理論與實踐的差距,所以在以后的學習中,我會更加注意理論聯系實際,多親自動手操作。把我所學的理論知識運用到實踐當中去,在實踐中檢驗理論知識,以此來加深對其的理解和掌握。這是我在這次課程設計中的最大收獲。</p><p><b
39、> 參考文獻</b></p><p> [1] 余發(fā)山,王福忠,單片機原理及應用技術,徐州:中國礦業(yè)大學出版社,2008,</p><p> [2] 王為青,邱文勛,51單片機應用開發(fā)案例精選,北京:人民郵電出版社,2007.8,145-158</p><p> 附件1: 源程序代碼</p><p><b&g
40、t; ;溫度檢測</b></p><p> TEMPER_L EQU 29H ;溫度低8位</p><p> TEMPER_H EQU 28H ;溫度高8位</p><p> FLAG0 EQU 35H
41、 ;溫度調整狀態(tài)標志</p><p> FLAG1 EQU 36H ;是否檢測到18b20標志位</p><p> FLAG2 EQU 37H ;報警標志位</p><p> FLAG3 EQU 38H
42、 ;高低溫調整標志位</p><p> FLAG4 EQU 39H ;閃爍標志位</p><p> F_BIT EQU 20H ;符號位</p><p> A_BIT EQU 21H
43、 ;數碼管個位</p><p> B_BIT EQU 22H ;數碼管十位</p><p> X_BIT EQU 23H ;小數位</p><p> H_TEM EQU 24H
44、 ;高溫報警</p><p> L_TEM EQU 25H ;低溫報警</p><p> DQ BIT P2.2 ;18B20數據線</p><p> ORG 0000H</p>
45、;<p> LJMP MAIN</p><p> ORG 0003H</p><p> LJMP KEY_H</p><p> ORG 0013H</p><p> LJMP KEY_L</p><p> ORG 0050H</p><p
46、> MAIN: MOV SP,#57H</p><p> MOV TCON,#00H ;定義中斷方式</p><p> SETB EX0</p><p> SETB EX1</p><p> SETB EA</p><p> MOV
47、 24H,#35 ;送高溫報警初值</p><p> MOV 25H,#15 ;送低溫報警初值</p><p> CLR FLAG2</p><p> MAIN0: LCALL GET_TEMPER ;讀轉換溫度</p><
48、;p> MOV A,28H</p><p> ANL A,#0F0H</p><p> JZ ZHENG ;判斷符號位</p><p><b> CLR C</b></p><p> MOV A,29H</p><p
49、><b> CPL A</b></p><p><b> INC A</b></p><p> MOV 29H,A</p><p> MOV A,28H</p><p><b> CPL A</b></p>&l
50、t;p> JNC AAA</p><p><b> INC A</b></p><p> AAA: MOV 28H,A</p><p> MOV F_BIT,#10</p><p> AJMP BBB</p><p> ZHEN
51、G: MOV F_BIT,#11</p><p> BBB: MOV A,29H</p><p> ANL A,#0FH</p><p> MOV DPTR,#NUMTAB2 ;查表求得小數位值</p><p> MOVC A,@A+DPTR</p&g
52、t;<p> MOV X_BIT,A</p><p> MOV A,29H</p><p> MOV C,40H</p><p><b> RRC A</b></p><p> MOV C,41H</p><p><b> RRC
53、 A</b></p><p> MOV C,42H</p><p><b> RRC A</b></p><p> MOV C,43H</p><p><b> RRC A</b></p><p> JB
54、FLAG2,ABOVE ;若報警標志位為1,關報警</p><p> CJNE A,24H,BUD ;若報警標志位為0,則判斷是否</p><p> BUD: JC BELOW ;報警</p><p> SETB P2.0</p>
55、<p> CLR P2.1</p><p> AJMP DDD</p><p> BELOW: CJNE A,25H,BUD0</p><p> BUD0: JNC ABOVE</p><p> SETB P2.0</p><p>
56、 CLR P2.1</p><p> AJMP DDD</p><p> ABOVE: CLR P2.0</p><p> SETB P2.1</p><p> DDD: MOV 29H,A</p><p> CLR FLAG0<
57、/p><p> LCALL DISPLAY ;調用顯示子程序</p><p> AJMP MAIN0 ;循環(huán)處理</p><p> ;DS18B20復位初始化</p><p> INIT_18B20: SETB DQ</p><p>&
58、lt;b> NOP</b></p><p><b> CLR DQ</b></p><p> MOV R1,#3</p><p> TSR1: MOV R0,#107</p><p> DJNZ R0,$</p><p> DJNZ
59、 R1,TSR1</p><p><b> SETB DQ</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> M
60、OV R0,#25</p><p> TSR2: JNB DQ,TSR3</p><p> DJNZ R0,TSR2</p><p> LJMP TSR4</p><p> TSR3: SETB FLAG1</p><p> LJMP TSR5&l
61、t;/p><p> TSR4: CLR FLAG1</p><p> LJMP TSR7</p><p> TSR5: MOV R0,#117</p><p> TSR6: DJNZ R0,TSR6</p><p> TSR7:
62、 SETB DQ</p><p><b> RET</b></p><p><b> ;讀出轉換后的溫度</b></p><p> GET_TEMPER: SETB DQ</p><p> LCALL INIT_18B20</p><p> JB
63、 FLAG1,TSS2</p><p><b> CLR DQ</b></p><p><b> RET</b></p><p> TSS2: MOV A,#0CCH</p><p> LCALL WRITE_18B20</p><p&g
64、t; MOV A,#44H</p><p> LCALL WRITE_18B20</p><p> LCALL DISPLAY</p><p> LCALL INIT_18B20</p><p> MOV A,#0CCH</p><p> LCALL WRITE_18B20</p><
65、;p> MOV A,#0BEH</p><p> LCALL WRITE_18B20</p><p> LCALL READ_18B20</p><p><b> RET</b></p><p><b> ;寫DS18B20</b></p><p> WR
66、ITE_18B20: MOV R2,#8</p><p><b> CLR C</b></p><p> WR1: CLR DQ</p><p> MOV R3,#5</p><p> DJNZ R3,$</p><p><b> RRC
67、 A</b></p><p> MOV DQ,C</p><p> MOV R3,#21</p><p> DJNZ R3,$</p><p><b> SETB DQ</b></p><p><b> NOP</b></p&
68、gt;<p> DJNZ R2,WR1</p><p><b> SETB DQ</b></p><p><b> RET</b></p><p> ;讀18b20的子程序</p><p> READ_18B20: MOV R4,#2</p>&l
69、t;p> MOV R1,#29H</p><p> RE00: MOV R2,#8</p><p> RE01: CLR C</p><p><b> SETB DQ</b></p><p><b> NOP</b></p>
70、;<p><b> NOP</b></p><p><b> CLR DQ</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b&g
71、t;</p><p><b> SETB DQ</b></p><p> MOV R3,#8</p><p> RE10: DJNZ R3,RE10</p><p> MOV C,DQ</p><p> MOV R3,#21</p>&l
72、t;p> RE20: DJNZ R3,RE20</p><p><b> RRC A</b></p><p> DJNZ R2,RE01</p><p> MOV @R1,A</p><p><b> DEC R1</b></p>
73、<p> DJNZ R4,RE00</p><p><b> RET</b></p><p> ;報警溫度調整子程序</p><p> KEY_H: ACALL D5MS</p><p> JB P3.2,OVER</p><p><b>
74、 PUSH ACC</b></p><p><b> PUSH PSW</b></p><p><b> SETB RS0</b></p><p><b> CLR EA</b></p><p> SETB FLAG0
75、 ;置位溫度調整標志位</p><p> SETB FLAG3 ;置位高溫報警調整標志位</p><p> MOV A,24H</p><p> MOV 30H,A</p><p> KEY_CH: JB P3.4,JJ_H</p><p&g
76、t; ACALL D20MS</p><p> JB P3.4,JJ_H</p><p><b> INC 24H</b></p><p> MOV A,24H</p><p> MOV 30H,A</p><p> ACALL DISPLAY</p>&
77、lt;p> JJ_H: JB P3.5,QD_H</p><p> ACALL D20MS</p><p> JB P3.5,QD_H</p><p><b> DEC 24H</b></p><p> MOV A,24H</p><p>
78、 MOV 30H,A</p><p> ACALL DISPLAY</p><p> QD_H: JB P3.3,KEY_CH</p><p> ACALL D5MS</p><p> JB P3.3,KEY_CH</p><p> CLR FLAG0
79、 ;即將退出調整,清零調整狀態(tài)位</p><p><b> CLR RS0</b></p><p><b> POP PSW</b></p><p><b> POP ACC</b></p><p><b> SETB EA&l
80、t;/b></p><p> OVER: RETI</p><p> KEY_L: ACALL D20MS</p><p> JB P3.3,OVER0</p><p><b> PUSH ACC</b></p><p><b> PU
81、SH PSW</b></p><p><b> SETB RS0</b></p><p> SETB FLAG0 ;置位溫度調整標志位</p><p> CPL FLAG2 ;對報警標志位取反</p><p> CL
82、R FLAG3 ;清零高溫報警調整標志位</p><p><b> CLR EA</b></p><p> MOV A,25H</p><p> MOV 30H,A</p><p> KEY_CL: JB P3.4,JJ_L</p>
83、;<p> ACALL D20MS</p><p> JB P3.4,JJ_L</p><p> INC 25H</p><p> MOV A,25H</p><p> MOV 30H,A</p><p> ACALL DISPLAY</p><p&g
84、t; JJ_L: JB P3.5,QD_L</p><p> ACALL D20MS</p><p> JB P3.5,QD_L</p><p><b> DEC 25H</b></p><p> MOV A,25H</p><p> MOV
85、 30H,A</p><p> ACALL DISPLAY</p><p> QD_L: JB P3.3,KEY_CL</p><p> ACALL D20MS</p><p> JB P3.3,KEY_CL</p><p> CLR FLAG0
86、 ;即將退出調整,清零調整狀態(tài)位</p><p><b> CLR RS0</b></p><p><b> POP PSW</b></p><p><b> POP ACC</b></p><p><b> SETB EA</b&
87、gt;</p><p> OVER0: RETI</p><p><b> ;顯示子程序</b></p><p> DISPLAY: JB FLAG0,JIAN ;調整狀態(tài)位為1,報警溫度送顯示處理</p><p> MOV A,29H
88、 ;否則處理溫度傳感器讀取的溫度值</p><p><b> AJMP TEM</b></p><p> JIAN: MOV A,30H</p><p> TEM: CJNE A,#100,NX ;若溫度>=100°,符號位用來顯示百位</p&
89、gt;<p> NX: JC NNN</p><p> MOV B,#100</p><p><b> DIV AB</b></p><p> MOV F_BIT,A</p><p> MOV 29H,B</p><p> M
90、OV A,29H</p><p><b> AJMP MM</b></p><p> NNN: JNB FLAG0,MM</p><p> MOV F_BIT,#11 ;若符號位值為0,不顯示</p><p> MM: MOV B,#
91、10</p><p><b> DIV AB</b></p><p> MOV B_BIT,A</p><p> MOV A_BIT,B</p><p> MOV R1,#200 ;循環(huán)顯示200次</p><p> DPLOP:
92、 MOV A,F_BIT</p><p> MOV DPTR,#NUMTAB1 ;查表顯示</p><p> MOVC A,@A+DPTR</p><p> MOV P0,A</p><p> CLR P2.7</p><p> ACALL D1MS</p>&l
93、t;p> SETB P2.7</p><p> MOV A,B_BIT</p><p> JNZ CCC</p><p> MOV A,F_BIT</p><p> CJNE A,#10,VVV</p><p> VVV: JC CCC</p>
94、<p> MOV B_BIT,#11 ;當符號位用作百位且十位為0時</p><p> MOV A,B_BIT ;顯示0,否則不顯示0</p><p> CCC: MOVC A,@A+DPTR</p><p> MOV P0,A</p><p&
95、gt; CLR P2.6</p><p> ACALL D1MS</p><p> SETB P2.6</p><p> JB FLAG0,XIAO ;報警溫度調整狀態(tài)時 </p><p> MOV A,X_BIT ;高溫報警調整H或低溫報警調整L<
96、;/p><p> AJMP XIAO1</p><p> XIAO: JB FLAG3,GAO</p><p> MOV A,#13</p><p> AJMP XIAO1</p><p> GAO: MOV A,#12</p><p>
97、XIAO1: MOVC A,@A+DPTR</p><p> MOV P0,A</p><p> CLR P2.4</p><p> ACALL D1MS</p><p> SETB P2.4</p><p> MOV A,A_BIT</p><p>
98、 MOVC A,@A+DPTR</p><p> MOV P0,A</p><p> JB FLAG0,NEXT</p><p> SETB P0.7</p><p> NEXT: CLR P2.5</p><p> ACALL D1MS</p><p&
99、gt; SETB P2.5</p><p> JB FLAG0,NEXT0</p><p> CLR P0.7</p><p> NEXT0: DJNZ R1,DPLOP</p><p><b> RET</b></p><p><b> ;延時1
100、ms</b></p><p> D1MS: MOV R7,#200</p><p> L1: DJNZ R7,$</p><p><b> RET</b></p><p><b> ;延時5ms</b></p><p&g
101、t; D5MS: MOV R6,#5</p><p> L3: ACALL D1MS</p><p> DJNZ R6,L3</p><p><b> RET</b></p><p><b> ;延時20MS</b></p><p
102、> D20MS: MOV R5,#4</p><p> L2: ACALL D5MS</p><p> DJNZ R5,L2</p><p><b> RET</b></p><p> NUMTAB1: DB 3FH,06H,5BH,4FH,66H,6DH,7D
103、H ;共陰極數碼管7段碼</p><p> DB 07H ,7FH,6FH,40H,00H,76H,38H</p><p> NUMTAB2: DB 00H,01H,01H,02H,03H,03H,04H,04H ;小數位碼表</p><p> DB 05H,06H,06H,007H,08H,08H,09H,09H</
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設計--數字溫度計
- 單片機課程設計-數字溫度計
- 單片機課程設計—數字溫度計
- 單片機數字溫度計課程設計
- 單片機課程設計---數字溫度計
- 單片機課程設計-數字溫度計
- 單片機課程設計—數字溫度計
- 單片機課程設計——數字溫度計
- 單片機課程設計—數字溫度計
- 單片機課程設計-數字溫度計
- 數字溫度計--單片機課程設計
- 數字溫度計課程設計---基于51單片機數字溫度計設計
- 單片機課程設計--數字溫度計設計
- 單片機課程設計--數字溫度計設計
- 溫度計課程設計---基于51單片機數字溫度計設計
- 單片機課程設計---單片機數字顯示溫度計
- 數字溫度計課程設計---基于51單片機數字溫度計設計
- 單片機課程設計數字溫度計
- 單片機課程設計報告--數字溫度計
- 單片機課程設計報告數字溫度計
評論
0/150
提交評論