版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、.; DS18B20溫度控制數(shù)碼管顯示(匯編非常詳細(xì)) *;* 1、P1.6= 進(jìn)入設(shè)定溫度報(bào)警值 TL 狀態(tài): *;* L20 *;* 2、P1.6 進(jìn)入設(shè)定溫度報(bào)警值 TH 狀態(tài): *;* H28 *;* 3、P1.6 返回 *;* 4、設(shè)定過程: P1.4 加鍵 (UP), P1.5 減鍵 (DOWN),可快速調(diào)。 *;* * TIMER_L DATA 23H TIMER_H DATA 24H TIMER_COUN DATA 25H TEMPL DATA 26H TEMPH DATA 27H TEMP_TH DATA 28H TEMP_TL DATA 29H TEMPHC DATA 2A
2、H TEMPLC DATA 2BH TEMP_ZH DATA 2CH BEEP EQU P3.7 DATA_LINE EQU P3.3 RELAY EQU P1.3 FLAG1 EQU 20H.0 FLAG2 EQU 20H.1;- K1 EQU P1.4 K2 EQU P1.5 K3 EQU P1.6 K4 EQU P1.7;= ORG 0000H JMP MAIN ORG 000BH AJMP INT_T0;-MAIN: MOV SP,#30H MOV TMOD,#01H ;T0,方式1 MOV TIMER_L,#00H ;50ms定時(shí)值 MOV TIMER_H,#4CH MOV TIME
3、R_COUN,#00H ;中斷計(jì)數(shù) MOV IE,#82H ;EA=1,ET0=1 LCALL READ_E2 ;LCALL RE_18B20 MOV 20H,#00H SETB BEEP SETB RELAY MOV 7FH,#0AH ;熄滅符 CALL RESET ;復(fù)位與檢測DS18B20 JNB FLAG1,MAIN1 ;FLAG1=0,DS18B20不存在 JMP STARTMAIN1: CALL RESET JB FLAG1,START LCALL BEEP_BL ;DS18B20錯(cuò)誤,報(bào)警 JMP MAIN1START: MOV A,#0CCH ; 跳過ROM匹配 CALL WR
4、ITE MOV A,#044H ; 發(fā)出溫度轉(zhuǎn)換命令 CALL WRITE CALL RESET MOV A,#0CCH ; 跳過ROM匹配 CALL WRITE MOV A,#0BEH ; 發(fā)出讀溫度命令 CALL WRITE CALL READ ;讀溫度數(shù)據(jù) CALL CONVTEMP CALL DISPBCD CALL DISP1 CALL SCANKEY LCALL TEMP_COMP JMP MAIN1;=;DS18B20 復(fù)位與檢測子程序;FLAG1=1 OK, FLAG1=0 ERROR;=RESET: SETB DATA_LINE NOP CLR DATA_LINE MOV R
5、0,#64H ;主機(jī)發(fā)出延時(shí)600微秒的復(fù)位低脈沖 MOV R1,#03HRESET1: DJNZ R0,$ MOV R0,#64H DJNZ R1,RESET1 SETB DATA_LINE ;然后拉高數(shù)據(jù)線 NOP MOV R0,#25HRESET2: JNB DATA_LINE,RESET3 ;等待DS18B20回應(yīng) DJNZ R0,RESET2 JMP RESET4 ; 延時(shí)RESET3: SETB FLAG1 ; 置標(biāo)志位,表示DS1820存在 JMP RESET5RESET4: CLR FLAG1 ; 清標(biāo)志位,表示DS1820不存在 JMP RESET6RESET5: MOV R
6、0,#064H DJNZ R0,$ ; 時(shí)序要求延時(shí)一段時(shí)間RESET6: SETB DATA_LINE RET;=;=WRITE: MOV R2,#8 ;一共8位數(shù)據(jù) CLR CYWR1: CLR DATA_LINE ;開始寫入DS18B20總線要處于復(fù)位(低)狀態(tài) MOV R3,#09 DJNZ R3,$ ;總線復(fù)位保持18微妙以上 RRC A ;把一個(gè)字節(jié)DATA 分成8個(gè)BIT環(huán)移給C MOV DATA_LINE,C ;寫入一個(gè)BIT MOV R3,#23 DJNZ R3,$ ;等待46微妙 SETB DATA_LINE ;重新釋放總線 NOP DJNZ R2,WR1 ;寫入下一個(gè)BI
7、T SETB DATA_LINE RET;=;從DS18B20中讀出溫度低位、高位和報(bào)警值TH、TL;存入26H、27H、28H、29H;=READ: MOV R4,#4 ; 將溫度高位和低位從DS18B20中讀出 MOV R1,#26H ; 存入26H、27H、28H、29HRE00: MOV R2,#8RE01: CLR C SETB DATA_LINE NOP NOP CLR DATA_LINE ;讀前總線保持為低 NOP NOP NOP SETB DATA_LINE ;開始讀總線釋放 MOV R3,#09 ;延時(shí)18微妙 DJNZ R3,$ MOV C,DATA_LINE ;從DS18
8、B20總線讀得一個(gè)BIT MOV R3,#23 DJNZ R3,$ ;等待46微妙 RRC A ;把讀得的位值環(huán)移給A DJNZ R2,RE01 ;讀下一個(gè)BIT MOV R1,A INC R1 DJNZ R4,RE00 RET ;-;200ms對(duì)閃動(dòng)標(biāo)記取反一次;-INT_T0: PUSH ACC PUSH PSW MOV TL0,TIMER_L MOV TH0,TIMER_H INC TIMER_COUN MOV A,TIMER_COUN CJNE A,#04H,INT_END MOV TIMER_COUN,#00H CPL FLAG2INT_END: POP PSW POP ACC RE
9、TI;=;重新對(duì) DS18B20 初始化;將設(shè)定的溫度報(bào)警值寫入 DS18B20;=RE_18B20: JB FLAG1,RE_18B20A RETRE_18B20A: CALL RESET MOV A,#0CCH ;跳過ROM匹配 LCALL WRITE MOV A,#4EH ;寫暫存寄存器 LCALL WRITE MOV A,TEMP_TH ;TH(報(bào)警上限) LCALL WRITE MOV A,TEMP_TL ;TL(報(bào)警下限) LCALL WRITE MOV A,#7FH ;12位精確度 LCALL WRITE RET;=;功能鍵掃描子程序;=SCANKEY: MOV P1,#0F0H
10、 JB K1,SCAN_K2 CALL BEEP_BLSCAN_K1: CALL ALERT_TL CALL ALERT_PLAY JB K1,SCAN_K1 CALL BEEP_BLSCAN_K11: CALL ALERT_TH CALL ALERT_PLAY JB K1,SCAN_K11 CALL BEEP_BLSCAN_K2: JB K2,SCAN_K3 CALL BEEP_BLSCAN_K3: JB K3,SCAN_K4 CALL BEEP_BL LCALL RESET_ALERT LCALL RE_18B20 LCALL WRITE_E2SCAN_K4: JB K4,SCAN_END
11、 CALL BEEP_BLSCAN_END: RET;=;設(shè)置溫度報(bào)警值;=RESET_ALERT: CALL ALERT_TL CALL ALERT_PLAY JNB K3,$ ;K3為位移鍵 SETB TR0RESET_TL: CALL ALERT_PLAY JNB FLAG2,R_TL01 mov 75H,7fh ;送入熄滅符 mov 76H,7fh CALL ALERT_PLAY JMP R_TL02R_TL01: CALL ALERT_TL mov 75h,7Eh ;送設(shè)定值 mov 76h,7Dh CALL ALERT_PLAY ;顯示設(shè)定值R_TL02: JNB K1,K011A
12、 JNB K2,K011B JNB K3,RESET_TH JMP RESET_TLK011A: INC TEMP_TL MOV A,TEMP_TL CJNE A,#120,K012A ;沒有到設(shè)定上限值,轉(zhuǎn) MOV TEMP_TL,#0K012A: CALL TL_DEL JMP RESET_TLK011B: DEC TEMP_TL MOV A,TEMP_TL CJNE A,#00H,K012B ;沒有到設(shè)定下限值,轉(zhuǎn) MOV TEMP_TL,#119K012B: CALL TL_DEL JMP RESET_TL;-RESET_TH: CALL BEEP_BL JNB K3,$RESET_T
13、H1: CALL ALERT_PLAY JNB FLAG2,R_TH01 mov 75H,7fh ;送入熄滅符 mov 76H,7fh CALL ALERT_PLAY JMP R_TH02R_TH01: CALL ALERT_TH mov 75h,7Eh ; mov 76h,7Dh CALL ALERT_PLAYR_TH02: JNB K1,K021A JNB K2,K021B JNB K3,K002 JMP RESET_TH1K021A: INC TEMP_TH MOV A,TEMP_TH CJNE A,#120,K022A ;沒有到設(shè)定上限值,轉(zhuǎn) MOV TEMP_TH,#0K022A:
14、CALL TH_DEL JMP RESET_TH1K021B: DEC TEMP_TH ;減1 MOV A,TEMP_TH CJNE A,#00H,K022B ;沒有到設(shè)定下限值,轉(zhuǎn) MOV TEMP_TH,#119K022B: CALL TH_DEL JMP RESET_TH1K002: CALL BEEP_BL CLR TR0 ;關(guān)閉中斷 RET;-;鍵延時(shí)子程序;多次調(diào)用報(bào)警值顯示程序來延時(shí);-TL_DEL: ;報(bào)警低值延時(shí) MOV R2,#0AHTL_DEL1: CALL ALERT_TL CALL ALERT_PLAY DJNZ R2,TL_DEL1 RETTH_DEL: ;報(bào)警高值
15、延時(shí) MOV R2,#0AHTH_DEL1: CALL ALERT_TH CALL ALERT_PLAY DJNZ R2,TH_DEL1 RET;=;實(shí)時(shí)溫度值與設(shè)定報(bào)警溫度值 TH、TL 比較子程序;當(dāng)實(shí)際溫度大于 TH 的設(shè)定值時(shí),顯示“H”,繼電器關(guān)閉。;當(dāng)實(shí)際溫度小于 TH 的設(shè)定值時(shí),顯示“O”,繼電器吸合。;當(dāng)實(shí)際溫度小于 TL 的設(shè)定值時(shí),顯示“L”。;閃動(dòng)顯示標(biāo)記符 H、L、O;=TEMP_COMP: SETB TR0 ;啟動(dòng)中斷 MOV A,TEMP_TH SUBB A,TEMP_ZH ;減數(shù)被減數(shù),則 JC CHULI1 ;借位標(biāo)志位C=1,轉(zhuǎn) MOV A,TEMP_ZH
16、SUBB A,TEMP_TL ;減數(shù)被減數(shù),則 JC CHULI2 ;借位標(biāo)志位C=1,轉(zhuǎn) JNB FLAG2,T_COMP1 ;FLAG2=0,顯示標(biāo)記字符 MOV 74H,#0AH ;熄滅符 LCALL DISP1 JMP T_COMP2T_COMP1: MOV 74H,#00H LCALL DISP1 ;顯示OT_COMP2: CLR RELAY ;繼電器吸合 CLR TR0 ;關(guān)閉中斷 RET;-;超溫處理;-CHULI1: SETB RELAY ;繼電器關(guān)閉 JNB FLAG2,CHULI10 MOV 74H,#0AH ;熄滅符 LCALL DISP1 JMP CHULI11CHUL
17、I10: MOV 74H,#0DH LCALL DISP1 ;顯示H ;CALL BEEP_BL ;蜂鳴器響CHULI11: CLR TR0 ;關(guān)閉中斷 RET;-;欠溫處理;-CHULI2: ;欠溫處理 JNB FLAG2,CHULI20 MOV 74H,#0AH ;熄滅符 LCALL DISP1 JMP CHULI21CHULI20: MOV 74H,#0CH LCALL DISP1 ;顯示L ;CALL BEEP_BL ;蜂鳴器響CHULI21: CLR TR0 ;關(guān)閉中斷 RET;-;把 DS18B20 暫存器里的溫度報(bào)警值拷貝到EEROM;-WRITE_E2: CALL RESET
18、MOV A,#0CCH ;跳過ROM匹配 LCALL WRITE MOV A,#48H ;溫度報(bào)警值拷貝到EEROM LCALL WRITE RET;-;把 DS18B20 EEROM 里的溫度報(bào)警值拷貝回暫存器;-READ_E2: CALL RESET MOV A,#0CCH ;跳過ROM匹配 LCALL WRITE MOV A,#0B8H ;溫度報(bào)警值拷貝回暫存器 CALL WRITE RET;*; 處理溫度 BCD 碼子程序;*CONVTEMP: MOV A,TEMPH ;判溫度是否零下 ANL A,#80H JZ TEMPC1 ;溫度零上轉(zhuǎn) CLR C MOV A,TEMPL ;二進(jìn)制
19、數(shù)求補(bǔ)(雙字節(jié)) CPL A ;取反加1 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 TEMPC11TEMPC1: MOV TEMPHC,#0AH ;TEMPC11: MOV A,TEMPHC SWAP A MOV TEMPHC,A MOV A,TEMPL ANL A,#0FH ;乘0.0625 MOV DPTR,#TEMPDOTTAB MOVC A,A+DPTR MOV TEMPLC,A ;TEMPLC LOW=小數(shù)部分 BCD
20、MOV A,TEMPL ;整數(shù)部分 ANL A,#0F0H SWAP A MOV TEMPL,A MOV A,TEMPH ANL A,#0FH SWAP A ORL A,TEMPL MOV TEMP_ZH,A ;組合后的值存入TEMP_ZH LCALL HEX2BCD1 MOV TEMPL,A ANL A,#0F0H SWAP A ORL A,TEMPHC ;TEMPHC LOW = 十位數(shù) BCD MOV TEMPHC,A MOV A,TEMPL ANL A,#0FH SWAP A ;TEMPLC HI = 個(gè)位數(shù) BCD ORL A,TEMPLC MOV TEMPLC,A MOV A,R7
21、 JZ TEMPC12 ANL A,#0FH SWAP A MOV R7,A MOV A,TEMPHC ;TEMPHC HI = 百位數(shù) BCD ANL A,#0FH ORL A,R7 MOV TEMPHC,ATEMPC12: RET;-; 小數(shù)部分碼表;-TEMPDOTTAB: DB 00H,01H,01H,02H,03H,03H,04H,04H,05H,06H DB 06H,07H,08H,08H,09H,09H;=;顯示區(qū) BCD 碼溫度值刷新子程序;=DISPBCD: MOV A,TEMPLC ANL A,#0FH MOV 70H,A ;小數(shù)位 MOV A,TEMPLC SWAP A
22、ANL A,#0FH MOV 71H,A ;個(gè)位 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 DISPBCD2 ;十位數(shù)是0 MOV A,TEMPHC SWAP A ANL A,#0FH MOV 73H,#0AH ;符號(hào)位不顯示 MOV 72H,A ;十位數(shù)顯示符號(hào)DISPBCD2
23、: RET;*; 溫度顯示子程序;*;顯示數(shù)據(jù)在70H 73H 單元內(nèi),用4位共陽數(shù)碼管顯示,P0口輸出段碼數(shù)據(jù),;P2 口作掃描控制,每個(gè) LED 數(shù)碼管亮 2MS 時(shí)間再逐位循環(huán)。DISP1: MOV R1,#70H ;指向顯示數(shù)據(jù)首址 MOV R5,#7FH ;掃描控制字初值PLAY: MOV P0,#0FFH MOV A,R5 ;掃描字放入A MOV P2,A MOV A,R1 ;取顯示數(shù)據(jù)到A MOV DPTR,#TAB ;取段碼表地址 MOVC A,A+DPTR ;查顯示數(shù)據(jù)對(duì)應(yīng)段碼 MOV P0,A ;段碼放入P0口 MOV A,R5 JB ACC.6,LOOP5 ;小數(shù)點(diǎn)處理
24、CLR P0.7LOOP5: LCALL DL_MS ;顯示2MS INC R1 ;指向下一個(gè)地址 MOV A,R5 ;放回 R5 內(nèi) JNB ACC.3,ENDOUT ;ACC.3=0時(shí)一次顯示結(jié)束 RR A ;A 中數(shù)據(jù)循環(huán)左移 MOV R5,A ;放入 R5 中 AJMP PLAY ;跳回 PLAY 循環(huán)ENDOUT: MOV P0,#0FFH ;一次顯示結(jié)束,P0口復(fù)位 MOV P2,#0FFH ;P2口復(fù)位 RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH,0C7H,89H; “0 “1 “2 “3 “
25、4“5“6“7“8“9“滅 “- “L”“HDL_MS: MOV R6,#0AH ;2MS延時(shí)程序,LED 顯示程序用DL1: MOV R7,#64HDL2: DJNZ R7,DL2 DJNZ R6,DL1 RET;*;單字節(jié)十六進(jìn)制轉(zhuǎn) BCD;*HEX2BCD1: MOV B,#064H DIV AB MOV R7,A MOV A,#0AH XCH A,B DIV AB SWAP A ORL A,B RET;=;報(bào)警值 TH、TL 數(shù)據(jù)轉(zhuǎn)換;=ALERT_TL: MOV 79H,#0CH MOV 78H,#0BH MOV A,TEMP_TL MOV R0,#77H MOV B,#064H D
26、IV AB CJNE A,#01H,ALERT_TL1 MOV R0,A JMP ALERT_TL2ALERT_TL1: MOV A,#0BH ;顯示“” MOV R0,AALERT_TL2: MOV A,#0AH XCH A,B DIV AB DEC R0 MOV R0,A MOV 7DH,A DEC R0 MOV R0,B MOV 7EH,B RET;-ALERT_TH: MOV 79H,#0DH MOV 78H,#0BH MOV A,TEMP_TH MOV R0,#77H MOV B,#064H DIV AB CJNE A,#01H,ALERT_TH1 MOV R0,A JMP ALERT_TH2ALERT_TH1: MOV A,#0BH ;顯示“” MOV R0,AALERT_TH2: MOV A,#0AH XCH A,B DIV AB DEC R0 MOV R0,A MOV 7
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆四川省成都實(shí)驗(yàn)高級(jí)中學(xué)物理高二第一學(xué)期期中復(fù)習(xí)檢測模擬試題含解析
- 四川省成都市經(jīng)開區(qū)實(shí)驗(yàn)中學(xué)2025屆物理高二第一學(xué)期期中調(diào)研模擬試題含解析
- 廣西賀州平桂高級(jí)中學(xué)2025屆高一物理第一學(xué)期期末檢測試題含解析
- 2025屆北京市朝陽區(qū)17中物理高三上期末考試模擬試題含解析
- 吉林省長春市養(yǎng)正高級(jí)中學(xué)2025屆物理高三第一學(xué)期期中學(xué)業(yè)水平測試試題含解析
- 2025屆甘肅省定西市隴西二中物理高三上期末教學(xué)質(zhì)量檢測模擬試題含解析
- 福建省福州第四中學(xué)2025屆高三物理第一學(xué)期期末經(jīng)典試題含解析
- 2025屆遼寧省阜新二高物理高一上期末統(tǒng)考試題含解析
- 云南省曲靖市沾益區(qū)第四中學(xué)2025屆高一物理第一學(xué)期期中監(jiān)測模擬試題含解析
- 陜西省西鄉(xiāng)二中2025屆物理高三上期中監(jiān)測試題含解析
- 人工智能及其應(yīng)用1課件
- 連鑄機(jī)熱試車方案
- 第三章-農(nóng)業(yè)資源調(diào)查評(píng)價(jià)與區(qū)劃方法課件
- 《幼兒園大班第一學(xué)期家長會(huì)》 PPT課件
- Maya菜單中英文對(duì)照表(新)
- 食物中毒應(yīng)急流程圖
- 電梯拆除作業(yè)指導(dǎo)書
- 三菱重工中央空調(diào)產(chǎn)品篇(課堂PPT)
- 新風(fēng)系統(tǒng)施工方案
- 脊柱內(nèi)固定原理和方法(課堂PPT)
- 財(cái)務(wù)KPI指標(biāo)監(jiān)控
評(píng)論
0/150
提交評(píng)論