版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、大連理工大學(xué)本科設(shè)計(jì)報(bào)告題目:基于DS18B20、ZLG7290的溫度 采集系統(tǒng)設(shè)計(jì) 課程名稱: 單片機(jī)綜合設(shè)計(jì)實(shí)驗(yàn) 學(xué)院(系): 信息與通信工程學(xué)院專 業(yè): 電子信息工程 班 級(jí): 電子 學(xué) 號(hào): 學(xué)生姓名: 成 績(jī): 20 16 年 5 月 6 日題目:1 設(shè)計(jì)要求1.利用DS18B20實(shí)現(xiàn)現(xiàn)場(chǎng)環(huán)境溫度的采集;2.利用ZLG7290B實(shí)現(xiàn)溫度數(shù)據(jù)證書的十進(jìn)制顯示;3.默認(rèn)一個(gè)上限溫度的報(bào)警(蜂鳴器);4.能夠利用ZLG7290B的鍵盤操作修改“上限報(bào)警值”;5.可以顯示溫度的小數(shù)位,以提高溫度檢測(cè)的分辨率;6.程序中必須有中斷環(huán)節(jié)。 2 設(shè)計(jì)分析及系統(tǒng)方案設(shè)計(jì)利用P3.3口采集DS18B2
2、0的溫度信息,采集后,通過I2C協(xié)議控制ZLG7290顯示溫度信息,并且將小數(shù)部分顯示出來,通過P1.3連接一個(gè)撥碼用來做模式控制,控制是溫度顯示狀態(tài)模式或者設(shè)定溫度上限模式,其中溫度上限存放在28H單元中。利用T0定時(shí)器控制蜂鳴器發(fā)聲一段時(shí)間,超過溫度上限報(bào)警聲音提示,同時(shí)數(shù)碼管進(jìn)行閃爍以報(bào)警。利用INT0外部中斷讀取按鍵值,用于設(shè)定上限溫度并保存。3系統(tǒng)電路圖P1.3P1.3P1.25 主程序中主要變量說明內(nèi)存單元的定義、功能等。變量名稱內(nèi)存單元功能TEMPER_L 36H存放溫度低四位TEMPER_H 35H存放溫度高四位TEMPER 34H轉(zhuǎn)換后的溫度值TEMPER_BCD33HBCD
3、形式溫度值TEMPER_NUM 60H溫度值緩沖單元WSLA_7290 70H7290寫控制單元RSLA_7290 71H7290讀控制單元20-27H數(shù)碼管顯示緩沖區(qū)28H存放溫度上限值30-31H存放溫度BCD碼個(gè)位十位6系統(tǒng)軟件中各個(gè)子程序的功能描述子程序的名稱、功能,以及入口、出口參數(shù)。子程序名稱功能 描述GET_TEMPER讀取18B20的溫度值WRITE_1820向18b20寫控制字READ_18200向18b20讀控制字TEMPER_COV溫度轉(zhuǎn)換成十進(jìn)制BCD碼形式CF拆分子程序,拆分送數(shù)碼管顯示INIT_1820溫度傳感器初始化BUZZER蜂鳴器控制發(fā)聲子程序INT_7290
4、:讀取按鍵外部中斷子程序RDKEY讀取鍵值子程序DELAY延時(shí)子程序7主程序程序流程圖8程序清單(I2C庫函數(shù)省略)SDABITP1.0SCLBITP1.1TEMPER_L EQU 36HTEMPER_H EQU 35HTEMPER EQU 34H;轉(zhuǎn)換后溫度值TEMPER_BCD EQU 33H;BCD碼溫度值TEMPER_NUM EQU 60H;緩沖單元WSLA_7290 EQU 70HRSLA_7290 EQU 71HFLAG1 BIT 00HDQ BIT P3.3;總線控制單元ORG0000HLJMPMAINORG0003HLJMPINT_7290ORG0100HMAIN:MOVSP,
5、#70H;ZLG7290復(fù)位CLRP1.7LCALLDELAYSETBP1.7MOV28H,#1EH;溫度上限初始值30度 MOVTMOD,#01H;模式一,16位計(jì)數(shù)器SETBEA;允許中斷MODE:JBP1.3,SETTMP;撥碼為0時(shí)采集溫度;溫度采集TMP:CLREX0MOV27H,#1FH;tLP1:LCALLGET_TEMPERLCALLTEMPER_COV;7290顯示MOVR7,#08HMOVR0,#20HMOVR2,#10HMOVR3,#WSLA_7290LCALLWRNBYTLCALLDELAYMOVA,TEMPER;判斷溫度上限MOV28H,R5CLRCCJNEA,28H
6、,rel;此處報(bào)警溫度為30度rel:JCNETLCALLBUZZER;大于等于時(shí)蜂鳴器報(bào)警;閃爍MOV28H,#70H;閃爍命令字MOV29H,#7FH;閃爍命令字MOVR7,#02H;設(shè)定數(shù)據(jù)個(gè)數(shù)MOVR0,#28H;設(shè)置源數(shù)據(jù)首地址MOVR2,#07H;設(shè)置外圍器件內(nèi)部寄存器首地址MOVR3,#WSLA_7290;設(shè)定外圍器件地址LCALLWRNBYT;調(diào)用顯示子程序LCALLDELAYLJMPNEXTT;設(shè)定溫度上限SETTMP:SETBEX0;7290復(fù)位CLRP1.7LCALLDELAYSETBP1.7;顯示設(shè)定內(nèi)容MOV27H,#0B6H;SMOV26H,#9EH;EMOV25H
7、,#1FH;T.MOVR7,#03HMOVR0,#25HMOVR2,#15HMOVR3,#WSLA_7290LCALLWRNBYTLCALLDELAY SJMP NEXTTNET:MOV28H,#70H;不能閃爍MOV29H,#00HMOVR7,#02HMOVR0,#28HMOVR2,#07HMOVR3,#WSLA_7290LCALLWRNBYTLCALLDELAYNEXTT:CALLDELAYSJMPMODEGET_TEMPER:SETBDQ;定時(shí)入口BCD:LCALLINIT_1820 JBFLAG1,S22LJMPBCD;若ds18b20不存在則返回S22:LCALLDELAY1MOVA
8、,#0CCH;跳過rom匹配0cchLCALLWRITE_1820MOVA,#44H;發(fā)出溫度轉(zhuǎn)換命令LCALLWRITE_1820LCALLDELAYCBA:LCALLINIT_1820JBFLAG1,ABCLJMPCBAABC:LCALLDELAY1MOVA,#0CCH;跳過rom匹配LCALLWRITE_1820MOVA,#0BEH;發(fā)出讀溫度命令LCALLWRITE_1820LCALLREAD_18200RETWRITE_1820:;寫ds18b20程序MOVR2,#8CLRCWR1:CLRDQMOVR3,#6;延時(shí)24usDJNZR3,$RRCAMOVDQ,CMOVR3,#23;延時(shí)
9、60usDJNZR3,$SETB DQNOPDJNZR2,WR1SETBDQRETREAD_18200:;從1820中讀出兩個(gè)字節(jié)溫度數(shù)據(jù)PUSH01HMOVR4,#2MOVR1,#36HRE00:MOVR2,#8RE01:CLRCSETBDQNOPCLRDQNOPNOPSETBDQMOVR3,#2DJNZR3,$MOVC,DQMOVR3,#23HDJNZR3,$RRC ADJNZR2,RE01MOVR1,ADECR1DJNZR4,RE00POP01HRETTEMPER_COV:;將讀出的數(shù)據(jù)轉(zhuǎn)換PUSHDPHPUSHDPLPUSH02HMOVA,#0F0HANLA,TEMPER_L;舍去小數(shù)
10、點(diǎn)后的四位SWAPAMOVTEMPER_NUM,AMOVA,TEMPER_HANLA,#07HSWAPAADDA,TEMPER_NUMMOVTEMPER,A;轉(zhuǎn)換成十進(jìn)制數(shù)顯示MOVB,#10DIVABMOV30H,B;個(gè)位MOVB,#10DIVABMOV31H,B;十位ANLA,#0FH;百位SWAPAADDA,BMOVTEMPER_BCD,ALCALLCF2;拆分查表MOV25H,R3MOV26H,R4MOVA,30HANLA,#0FHLCALLCFMOV24H,R3;處理四位小數(shù)位數(shù)據(jù)MOVA,TEMPER_LANLA,#0FH;取低四位數(shù)據(jù)MOVB,#02HMULABMOVDPTR,#
11、NUMSEGMOVCA,A+DPTRMOVTEMPER_BCD,ALCALLCF2MOV22H,R3MOV23H,R4MOVA,TEMPER_LANLA,#0FHMOVB,#02HMULABINCAMOVCA,A+DPTRMOVTEMPER_BCD,ALCALLCF2MOV20H,R3MOV21H,R4POP02HPOPDPLPOPDPHRET;-小數(shù)部分查表-NUMSEG:DW0000H,0625H,1250H,1875H,2500H,3125H,3750H,4375HDW5000H,5625H,6250H,6875H,7500H,8125H,8750H,9375H;-;-拆分顯示整數(shù)子程序
12、-CF:PUSH02HPUSHDPHPUSHDPLMOVDPTR,#LEDSEGMOVR2,TEMPER_BCDANLA,#0FHMOVCA,A+DPTRMOVR3,AMOVA,R2SWAPAANLA,#0FHMOVCA,A+DPTRMOVR4,AINCR3;加上小數(shù)點(diǎn)POPDPLPOPDPHPOP02HRET;-;-拆分顯示小數(shù)子程序-CF2:PUSH02HPUSHDPHPUSHDPLPUSHACCMOVDPTR,#LEDSEGMOVR2,TEMPER_BCDMOVA,R2ANLA,#0FHMOVCA,A+DPTRMOVR3,AMOVA,R2SWAPAANLA,#0FHMOVCA,A+DPT
13、RMOVR4,A;加上小數(shù)點(diǎn)POPACCPOPDPLPOPDPHPOP02HRET;-;-led字型碼-LEDSEG:DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E4HDB0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EH;-INIT_1820:SETBDQNOPCLRDQMOVR0,#80HTSR1:DJNZR0,TSR1;延時(shí)300usSETBDQMOVR0,#25H;96usTSR2:DJNZR0,TSR2JNBDQ,TSR3LJMPTSR4;延時(shí)TSR3:SETBFLAG1;致標(biāo)志位LJMPTSR5;ds18b20存在TSR4:CLRFLA
14、G1;清標(biāo)志位LJMPTSR7;ds18b20不存在TSR5:MOVR0,#06BH;延時(shí)200usTSR6:DJNZR0,TSR6TSR7:SETBDQRETDELAY1:MOVR7,#20H;80us延時(shí)DJNZR7,$RET;-蜂鳴器驅(qū)動(dòng)子程序-BUZZER:PUSH07HMOVR7,#00HMOVTL0,#33H;設(shè)置定時(shí)0.5us初值MOVTH0,#0FEHSETBTR0;啟動(dòng)t0WAIT:JNBTF0,$CLRTF0MOVTL0,#33HMOVTH0,#0FEHCPLP1.2DJNZR7,WAITCLRTR0SETBP1.2POP07HRET;-;-外部中斷服務(wù)程序-INT_729
15、0:PUSH00HPUSH01HPUSH02HPUSH03HPUSH04HPUSH07HPUSHACCPUSHPSWSJMPRD1RD1: JBP3.2,$;以查詢方式等待下一次按鍵操作SWAPALCALLRDKEYCJNEA,#0AH,WAITT;容錯(cuò)功能調(diào)整WAITT:JNC RD1MOVTEMPER_BCD,ALCALLCF2MOVB,#0AHMULABMOVR5,AMOV23H,R3MOVR7,#01HMOVR0,#23HMOVR2,#13HMOVR3,#WSLA_7290LCALLWRNBYTKEY2:JBP3.2,$;以查詢方式等待下一次按鍵操作LCALLRDKEYCJNEA,#0
16、AH,WAITT2WAITT2:JNCKEY2MOVTEMPER_BCD,ALCALLCF2MOVA,R5ADDA,TEMPER_BCDMOVR5,AMOV22H,R3MOV21H,#9CH;CMOVR7,#02HMOVR0,#21HMOVR2,#11HMOVR3,#WSLA_7290LCALLWRNBYT;確定鍵COMF:JBP3.2,$;等待確認(rèn)鍵LCALLRDKEYCJNEA,#0FH,COMFMOV28H,R5;上限值放入28h中DOWN:;7290復(fù)位CLRP1.7LCALLDELAYSETBP1.7CLRIE0;必須清標(biāo)志POPPSWPOPACCPOP07HPOP04HPOP03H
17、POP02HPOP00HRETI;-;-讀取鍵值子程序(鍵值保存在A中)-RDKEY:MOVR0,#1FHMOVR7,#01HMOVR2,#01HMOVR3,#WSLA_7290MOVR4,#RSLA_7290LCALLRDADDMOVA,1FHDECARET;-;-延時(shí)子程序-DELAY:PUSH00H;延時(shí)子程序PUSH01HMOVR1,#00LP:MOVR1,#00HDJNZR1,$DJNZR0,LPPOP01HPOP00HRET;-;【附錄一】由匯編語言編制的I2C通訊子程序;【提 示】下列程序是在系統(tǒng)時(shí)鐘為12MHZ(或11.0592MHZ),即NOP指令為1微秒左右。;(1)帶有內(nèi)
18、部單元地址的多字節(jié)寫操作子程序 WRNBYT;*;通用的I2C通訊子程序(多字節(jié)寫操作);入口參數(shù)R7字節(jié)數(shù),R0:源數(shù)據(jù)塊首地址;R0原數(shù)據(jù)塊首地址;R2從器件內(nèi)部子地址;R3:外圍器件地址(寫);相關(guān)子程序WRBYT、STOP、CACK、STA;*WRNBYT:PUSHPSWPUSHACCWRADD:MOVA,R3;取外圍器件地地址(包含r/w=0)LCALLSTA;發(fā)送起始信號(hào)S LCALLWRBYT;發(fā)送外圍地址LCALLCACK;檢測(cè)外圍器件的應(yīng)答信號(hào)JBF0,WRADD;如果應(yīng)MOVA,R2LCALLWRBYT;發(fā)送內(nèi)部寄存器首地址LCALLCACK;檢測(cè)外圍器件的應(yīng)答信號(hào)JBF0
19、,WRADD;如果應(yīng)答不正確返回重來 WRDA:MOVA,R0LCALLWRBYT;發(fā)送外圍地址LCALLCACK;檢測(cè)外圍器件的應(yīng)答信號(hào)JBF0,WRADD;如果應(yīng)答不正確返回重來INCR0DJNZ R7,WRDALCALLSTOP POPACCPOPPSWRET ;*;(2)帶有內(nèi)部單元地址的多字節(jié)讀操作子程序 RDADD ;*;通用的I2C通訊子程序(多字節(jié)讀操作);入口參數(shù)R7字節(jié)數(shù);;R0目標(biāo)數(shù)據(jù)塊首地址;R2從器件內(nèi)部子地址;;R3器件地址(寫);R4器件地址(讀);相關(guān)子程序WRBYT、STOP、CACK、STA、MNACK ;*RDADD: PUSHPSW;從PCF8563的0
20、2H單元讀入7個(gè)參數(shù)PUSHACC;存放于20H-26H單元RDADD1:LCALLSTA MOVA,R3;取器件地址(寫)LCALLWRBYT;發(fā)送外圍地址LCALLCACK;檢測(cè)外圍器件的應(yīng)答信號(hào)JBF0,RDADD1;如果應(yīng)答不正確返回重來MOVA,R2;取內(nèi)部地址LCALLWRBYT;發(fā)送外圍地址LCALLCACK;檢測(cè)外圍器件的應(yīng)答信號(hào)JBF0,RDADD1;如果應(yīng)答不正確返回重來LCALLSTAMOVA,R4;取器件地址(讀)LCALLWRBYT;發(fā)送外圍地址LCALLCACK;檢測(cè)外圍器件的應(yīng)答信號(hào)JBF0,RDADD1;如果應(yīng)答不正確返回重來RDN:LCALLRDBYT MOV
21、R0,ADJNZR7,ACKLCALLMNACKLCALLSTOPPOPACCPOPPSWRETACK:LCALLMACKINCR0SJMPRDN ;(3)I2C各個(gè)信號(hào)子程序;*;啟動(dòng)信號(hào)子程序S ;*STA:SETBSDA;啟動(dòng)信號(hào)SSETBSCLNOP;產(chǎn)生4.7US延時(shí)NOPNOPNOPNOPCLRSDANOP;產(chǎn)生4.7US延時(shí)NOPNOPNOPNOP CLRSCLRET ;*;停止信號(hào)子程序P ;*STOP:CLRSDA ;停止信號(hào)PSETBSCLNOP;產(chǎn)生4.7US延時(shí)NOPNOPNOPNOPSETBSDANOP;產(chǎn)生4.7US延時(shí)NOPNOPNOPNOPCLRSCLCLRSD
22、ARET ;*;應(yīng)答信號(hào)子程序 MACK;*MACK:CLRSDA;發(fā)送應(yīng)答信號(hào)ACKSETBSCLNOP;產(chǎn)生4.7US延時(shí)NOPNOPNOPNOPCLRSCLSETBSDARET;*;非應(yīng)答法信號(hào)子程序MNACK;*MNACK:SETBSDA;發(fā)送非應(yīng)答信號(hào)NACKSETBSCLNOP;產(chǎn)生4.7US延時(shí)NOPNOPNOPNOPCLRSCLCLRSDARET;*;應(yīng)答檢測(cè)子程序CACK;*CACK:SETBSDA;應(yīng)答位檢測(cè)子程序SETBSCL CLRF0MOVC,SDA;采樣SDAJNCCEND;應(yīng)答正確時(shí)轉(zhuǎn)CENDSETBF0;應(yīng)答錯(cuò)誤時(shí)F0置一CEND:CLRSCLRET;*;發(fā)送一
23、個(gè)字節(jié)子程序WRBYT;*WRBYT:PUSH06HMOVR6,#08H;發(fā)送一個(gè)字節(jié)子程序 WLP:RLCA ;(入口參數(shù)A)MOVSDA,CSETBSCLNOP;產(chǎn)生4.7US延時(shí)NOPNOPNOPNOPCLRSCLDJNZR6,WLPPOP06HRET;*;接收一個(gè)字節(jié)子程序RDBYT ;*RDBYT: PUSH06HMOVR6,#08H;接收一個(gè)字節(jié)子程序RLP:SETBSDASETBSCL; *NOP;!產(chǎn)生大于15微秒的延時(shí)!NOP ;注意這是專門為ZLG7290NOP ;添加的20微秒延時(shí)部分NOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOP; *MOVC,SDAMOVA,R2RLCAMOVR2,ACLRSCLDJNZR6,RLP ;(出口參數(shù)R2)POP06HRET ;*end9系統(tǒng)調(diào)試運(yùn)行結(jié)果說明、分析所出現(xiàn)問題,設(shè)計(jì)體會(huì)與建議硬件使用ZLG51單片機(jī)開發(fā)平臺(tái),軟件使用KEil2軟件進(jìn)行程序的編寫編譯以及調(diào)試。運(yùn)行結(jié)果:能夠?qū)崿F(xiàn)當(dāng)前環(huán)境溫度的采集以及顯示、以及超過設(shè)定上限溫度進(jìn)行報(bào)警,數(shù)碼管閃爍功能。同時(shí)能夠通過撥碼控制模式切換,切換到設(shè)定上限溫度模式,通過按
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026廣東中山大學(xué)腫瘤防治中心中心泌尿外科堯凱教授課題組自聘技術(shù)員招聘1人筆試模擬試題及答案解析
- 2025廣東江門市江海區(qū)江南街道辦事處專職消防員招聘6人備考題庫附答案
- 2025年玉樹州公安局面向社會(huì)公開招聘警務(wù)輔助人員(第二批)考試備考題庫附答案
- 2025年安徽省能源集團(tuán)有限公司校園招聘60人筆試備考試題附答案
- 2025年滁州理想建設(shè)投資發(fā)展有限公司公開招聘2名參考題庫附答案
- 2025年上海工程技術(shù)大學(xué)公開招聘(第四批)(公共基礎(chǔ)知識(shí))測(cè)試題附答案
- 2025年黑龍江省鐵路集團(tuán)有限責(zé)任公司面向社會(huì)公開招聘1人備考題庫附答案
- 2025山西忻州市人民醫(yī)院和忻州市中醫(yī)醫(yī)院市招縣用招聘工作人員10人備考題庫附答案
- 2025年廣西民族印刷包裝集團(tuán)有限公司招聘14人筆試備考試題附答案
- 2026中國(guó)人民銀行清算總中心直屬企業(yè)中志支付清算服務(wù)(北京)有限公司招聘2人筆試參考題庫及答案解析
- 2026年共青團(tuán)中央所屬單位招聘66人備考題庫及答案詳解一套
- 人民警察法培訓(xùn)課件
- 2026年哈爾濱職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試題庫參考答案詳解
- 2025云南昆明巫家壩建設(shè)發(fā)展有限責(zé)任公司及下屬公司第四季度社會(huì)招聘31人歷年真題匯編帶答案解析
- 輸尿管切開取石課件
- 小貓絕育協(xié)議書
- 66kV及以下架空電力線路設(shè)計(jì)標(biāo)準(zhǔn)
- 人工搬運(yùn)培訓(xùn)課件
- 2025年浙江乍浦經(jīng)濟(jì)開發(fā)區(qū)(嘉興港區(qū))區(qū)屬國(guó)有公司公開招聘28人筆試考試備考試題及答案解析
- 胃腸外科危重患者監(jiān)護(hù)與護(hù)理
- 2025年榆林神木市信息產(chǎn)業(yè)發(fā)展集團(tuán)招聘?jìng)淇碱}庫(35人)及答案詳解(新)
評(píng)論
0/150
提交評(píng)論