版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 水溫控制系統(tǒng)設(shè)計(jì)報(bào)告</p><p><b> 摘要</b></p><p> 考慮到題目的要求,本設(shè)計(jì)采用單片機(jī)開實(shí)現(xiàn),設(shè)計(jì)采用現(xiàn)成有的AT89C52單片機(jī)(實(shí)際AT89C2051即可滿足要求)。單片機(jī)軟件編程靈活,自由度大,可用軟件編程實(shí)現(xiàn)各種控制算法和各種邏輯控制。</p><p><b> 本設(shè)計(jì)的
2、主要特點(diǎn):</b></p><p> 1)溫度采集部分采用DS18B20單總線數(shù)字溫度傳感器。DS18B20具有微型化,低功耗,高性能,抗干擾能力強(qiáng)的特點(diǎn)。該器件將半導(dǎo)體溫敏器件,A/D轉(zhuǎn)換器,存儲(chǔ)器等集成在一個(gè)芯片上,傳感器輸出的就是溫度信號(hào)數(shù)字值。使用該器件不僅大大簡(jiǎn)化了溫度采集部分,而且也提高了溫度采集部分的抗干擾性。</p><p> 2)控制部分采用固態(tài)繼電器。&
3、lt;/p><p> a固態(tài)繼電器內(nèi)部采用光耦合方式,可實(shí)現(xiàn)弱電部分與強(qiáng)電部分的完全隔離。</p><p> b固態(tài)繼電器的反應(yīng)時(shí)間較短。考慮到加熱器件的熱慣性,使用固態(tài)繼電器在實(shí)際溫度接近設(shè)定溫度時(shí)可采用調(diào)節(jié)輸出信號(hào)占空比的方式(即PWM方式)來控制繼電器的通斷,使系統(tǒng)穩(wěn)定時(shí)間縮短。</p><p> 3)設(shè)定值可被記憶。DS18B20內(nèi)部含有EEPROM電擦除
4、ROM用于存儲(chǔ)設(shè)定的上下限報(bào)警值,因此每次設(shè)定的值都可以被存儲(chǔ)下來,直到下一次設(shè)定為止。</p><p><b> 一.方案論證和比較</b></p><p><b> ?。?)方案一</b></p><p> 采用二位式模擬控制方案,利用上下限比較電路,提高精度。這種方法是模擬控制方式,因此不能實(shí)現(xiàn)復(fù)雜的控制算法使控
5、制精度做得較高,而且不能用數(shù)碼顯示和鍵盤設(shè)定。(框圖見C-1)</p><p><b> ?。▓DC-1)</b></p><p><b> ?。?)方案二</b></p><p> 采用熱敏電阻作傳感器,以AT89C52單片機(jī)為核心進(jìn)行整個(gè)系統(tǒng)的管理、協(xié)調(diào)。該方案有A/D轉(zhuǎn)換、測(cè)量和控制等部分。比第一種方案有設(shè)計(jì)靈活、精
6、度高等優(yōu)點(diǎn)。但該方案采用A/D轉(zhuǎn)換器,在線路設(shè)計(jì)上數(shù)據(jù)線多,不易實(shí)現(xiàn)數(shù)摸隔離,且成本高。(框圖見C-2)</p><p><b> ?。驁D見C-2)</b></p><p><b> (3)方案三</b></p><p> 此方按采用AT89C52單片機(jī),并利用溫度傳感器DS18B20。它具有精度高﹑可靠性好和能直接
7、將模擬被測(cè)量轉(zhuǎn)換成數(shù)字量輸出,因此不需要加A/D轉(zhuǎn)換,電路更加簡(jiǎn)單。加上單片機(jī)軟件編程靈活﹑自由度大,可用軟件編程實(shí)現(xiàn)各種控制算法和邏輯控制。單片機(jī)系統(tǒng)可用數(shù)碼管顯示水溫的實(shí)際值,可用鍵盤輸入設(shè)定值。(設(shè)計(jì)框圖如圖C—3所示)</p><p><b> ?。?圖C—3)</b></p><p><b> 方案論證</b></p>
8、<p> 方案一是傳統(tǒng)的模擬控制方式,而模擬的控制系統(tǒng)難以實(shí)現(xiàn)復(fù)雜控制規(guī)律,控制方案的修改也比較麻煩。而方案二雖采用AT89C52為控制核心,但它利用摸數(shù)轉(zhuǎn)換器件實(shí)現(xiàn)數(shù)據(jù)采集,它在電路設(shè)計(jì)上比較復(fù)雜。而方案三是采用AT89C52為控制核心的單片機(jī)控制系統(tǒng),利用數(shù)字溫度傳感器DS48B20進(jìn)行溫度的采集。DS18B20可以直接讀出被測(cè)溫度,而且采用三線制與單片機(jī)相連減少了外部硬件電路,具有低成本和易使用的特點(diǎn)。在電路上設(shè)計(jì)上比
9、方案二更加簡(jiǎn)單,也可以實(shí)現(xiàn)顯示、鍵盤設(shè)定、報(bào)警等功能,大大的提高了系統(tǒng)的智能化,也使得系統(tǒng)所測(cè)結(jié)果精度大大提高。故經(jīng)過對(duì)三種方案的比較,本設(shè)計(jì)及制作采用了方案三。</p><p><b> 系統(tǒng)原理</b></p><p> (1) 傳感器選擇 常見的感溫元件有熱電偶、熱電阻、半導(dǎo)體和集成等傳感器,它們的主要優(yōu)缺點(diǎn)是:熱電偶價(jià)格便宜,但精度低,需冷端補(bǔ)償,電路
10、設(shè)計(jì)復(fù)雜;熱電阻精度高,但需要標(biāo)準(zhǔn)穩(wěn)定電阻匹配才能使用。而半導(dǎo)體溫度傳感器需要經(jīng)過模數(shù)轉(zhuǎn)換,數(shù)據(jù)線多,電路設(shè)計(jì)比較難。而集成溫度傳感器具有精度高,線性度好,電路簡(jiǎn)單,價(jià)格適中等優(yōu)點(diǎn)。因此我們選用由美國DALLAS半導(dǎo)體公司生產(chǎn)的智能型溫度傳感器DS18B20。</p><p> (2) 控制算法 實(shí)驗(yàn)表明,水溫控制系統(tǒng)中,由于加熱電爐的熱慣性,溫度會(huì)有一定的超調(diào)。而采用單純的PID控制始終具有較大的超調(diào),因此
11、在輸出控制上我們采用PWM方式實(shí)現(xiàn),PWM的基本原理是在一定周期內(nèi)調(diào)節(jié)占空比,設(shè)定值與實(shí)測(cè)溫度值之差和輸出信號(hào)的占空比成正比,即實(shí)測(cè)值與設(shè)定值越接近,則輸出信號(hào)的占空比越小。當(dāng)實(shí)測(cè)溫度值等于設(shè)定值時(shí),輸出信號(hào)占空比為0,控制繼電器關(guān)斷,停止加熱。</p><p><b> (3)單元電路描述</b></p><p><b> CPU</b>&
12、lt;/p><p> 本系統(tǒng)采用AT89C52芯片作為核心部件,89C52內(nèi)部帶有8K字節(jié)FLASH閃速存儲(chǔ)器,256字節(jié)內(nèi)部RAM,32個(gè)I/O口線。(圖見1—1)</p><p><b> 信號(hào)采集電路</b></p><p> 本系統(tǒng)信號(hào)主要由溫度傳感器DS18B20組成,因?yàn)槭羌尚酒?,可以不加其它電路直接將芯片?shù)據(jù)輸出口接到CPU
13、I/O口上。(見圖1-2)</p><p> ?。▓D1—1) (圖1—2)</p><p><b> 鍵盤設(shè)定</b></p><p> 本系統(tǒng)共設(shè)4個(gè)鍵:其中一個(gè)鍵是單片機(jī)系統(tǒng)復(fù)位用,一個(gè)是溫度設(shè)定鍵(p1.6)、加一(p1.4)、減一鍵(p1.5)。(圖見1—3) &
14、lt;/p><p> (圖1—3) (圖1—4) </p><p><b> 4.?dāng)?shù)碼顯示</b></p><p> 數(shù)碼管采用三位共陽數(shù)碼管。使用單片機(jī)P0口輸出段碼,用P2.5—P2.7控制三極管的導(dǎo)通和截至,進(jìn)行位選擇,實(shí)現(xiàn)三位數(shù)據(jù)動(dòng)態(tài)顯示。(圖見1—4)</p&
15、gt;<p><b> 5.超溫報(bào)警</b></p><p> 報(bào)警電路利用單片機(jī)P3.7進(jìn)行控制有源蜂鳴器。(當(dāng)溫度超過設(shè)定溫度上限時(shí)開始報(bào)警)(圖略)</p><p><b> 6.繼電器控制</b></p><p> 該部分利用單片機(jī)P1.0引腳對(duì)固態(tài)繼電器進(jìn)行控制,以實(shí)現(xiàn)對(duì)電爐的加熱進(jìn)行控制,
16、既在溫度達(dá)到設(shè)定值時(shí)斷開電爐的電源停止加熱。(圖略)</p><p><b> 7.電源電路</b></p><p> 電源采用采用7805穩(wěn)壓,對(duì)系統(tǒng)供電。如圖(圖略)</p><p> 硬件原理總圖(見圖C—4)</p><p><b> ?。▓DC—4)</b></p>&l
17、t;p><b> 軟件系統(tǒng)設(shè)計(jì)</b></p><p> 1.系統(tǒng)軟件總流程圖如下</p><p> 2.功能鍵掃描子程序:</p><p><b> 控制操作子程序:</b></p><p><b> 五.調(diào)試過程</b></p><p&g
18、t; 在搪瓷器皿中存放1L水,放置在1KW的電爐上打開控制電源,系統(tǒng)進(jìn)入準(zhǔn)備工作、狀態(tài)。</p><p> 用溫度計(jì)(精度為0.2度)對(duì)照測(cè)溫系統(tǒng)測(cè)溫,在水溫分別為40、50、60、70、80、90攝氏度觀察系統(tǒng)測(cè)量溫度值與實(shí)際溫度值,</p><p> 動(dòng)態(tài)測(cè)試:設(shè)定溫度為75攝氏度系統(tǒng)由低溫開始進(jìn)入升溫狀態(tài)。開始記錄數(shù)據(jù),觀測(cè)超調(diào)量、調(diào)節(jié)時(shí)間和穩(wěn)態(tài)誤差;系統(tǒng)進(jìn)入穩(wěn)態(tài)后,用電扇吹涼
19、觀測(cè)系統(tǒng)的抗干擾能力。設(shè)定溫度為80度系統(tǒng)由低溫開始進(jìn)入升溫狀態(tài)。開始記錄數(shù)據(jù),觀測(cè)超調(diào)量、調(diào)節(jié)時(shí)間和穩(wěn)態(tài)誤差;系統(tǒng)進(jìn)入穩(wěn)態(tài)后,用電扇吹涼觀測(cè)系統(tǒng)的抗干擾能力。</p><p><b> 1.溫度測(cè)量</b></p><p> 測(cè)試條件及儀器:水銀溫度計(jì),1000W 電爐,環(huán)境溫度為32℃</p><p><b> 2.<
20、/b></p><p> 穩(wěn)定到75℃,經(jīng)實(shí)驗(yàn)得知在穩(wěn)定后,精度可以達(dá)到≤0.1℃</p><p><b> 六.總結(jié)</b></p><p> 本系統(tǒng)采用AT89C52芯片為核心部件,利用數(shù)字溫度傳感器DS18B20進(jìn)行溫度采集,提高了測(cè)溫精度,充分利用軟件編程,使溫度精確度和穩(wěn)定度均到達(dá)題目要求。另外可以改進(jìn)算法以解決超調(diào)和測(cè)溫
21、精度問題。</p><p><b> 附程序:</b></p><p> TIMER_L DATA 23H</p><p> TIMER_H DATA 24H</p><p> TIMER_COUN DATA 25H</p><p> TEMPL DA
22、TA 26H</p><p> TEMPH DATA 27H</p><p> TEMP_TH DATA 28H</p><p> TEMP_TL DATA 29H</p><p> TEMPHC DATA 2AH</p><p> TEMPLC DA
23、TA 2BH</p><p> TEMP_ZH DATA 2CH</p><p> BEEP EQU P3.7</p><p> DATA_LINE EQU P3.3</p><p> RELAY EQU P1.0</p><p> FLAG1
24、 EQU 20H.0</p><p> ; </p><p> K1 EQU P1.4</p><p> K2 EQU P1.5</p><p> K3 EQU P1.6</p><p> K4 EQU P1.7</p><p><b
25、> ;</b></p><p><b> ORG 0000H</b></p><p><b> JMP MAIN</b></p><p> ORG 001BH</p><p> JMP T1INT1</p><p> T1INT1: P
26、USH ACC</p><p><b> PUSH PSW</b></p><p><b> INC 2DH</b></p><p> MOV A , 2DH</p><p> CJNE A , #50 , T1INT1E</p><p> MOV 2DH , #0
27、</p><p><b> CPL P1.0</b></p><p><b> INC 2EH</b></p><p> MOV A , 2EH</p><p> CJNE A , #3 , T1INT1E</p><p><b> SETB 7FH<
28、;/b></p><p> MOV 2EH , #0</p><p> T1INT1E: POP PSW</p><p><b> POP ACC</b></p><p><b> RETI</b></p><p><b> ;</b>
29、</p><p> MAIN: mov SP,#30H</p><p> MOV TMOD,#11H ;T0,方式1</p><p> MOV TIMER_L,#00H ;50ms定時(shí)值</p><p> MOV TIMER_H,#4CH</p><p> MOV TH1
30、, #00H</p><p> MOV TL1 , #00H</p><p> MOV IE,#82H ;EA=1,ET0=1</p><p><b> SETB ET1</b></p><p> LCALL READ_E2</p><p> MOV 20H,#0
31、0H</p><p> SETB BEEP</p><p> SETB RELAY</p><p> MOV 7FH,#0AH ;熄滅符</p><p> CALL RESET ;復(fù)位與檢測(cè)DS18B20</p><p> JNB FLAG1,MAIN1
32、 ;FLAG1=0,DS18B20不存在</p><p> JMP START</p><p> MAIN1: CALL RESET</p><p> JB FLAG1,START</p><p> LCALL BEEP_BL ;DS18B20錯(cuò)誤,報(bào)警</p><p> JMP
33、 MAIN1</p><p><b> START:</b></p><p> MOV A,#0CCH ; 跳過ROM匹配</p><p> CALL WRITE</p><p> MOV A,#044H ; 發(fā)出溫度轉(zhuǎn)換命令</p><p> CALL
34、WRITE</p><p> CALL RESET</p><p> MOV A,#0CCH ; 跳過ROM匹配</p><p> CALL WRITE</p><p> MOV A,#0BEH ; 發(fā)出讀溫度命令</p><p> CALL WRITE</p>
35、<p> CALL READ ;讀溫度數(shù)據(jù)</p><p> CALL CONVTEMP</p><p> CALL DISPBCD</p><p> CALL DISP1</p><p> CALL SCANKEY</p><p> LCALL TEMP_COMP
36、</p><p> JMP MAIN1</p><p><b> ;</b></p><p> ;DS18B20 復(fù)位與檢測(cè)子程序</p><p> ;FLAG1=1 OK, FLAG1=0 ERROR</p><p><b> ;</b></p>
37、<p><b> RESET:</b></p><p> SETB DATA_LINE</p><p><b> NOP</b></p><p> CLR DATA_LINE</p><p> MOV R0,#64H ;主機(jī)發(fā)出延時(shí)600微秒的復(fù)位低脈沖&
38、lt;/p><p> MOV R1,#03H</p><p> RESET1: DJNZ R0,$</p><p> MOV R0,#64H</p><p> DJNZ R1,RESET1</p><p> SETB DATA_LINE ;然后拉高數(shù)據(jù)線</p><p>
39、<b> NOP</b></p><p> MOV R0,#25H</p><p> RESET2: JNB DATA_LINE,RESET3 ;等待DS18B20回應(yīng)</p><p> DJNZ R0,RESET2</p><p> JMP RESET4 ; 延時(shí)</p>
40、;<p> RESET3: SETB FLAG1 ; 置標(biāo)志位,表示DS1820存在</p><p> JMP RESET5</p><p> RESET4: CLR FLAG1 ; 清標(biāo)志位,表示DS1820不存在</p><p> JMP RESET6</p><p&
41、gt; RESET5: MOV R0,#064H</p><p> DJNZ R0,$ ; 時(shí)序要求延時(shí)一段時(shí)間</p><p> RESET6: SETB DATA_LINE</p><p><b> RET</b></p><p> ;====================
42、=======================================</p><p> WRITE: MOV R2,#8 ;一共8位數(shù)據(jù)</p><p><b> CLR CY</b></p><p><b> WR1:</b></p><p> CLR D
43、ATA_LINE ;開始寫入DS18B20總線要處于復(fù)位(低)狀態(tài)</p><p> MOV R3,#09</p><p> DJNZ R3,$ ;總線復(fù)位保持18微妙以上</p><p> RRC A ;把一個(gè)字節(jié)DATA 分成8個(gè)BIT環(huán)移給C</p><p> M
44、OV DATA_LINE,C ;寫入一個(gè)BIT</p><p> MOV R3,#23</p><p> DJNZ R3,$ ;等待46微妙</p><p> SETB DATA_LINE ;重新釋放總線</p><p><b> NOP</b></p>
45、<p> DJNZ R2,WR1 ;寫入下一個(gè)BIT</p><p> SETB DATA_LINE</p><p><b> RET</b></p><p><b> ;</b></p><p> ;從DS18B20中讀出溫度低位、高位和報(bào)警值TH、TL<
46、;/p><p> ;存入26H、27H、28H、29H</p><p><b> ;</b></p><p> READ: MOV R4,#4 ; 將溫度高位和低位從DS18B20中讀出</p><p> MOV R1,#26H ; 存入26H、27H、28H、29H&l
47、t;/p><p> RE00: MOV R2,#8</p><p> RE01: CLR C</p><p> SETB DATA_LINE</p><p><b> NOP</b></p><p><b> NOP</b></p><p
48、> CLR DATA_LINE ;讀前總線保持為低</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> SETB DATA_LINE ;開始讀總
49、線釋放</p><p> MOV R3,#09 ;延時(shí)18微妙</p><p><b> DJNZ R3,$</b></p><p> MOV C,DATA_LINE ;從DS18B20總線讀得一個(gè)BIT</p><p> MOV R3,#23</p><p>
50、; DJNZ R3,$ ;等待46微妙</p><p> RRC A ;把讀得的位值環(huán)移給A</p><p> DJNZ R2,RE01 ;讀下一個(gè)BIT</p><p><b> MOV @R1,A</b></p><p><b>
51、 INC R1</b></p><p> DJNZ R4,RE00</p><p><b> RET</b></p><p> ;;重新對(duì) DS18B20 初始化</p><p> ;將設(shè)定的溫度報(bào)警值寫入 DS18B20</p><p><b> RE_18B20
52、:</b></p><p> JB FLAG1,RE_18B20A</p><p><b> RET</b></p><p> RE_18B20A:</p><p> CALL RESET</p><p> MOV A,#0CCH ;跳過ROM匹配</
53、p><p> LCALL WRITE</p><p> MOV A,#4EH ;寫暫存寄存器</p><p> LCALL WRITE</p><p> MOV A,TEMP_TH ;TH(報(bào)警上限)</p><p> LCALL WRITE</p><p>
54、; MOV A,TEMP_TL ;TL(報(bào)警下限)</p><p> LCALL WRITE</p><p> MOV A,#7FH ;12位精確度</p><p> LCALL WRITE</p><p><b> RET</b></p><p><
55、b> ;功能鍵掃描子程序</b></p><p><b> SCANKEY:</b></p><p> MOV P1,#0F0H</p><p> SCAN_K3: JB K3,SCAN_END</p><p> CALL BEEP_BL</p><p>
56、; LCALL RESET_TH</p><p> LCALL RE_18B20</p><p> LCALL WRITE_E2</p><p> SCAN_END: CLR TR0</p><p><b> RET</b></p><p><b> ;設(shè)置溫
57、度報(bào)警值</b></p><p><b> RESET_TH:</b></p><p> CALL ALERT_TH</p><p> CALL ALERT_PLAY</p><p><b> JNB K3,$</b></p><p><b&g
58、t; SETB TR0</b></p><p> RESET_TH1: CALL ALERT_TH</p><p> mov 75h,7Eh ;</p><p> mov 76h,7Dh</p><p> CALL ALERT_PLAY</p><p> R_TH
59、02: JNB K1,K021A</p><p> JNB K2,K021B</p><p> JNB K3,TH_DEL</p><p> JNB K3,SCAN_END</p><p> JMP RESET_TH1</p><p><b> K021A:</b><
60、/p><p> INC TEMP_TH</p><p> MOV A,TEMP_TH</p><p> CJNE A,#90,K022A ;沒有到設(shè)定上限值,轉(zhuǎn)</p><p> MOV TEMP_TH,#70</p><p> K022A: CALL TH_DEL</p>&
61、lt;p> JMP RESET_TH1</p><p><b> K021B:</b></p><p> DEC TEMP_TH ;減1</p><p> MOV A,TEMP_TH</p><p> CJNE A,#70,K022B ;沒有到設(shè)定下限值,轉(zhuǎn)</p>
62、;<p> MOV TEMP_TH,#90</p><p> K022B: CALL TH_DEL</p><p> JMP RESET_TH1</p><p> K002: CALL BEEP_BL</p><p> CLR TR0 ;關(guān)閉中斷</p>
63、<p><b> RET</b></p><p><b> ;鍵延時(shí)子程序</b></p><p> ;多次調(diào)用報(bào)警值顯示程序來延時(shí)</p><p> TH_DEL: ;報(bào)警高值延時(shí)</p><p> MOV R2,#0AH<
64、/p><p> TH_DEL1: CALL ALERT_TH</p><p> CALL ALERT_PLAY</p><p> DJNZ R2,TH_DEL1</p><p><b> RET</b></p><p> ;;實(shí)時(shí)溫度值與設(shè)定報(bào)警溫度值 TH 比較子程序</p&
65、gt;<p> ;當(dāng)實(shí)際溫度大于 TH 的設(shè)定值時(shí),",繼電器關(guān)閉蜂鳴器報(bào)警</p><p> ;當(dāng)實(shí)際溫度小于 TH 的設(shè)定值時(shí),”,繼電器吸合。</p><p> TEMP_COMP:</p><p> SETB TR0 ;啟動(dòng)中斷</p><p> MOV A,TEMP_TH
66、</p><p> SUBB A,TEMP_ZH ;減數(shù)>被減數(shù),則</p><p> JC CHULI1</p><p><b> JMP L0</b></p><p> CJNE A ,#5 , LLL1</p><p> LLL1: JC CHU
67、LI1 ;借位標(biāo)志位C=1,轉(zhuǎn)</p><p><b> SETB TR1</b></p><p> L0: SETB RELAY</p><p><b> SETB BEEP</b></p><p><b> CLR TR0</b>
68、;</p><p><b> RET</b></p><p><b> ;超溫處理</b></p><p> CHULI1: CLR TR1</p><p> CLR RELAY ;繼電器關(guān)閉</p><p><b> CLR
69、 BEEP</b></p><p> CLR TR0 ;關(guān)閉中斷</p><p><b> RET</b></p><p> ;把 DS18B20 暫存器里的溫度報(bào)警值拷貝到EEROM</p><p><b> WRITE_E2:</b></p&
70、gt;<p> CALL RESET</p><p> MOV A,#0CCH ;跳過ROM匹配</p><p> LCALL WRITE</p><p> MOV A,#48H ;溫度報(bào)警值拷貝到EEROM</p><p> LCALL WRITE</p><
71、;p><b> RET</b></p><p> ;把 DS18B20 EEROM 里的溫度報(bào)警值拷貝回暫存器</p><p><b> READ_E2:</b></p><p> CALL RESET</p><p> MOV A,#0CCH ;跳過ROM匹配&l
72、t;/p><p> LCALL WRITE</p><p> MOV A,#0B8H ;溫度報(bào)警值拷貝回暫存器</p><p> CALL WRITE</p><p><b> RET</b></p><p> ; 處理溫度 BCD 碼子程序</p>&l
73、t;p><b> CONVTEMP:</b></p><p> MOV TEMPHC,#0AH ;</p><p> MOV A,TEMPHC</p><p><b> SWAP A</b></p><p> MOV TEMPHC,A</p><p
74、> MOV A,TEMPL</p><p> ANL A,#0FH ;乘0.0625</p><p> MOV DPTR,#TEMPDOTTAB</p><p> MOVC A,@A+DPTR</p><p> MOV TEMPLC,A ;TEMPLC LOW=小數(shù)部分
75、 BCD</p><p> MOV A,TEMPL ;整數(shù)部分</p><p> ANL A,#0F0H</p><p><b> SWAP A</b></p><p> MOV TEMPL,A</p><p> MOV A,TEMPH</p>
76、;<p> ANL A,#0FH</p><p><b> SWAP A</b></p><p> ORL A,TEMPL</p><p> MOV TEMP_ZH,A ;組合后的值存入TEMP_ZH</p><p> LCALL HEX2BCD1</p>
77、<p> MOV TEMPL,A</p><p> ANL A,#0F0H</p><p><b> SWAP A</b></p><p> ORL A,TEMPHC ;TEMPHC LOW = 十位數(shù) BCD</p><p> MOV TEMPHC,A</p
78、><p> MOV A,TEMPL</p><p> ANL A,#0FH</p><p> SWAP A ;TEMPLC HI = 個(gè)位數(shù) BCD</p><p> ORL A,TEMPLC</p><p> MOV TEMPLC,A</p><p
79、><b> MOV A,R7</b></p><p> JZ TEMPC12</p><p> ANL A,#0FH</p><p><b> SWAP A</b></p><p><b> MOV R7,A</b></p><p&
80、gt; MOV A,TEMPHC ;TEMPHC HI = 百位數(shù) BCD</p><p> ANL A,#0FH</p><p><b> ORL A,R7</b></p><p> MOV TEMPHC,A</p><p> TEMPC12: RET</p&g
81、t;<p><b> ; 小數(shù)部分碼表</b></p><p> TEMPDOTTAB: DB 00H,01H,01H,02H,03H,03H,04H,04H,05H,06H</p><p> DB 06H,07H,08H,08H,09H,09H</p><p> ;顯示區(qū) BCD 碼溫度值刷新子程序</
82、p><p> DISPBCD: MOV A,TEMPLC</p><p> ANL A,#0FH</p><p> MOV 70H,A ;小數(shù)位</p><p> MOV A,TEMPLC</p><p><b> SWAP A</b>&l
83、t;/p><p> ANL A,#0FH</p><p> MOV 71H,A ;個(gè)位</p><p> MOV A,TEMPHC</p><p> ANL A,#0FH</p><p> MOV 72H,A ;十位</p>
84、<p> MOV A,TEMPHC</p><p><b> SWAP A</b></p><p> ANL A,#0FH</p><p> MOV 73H,A ;百位</p><p> MOV A,TEMPHC</p><p> A
85、NL A,#0F0H</p><p> CJNE A,#010H,DISPBCD0</p><p> SJMP DISPBCD2</p><p> DISPBCD0: MOV A,TEMPHC</p><p> ANL A,#0FH</p><p> JNZ DISPBCD2
86、 ;十位數(shù)是0</p><p> MOV A,TEMPHC</p><p><b> SWAP A</b></p><p> ANL A,#0FH</p><p> MOV 73H,#0AH ;符號(hào)位不顯示</p><p> MOV 7
87、2H,A ;十位數(shù)顯示符號(hào)</p><p> DISPBCD2: RET</p><p> ; 溫度顯示子程序</p><p> ;顯示數(shù)據(jù)在70H - 72H 單元內(nèi),用3位共陽數(shù)碼管顯示,P0口輸出段碼數(shù)據(jù),</p><p> ;P2 口作掃描控制,每個(gè) LED 數(shù)碼管亮 2MS
88、時(shí)間再逐位循環(huán)。</p><p> DISP1: MOV R1,#70H ;指向顯示數(shù)據(jù)首址</p><p> MOV R5,#7FH ;掃描控制字初值</p><p> PLAY: MOV P0,#0FFH</p><p> MOV A,R5
89、 ;掃描字放入A</p><p><b> MOV P2,A</b></p><p> MOV A,@R1 ;取顯示數(shù)據(jù)到A</p><p> MOV DPTR,#TAB ;取段碼表地址</p><p> MOVC A,@A+DPTR
90、 ;查顯示數(shù)據(jù)對(duì)應(yīng)段碼</p><p> MOV P0,A ;段碼放入P0口</p><p><b> MOV A,R5</b></p><p> JB ACC.6,LOOP5 ;小數(shù)點(diǎn)處理</p><p><b> CLR P0.7&
91、lt;/b></p><p> LOOP5: LCALL DL_MS ;顯示2MS</p><p> INC R1 ;指向下一個(gè)地址</p><p> MOV A,R5 ;放回 R5 內(nèi)</p><p> JNB A
92、CC.4,ENDOUT ;ACC.4=0時(shí)一次顯示結(jié)束</p><p> RR A ;A 中數(shù)據(jù)循環(huán)左移</p><p> MOV R5,A ;放入 R5 中</p><p> AJMP PLAY ;跳回 PLAY 循環(huán)</p>&
93、lt;p> ENDOUT: MOV P0,#0FFH ;一次顯示結(jié)束,P0口復(fù)位</p><p> MOV P2,#0FFH ;P2口復(fù)位</p><p><b> RET</b></p><p><b> TAB:</b></p>&l
94、t;p> DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,</p><p> ; “0" “1" “2" “3" “4"“5"“6"“7"“8"“9"</p><p> DL_MS: MOV R6,#0AH
95、 ;2MS延時(shí)程序,LED 顯示程序用</p><p> DL1: MOV R7,#64H</p><p> DL2: DJNZ R7,DL2</p><p> DJNZ R6,DL1</p><p><b> RET</b></p><p> ;
96、單字節(jié)十六進(jìn)制轉(zhuǎn) BCD</p><p> HEX2BCD1: MOV B,#064H</p><p><b> DIV AB</b></p><p><b> MOV R7,A</b></p><p> MOV A,#0AH</p><p><b&
97、gt; XCH A,B</b></p><p><b> DIV AB</b></p><p><b> SWAP A</b></p><p><b> ORL A,B</b></p><p><b> RET</b><
98、/p><p> ;報(bào)警值 TH 數(shù)據(jù)轉(zhuǎn)換</p><p><b> ALERT_TH:</b></p><p> MOV 79H,#0DH</p><p> MOV 78H,#0BH</p><p> MOV A,TEMP_TH</p><p> MOV R
99、0,#77H</p><p> MOV B,#064H</p><p><b> DIV AB</b></p><p> JMP ALERT_TH2</p><p> ALERT_TH2: MOV A,#0AH</p><p><b> XCH A,B</b
100、></p><p><b> DIV AB</b></p><p><b> DEC R0</b></p><p> MOV @R0,A</p><p> MOV 7DH,A</p><p><b> DEC R0</b><
101、;/p><p> MOV @R0,B</p><p> MOV 7EH,B</p><p><b> RET</b></p><p><b> ;報(bào)警值顯示子程序</b></p><p> ALERT_PLAY:</p><p> MOV
102、 R1,#75H ;指向顯示數(shù)據(jù)首址</p><p> MOV R5,#7FH ;掃描控制字初值</p><p> A_PLAY: MOV P0,#0FFH</p><p> MOV A,R5 ;掃描字放入A</p><p><b>
103、 MOV P2,A</b></p><p> MOV A,@R1 ;取顯示數(shù)據(jù)到A</p><p> MOV DPTR,#ALERT_TAB ;取段碼表地址</p><p> MOVC A,@A+DPTR ;查顯示數(shù)據(jù)對(duì)應(yīng)段碼</p><p> MOV P0,
104、A ;段碼放入P0口</p><p> LCALL DL_MS1 ;顯示2MS</p><p> INC R1 ;指向下一個(gè)地址</p><p><b> MOV A,R5</b></p><p> JNB ACC.3,
105、ENDOUT1</p><p> RR A ;A 中數(shù)據(jù)循環(huán)左移</p><p> MOV R5,A ;放入 R5 中</p><p> AJMP A_PLAY ;跳回 PLAY 循環(huán)</p><p> ENDOUT1: MOV
106、 P0,#0FFH ;一次顯示結(jié)束,P0口復(fù)位</p><p> MOV P2,#0FFH ;P2口復(fù)位</p><p><b> RET</b></p><p> ALERT_TAB:</p><p> DB 0c0h,0f9h,0a4h,0b0h,99h,92h
107、,82h,0f8h,80h,90h,0ffh,0bfh,0c7h,09h</p><p> ;共陽段碼表 “0" “1" “2" “3" “4"“5"“6"“7"“8"“9"“滅" “-"</p><p> DL_MS1: MOV R6,#0AH
108、 ;2MS延時(shí)程序,LED 顯示程序用</p><p> ADL1: MOV R7,#64H</p><p> ADL2: DJNZ R7,ADL2</p><p> DJNZ R6,ADL1</p><p><b> RET</b></p><p&g
109、t; ;蜂鳴器響一聲子程序</p><p> ;P3.7=0,蜂鳴器響</p><p><b> BEEP_BL:</b></p><p> MOV R6,#100</p><p> BL2: CALL DEX1</p><p> CPL BEEP ;對(duì) P3
110、.7 取反</p><p> DJNZ R6,BL2</p><p> MOV R5,#10</p><p> CALL DELAY</p><p><b> RET</b></p><p> DEX1: MOV R7,#180</p><p> D
111、E2: NOP</p><p> DJNZ R7,DE2</p><p><b> RET</b></p><p> DELAY: ;(R5)*延時(shí)10MS</p><p> MOV R6,#50</p><p> DEL1: MOV
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文---水溫控制系統(tǒng)
- 水箱水溫控制系統(tǒng)的設(shè)計(jì)【畢業(yè)論文】
- 基于pid的水溫控制系統(tǒng)畢業(yè)論文
- 基于pid算法的水溫控制系統(tǒng)設(shè)計(jì)--畢業(yè)論文
- 水溫控制系統(tǒng)畢業(yè)設(shè)計(jì)
- 水溫控制系統(tǒng)畢業(yè)設(shè)計(jì)
- 水溫控制系統(tǒng)論文
- 畢業(yè)論文-開題報(bào)告-文獻(xiàn)綜述水箱水溫控制系統(tǒng)的設(shè)計(jì)
- 畢業(yè)論文-開題報(bào)告-文獻(xiàn)綜述水箱水溫控制系統(tǒng)的設(shè)計(jì)
- 基于單片機(jī)的水溫控制系統(tǒng)畢業(yè)論文
- 畢業(yè)設(shè)計(jì)--水溫控制系統(tǒng)的設(shè)計(jì)
- 水溫控制系統(tǒng)
- 基于at89s52的水溫控制系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 水溫控制系統(tǒng)的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---浴池水溫控制系統(tǒng)設(shè)計(jì)
- 水溫水位控制系統(tǒng)畢業(yè)論文
- 水溫控制系統(tǒng)doc
- 課程設(shè)計(jì)----水溫控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---飲水機(jī)水溫控制系統(tǒng)設(shè)計(jì)
- 水溫控制系統(tǒng)設(shè)計(jì)及應(yīng)用
評(píng)論
0/150
提交評(píng)論