




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、大連理工大學本科設(shè)計報告題目: 單總線高精度溫度采集系統(tǒng) 題目:單總線高精度溫度采集系統(tǒng)1 設(shè)計要求系統(tǒng)結(jié)構(gòu):1)由DS18B20實現(xiàn)對溫度的采集; 2)由數(shù)碼管實現(xiàn)溫度顯示系統(tǒng)。設(shè)計要求 :1)啟動DS18B20進行12位高精度環(huán)境溫度采集;2)利用數(shù)碼管顯示數(shù)據(jù);3)具有溫度上限聲光報警;4)可以通過鍵盤設(shè)定報警上限值。擴展功能: 1)報警頻率隨實測溫度與報警溫度的差值變化,相差越大頻率越高;2)鍵盤設(shè)定上限值時十位,個位的閃爍,并且在輸入后停止閃爍。2 設(shè)計分析及系統(tǒng)方案設(shè)計程序采用無限循環(huán)結(jié)構(gòu)。一次循環(huán)中,完成對溫度的采集和顯示,判斷超過設(shè)定值時報警。鍵盤設(shè)定用外中斷/INT1完成,T
2、1產(chǎn)生方波驅(qū)動蜂鳴器發(fā)聲,初值賦為采集溫度與設(shè)定值的差值。3.系統(tǒng)電路圖K1-K16鍵盤矩陣電路8位數(shù)碼管顯示4 外圍接口模塊硬件電路功能描述ZLG7290B:數(shù)碼管動態(tài)顯示驅(qū)動、鍵盤掃描芯片。通過按鍵進行上限溫度的設(shè)定及溫度的顯示模塊。蜂鳴器模塊:當溫度超過上限則報警。DS18B20:智能溫度傳感器。對環(huán)境溫度進行12位精度的采集。 5 主程序中主要變量定義變量名稱RAM單元/寄存器功能TEMPER_L36H讀出溫度值低8位數(shù)據(jù)TEMPER_H35H讀出溫度值高4位數(shù)據(jù)TEMPER34H轉(zhuǎn)換溫度整數(shù)部分TEMPER-NUM60H轉(zhuǎn)換溫度整數(shù)部分的緩沖單元TEMPER_XS33H轉(zhuǎn)換溫度小數(shù)部
3、分TEMPER-NUM-XS61H轉(zhuǎn)換溫度小數(shù)部分的緩沖單元LIMIT14H鍵盤輸入的溫度上限值6系統(tǒng)軟件中各個子程序的功能描述子程序名稱入口參數(shù)出口參數(shù)功能 描述GET_TEMPER無溫度值高四位TEMPER_L、溫度值低8位TEMPER_H從DS18B20中讀出12位溫度數(shù)據(jù)TEMPER_COVTEMPER_LTEMPER_HTEMPERTEMPER_XS將讀出的12位溫度數(shù)據(jù)轉(zhuǎn)換并保存INT_1820無FLAG1初始化DS18B20WRITE_1820A無向DS18B20中寫入數(shù)據(jù)INT_T1TH1TL1定時器T1中斷。裝定時初值,初值為溫度差值,并對P3.5取反驅(qū)動蜂鳴器。DISPLA
4、YTEMPERTEMPER_XS無將溫度通過數(shù)碼管顯示出來READ_18200無TEMPER_LTEMPER_H從DS18B20中讀出數(shù)據(jù)并儲存7主程序程序流程圖轉(zhuǎn)換溫度子程序讀溫度子程序開T1中斷并賦初值開鍵盤中斷INT07290復位開始把數(shù)據(jù)通過數(shù)碼管顯示出來采集溫度值是否大于設(shè)定值 N開T1中斷,把設(shè)定值與溫度差值賦給T1初值,并驅(qū)動蜂鳴器報警 Y Y8程序清單TEMPER_L EQU 36H;存放讀出溫度低位數(shù)據(jù)TEMPER_H EQU 35H;存放讀出溫度高位數(shù)據(jù)TEMPER EQU34H ;存放轉(zhuǎn)換后的8位溫度值TEMPER_XS EQU 33H;存放轉(zhuǎn)換溫度的小數(shù)部分TEMPER
5、_NUM EQU 60H;緩沖單元TEMPER_NUM_XS EQU61HFLAG1 BIT00H DQ BITP3.3;一線總線控制端口LIMIT EQU 14HWSLA EQU 070HRSLA EQU 071HSDA BIT P1.0SCL BIT P1.1ORG 8000HLJMP MAINORG 8003H;外中斷Int0的入口地址LJMP INT_7290ORG 801BH;定時器T1的入口地址LJMP INT_T1ORG 8100HMAIN:MOV SP,#70HCLR P1.2;7290復位LCALL DELAYSETB P1.2MOV LIMIT,#0FFHLP1:SETB
6、EX0;開外中斷0SETB EAMOV TCON,#00HSETBET1;開T1中斷SETBEAMOV TMOD,#10H;T1初值MOV TL1,#33HMOV TH1,#0FEHLCALL GET_TEMPER;從DS18B20讀出溫度數(shù)據(jù)LCALL TEMPER_COV;轉(zhuǎn)換讀出的溫度數(shù)據(jù)并保存MOV A,TEMPERCJNE A,LIMIT,NEXTNEXT:JNC NEXT1;TEMPER>=LIMITJMP NEXT2NEXT1:SETBTR1LJMPNEXT3NEXT2:CLRTR1NEXT3:MOV 31H,#00H;顯示整數(shù)部分MOV 30H,#01HMOV B,#10
7、 DIV ABADD A,#02HMOV 37H,AMOV A,BADD A,#0CHMOV 36H,AMOV A,TEMPER_XS;顯示小數(shù)部分MOV B,#4MUL ABADD A,#16HMOV 35H,AINC AMOV 34H,AINC AMOV 33H,AINC AMOV 32H,AMOV DPTR,#LEDSEG1CLR AMOV R7,#08HMOV R0,#20HMOV R1,#30HLOOP1:MOV A,R1MOVC A,A+DPTRMOV R0,AINC R1INC R0DJNZ R7,LOOP1MOV R7,#08HMOV R0,#20HMOV R2,#10HMOV
8、 R3,#WSLALCALL WRNBYTLCALL DELAY2MOV A,TEMPERSJMP LP1;T1中斷服務程序INT_T1:PUSHACCPUSHPSWCLR TF1MOVA,TEMPERSUBB A,LIMITMOVB,#2MULABADD A,#33HMOV TL1,A ;賦定時器t1初值MOV TH1,#0FEHCPL P3.5POP PSWPOPACCRETILEDSEG1: DB 0C6H,9CH;查表 DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E4H,0FEH,0F6H DB 0FDH,61H,0DBH,0F3H,67H,0B7H,0B
9、FH,0E5H,0FFH,0F7H DB 0FCH,0FCH,0FCH,0FCH,0FCH,0BEH,0DAH,0B6H,60H,0DAH,0B6H,0FCH,60H,0FEH,0E4H,0B6H DB 0DAH,0B6H,0FCH,0FCH,0F2H,60H,0DAH,0B6H,0F2H,0E4H,0B6H,0FCH DB 66H,0F2H,0E4H,0B6H DB 0B6H,0FCH,0FCH,0FCH DB 0B6H,0BEH,0DAH,0B6H DB 0BEH,0DAH,0B6H,0FCH DB 0BEH,0FEH,0E4H,0B6H DB 0E4H,0B6H,0FCH,0FCH DB
10、 0FEH,60H,0DAH,0B6H DB 0FEH,0E4H,0B6H,0FCH DB 0F6H,0F2H,0E4H,0B6H DB 00H,0EEH,10HDELAY2:PUSH 00HPUSH 01HMOV R0,#00HDELAY3:MOV R1,#00HDJNZ R1,$DJNZ R0,DELAY3POP 01HPOP 00HRET ;*讀取溫度值GET_TEMPER:;讀出轉(zhuǎn)換后的溫度值SETB DQ ;定時入口BCD:LCALL INIT_1820JB FLAG1,S22LJMP BCD ; 若DS18B20不存在則返回S22:LCALL DELAY1MOV A,#0CCH ;
11、 跳過ROM匹配 0CCHLCALL WRITE_1820MOV A,#44H ; 發(fā)出溫度轉(zhuǎn)換命令LCALL WRITE_1820LCALL DELAYCBA:LCALL INIT_1820JB FLAG1,ABCLJMP CBAABC:LCALL DELAY1MOV A,#0CCH ; 跳過ROM匹配LCALL WRITE_1820MOV A,#0BEH ; 發(fā)出讀溫度命令LCALL WRITE_1820LCALL READ_18200 ;READ_1820RET WRITE_1820:;寫DS18B20的程序MOV R2,#8CLR CWR1:CLR DQMOV R3,#6;延時24us
12、DJNZ R3,$RRC AMOV DQ,CMOV R3,#23;延時60usDJNZ R3,$SETB DQ;一個寫周期至少要維持60us以上NOP;離下一個寫周期至少要有1us間隔DJNZ R2,WR1SETB DQRETREAD_18200:; 讀DS18B20的程序,從DS18B20中讀出兩個字節(jié)的溫度數(shù)據(jù)MOV R4,#2 ; 將溫度高位和低位從DS18B20中讀出MOV R1,#36H ; 低位存入36H(TEMPER_L),高位存入35H(TEMPER_H)RE00:MOV R2,#8RE01:CLR CSETB DQNOPCLR DQ;DQ;DQ=0 15US內(nèi)NOP;18B2
13、0送數(shù),主控器NOP;必須完成DQ的采樣SETB DQ;主控器釋放DQMOV R3,#2DJNZ R3,$;延時10usMOV C,DQ;取dq數(shù)據(jù)位MOV R3,#23;延時60usDJNZ R3,$RRC ADJNZ R2,RE01MOV R1,ADEC R1DJNZ R4,RE00RETTEMPER_COV:;將讀出的數(shù)據(jù)進行轉(zhuǎn)換MOV A,#0F0HANL A,TEMPER_LSWAP AMOV TEMPER_NUM,AMOV A,TEMPER_LANL A,#0FHMOV TEMPER_NUM_XS,AMOV TEMPER_XS,TEMPER_NUM_XSTEMPER_COV1:MO
14、V A,TEMPER_H ANL A,#07HSWAP AADD A,TEMPER_NUMMOV TEMPER_NUM,AMOV TEMPER,TEMPER_NUMRETINIT_1820:; DS18B20初始化程序SETB DQNOPCLR DQMOV R0,#80HTSR1:DJNZ R0,TSR1SETB DQMOV R0,#25HTSR2:DJNZ R0,TSR2JNB DQ,TSR3LJMP TSR4TSR3:SETB FLAG1LJMP TSR5TSR4:CLR FLAG1LJMP TSR7TSR5:MOV R0,#06BHTSR6:DJNZ R0,TSR6TSR7:SETB D
15、QRETDELAY1:MOV R7,#20HDJNZ R7,$RETDELAY:PUSH 00HPUSH 01HMOV R0,#00LP:MOV R1,#00HDJNZ R1,$DJNZ R0,LPPOP 01HPOP 00HRET;*鍵盤設(shè)定溫度上限值INT_7290:PUSH 00HPUSH 02HPUSH 03HPUSH 04HPUSH 07HPUSH ACCPUSH PSWLCALL RDKEYCJNE A,#0AH,DOWN1LJMPAKEYDOWN1:LJMP DOWNAKEY:LCALL DISPLAYA;閃爍控制PUSH05HPUSH06HMOVR5,#70HMOVR6,#08
16、HMOVR7,#02HMOVR0,#05HMOVR2,#07HMOVR3,#WSLALCALLWRNBYTLCALLDELAYPOP06HPOP05HCXUN:JB P3.2,$LCALL RDKEYCJNE A,#0AH,NEXT4;查詢輸入值是否為數(shù)字NEXT4: JNC CXUNNEXT5:MOV 40H,ALCALL DISPLAY1MOV A,40HMOV B,#10MUL ABMOV 14H,A;存十位;閃爍控制PUSH05HPUSH06HMOVR5,#70HMOVR6,#04HMOVR7,#02HMOVR0,#05HMOVR2,#07HMOVR3,#WSLALCALLWRNBYT
17、LCALLDELAYPOP06HPOP05HCXUN1:JB P3.2,$LCALL RDKEYCJNE A,#0AH,NEXT6;查詢輸入值是否為數(shù)字 NEXT6: JNC CXUN1;閃爍控制NEXT7:PUSH05HPUSH06HMOVR5,#70HMOVR6,#00HMOVR7,#02HMOVR0,#05HMOVR2,#07HMOVR3,#WSLALCALLWRNBYTLCALLDELAYPOP06HPOP05HMOV 41H,A;存?zhèn)€位LCALL DISPLAY2;顯示個位數(shù)MOV A,41HADD A,14HMOV LIMIT,A;設(shè)定報警值JB P3.2,$FH1:LCALL R
18、DKEYCJNE A,#0BH,FH1DOWN:CLR IE0POP PSWPOP ACCPOP 07HPOP 04HPOP 03HPOP 02HPOP 00HRETIRDKEY:MOVR0,#1FH;鍵值緩沖單元MOVR7,#01H;取一個數(shù)據(jù)(鍵值)MOVR2,#01H ;指向內(nèi)部數(shù)據(jù)鍵值寄存器地址MOVR3,#WSLA_7290;取器件地址(寫)MOVR4,#RSLA_7290;取器件地址(讀) LCALLRDADD;讀出7290的01H單元中的鍵值MOVA,1FH;取健值送緩沖單元DECARETDISPLAY2:;顯示輸入的個位數(shù)MOV 30H,#01HMOV 31H,#00HPUSH
19、ACCMOVA,40HADDA,#02HMOV 33H,APOPACCADD A,#02HMOV 32H,AMOV 34H,#56HMOV 35H,#56HMOV 36H,#56HMOV 37H,#57HMOV DPTR,#LEDSEG1CLR AMOV R7,#08HMOV R0,#20HMOV R1,#30HLOOP2:MOV A,R1MOVC A,A+DPTRMOV R0,AINC R1INC R0DJNZ R7,LOOP2MOV R7,#08HMOV R0,#20HMOV R2,#10HMOV R3,#WSLALCALL WRNBYTLCALL DELAY2RETDISPLAYA:;顯
20、示AMOV 30H,#01HMOV 31H,#00HMOV 32H,#58HMOV 33H,#58HMOV 34H,#56HMOV 35H,#56HMOV 36H,#56HMOV 37H,#57HMOV DPTR,#LEDSEG1CLR AMOV R7,#08HMOV R0,#20HMOV R1,#30HLOOP3:MOV A,R1MOVC A,A+DPTRMOV R0,AINC R1INC R0DJNZ R7,LOOP3MOV R7,#08HMOV R0,#20HMOV R2,#10HMOV R3,#WSLALCALL WRNBYTLCALL DELAY2RETDISPLAY1:;顯示輸入的
21、十位數(shù)MOV 30H,#01HMOV 31H,#00HMOV 32H,#58HADD A,#02HMOV 33H,AMOV 34H,#56HMOV 35H,#56HMOV 36H,#56HMOV 37H,#57HMOV DPTR,#LEDSEG1CLR AMOV R7,#08HMOV R0,#20HMOV R1,#30HLOOP4:MOV A,R1MOVC A,A+DPTRMOV R0,AINC R1INC R0DJNZ R7,LOOP4MOV R7,#08HMOV R0,#20HMOV R2,#10HMOV R3,#WSLALCALL WRNBYTLCALL DELAY2RET;【附錄一】由
22、匯編語言編制的I2C通訊子程序;(1)帶有內(nèi)部單元地址的多字節(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ā)送起始信號S LCALLWRBYT;發(fā)送外圍地址LCALLCACK;檢測外圍器件的應答信號JBF0,WRADD;如果應MOVA,R2LCALLWRBYT;發(fā)送內(nèi)部寄存器首地址LCA
23、LLCACK;檢測外圍器件的應答信號JBF0,WRADD;如果應答不正確返回重來 WRDA:MOVA,R0LCALLWRBYT;發(fā)送外圍地址LCALLCACK;檢測外圍器件的應答信號JBF0,WRADD;如果應答不正確返回重來INCR0DJNZ R7,WRDALCALLSTOP POPACCPOPPSWRET ;*;(2)帶有內(nèi)部單元地址的多字節(jié)讀操作子程序 RDADD ;*;入口參數(shù)R7字節(jié)數(shù);;R0目標數(shù)據(jù)塊首地址;R2從器件內(nèi)部子地址;;R3器件地址(寫);R4器件地址(讀);相關(guān)子程序WRBYT、STOP、CACK、STA、MNACK ;*RDADD: PUSHPSW;從PCF8563
24、的02H單元讀入7個參數(shù)PUSHACC;存放于20H-26H單元RDADD1:LCALLSTA MOVA,R3;取器件地址(寫)LCALLWRBYT;發(fā)送外圍地址LCALLCACK;檢測外圍器件的應答信號JBF0,RDADD1;如果應答不正確返回重來MOVA,R2;取內(nèi)部地址LCALLWRBYT;發(fā)送外圍地址LCALLCACK;檢測外圍器件的應答信號JBF0,RDADD1;如果應答不正確返回重來LCALLSTAMOVA,R4;取器件地址(讀)LCALLWRBYT;發(fā)送外圍地址LCALLCACK;檢測外圍器件的應答信號JBF0,RDADD1;如果應答不正確返回重來RDN:LCALLRDBYT M
25、OVR0,ADJNZR7,ACKLCALLMNACKLCALLSTOPPOPACCPOPPSWRETACK:LCALLMACKINCR0SJMPRDN ;(3)I2C各個信號子程序;*;啟動信號子程序S ;*STA:SETBSDA;啟動信號SSETBSCLNOP;產(chǎn)生4.7US延時NOPNOPNOPNOPCLRSDANOP;產(chǎn)生4.7US延時NOPNOPNOPNOP CLRSCLRET ;*;停止信號子程序P ;*STOP:CLRSDA ;停止信號PSETBSCLNOP;產(chǎn)生4.7US延時NOPNOPNOPNOPSETBSDANOP;產(chǎn)生4.7US延時NOPNOPNOPNOPCLRSCLCLR
26、SDARET ;*;應答信號子程序 MACK;*MACK:CLRSDA;發(fā)送應答信號ACKSETBSCLNOP;產(chǎn)生4.7US延時NOPNOPNOPNOPCLRSCLSETBSDARET;*;非應答法信號子程序MNACK;*MNACK:SETBSDA;發(fā)送非應答信號NACKSETBSCLNOP;產(chǎn)生4.7US延時NOPNOPNOPNOPCLRSCLCLRSDARET;*;應答檢測子程序CACK;*CACK:SETBSDA;應答位檢測子程序SETBSCL CLRF0MOVC,SDA;采樣SDAJNCCEND;應答正確時轉(zhuǎn)CENDSETBF0;應答錯誤時F0置一CEND:CLRSCLRET;*;發(fā)送一個字節(jié)子程序WRBYT;*WRBYT:PUSH06HMOVR6,#08H;發(fā)送一個字節(jié)子程序 WLP:RLCA ;(入口參數(shù)A)MOVSDA,CSETBSCLNOP;產(chǎn)生4.7US延時NOPNOPNOPNOPCLRSCLDJNZR6,WLPPOP06HRET;*;接收一個字節(jié)子程序RDBYT ;*RDBYT: PUSH06HMOVR6,#08H;接收一個字節(jié)子程序RLP:SETBSDASETBSCL; *NOP;!產(chǎn)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學校污染物管理制度
- 學校綜合部管理制度
- 學校防疫情管理制度
- 學生教寢室管理制度
- 學雷鋒組織管理制度
- 安全標注派管理制度
- 安徽公積金管理制度
- 安裝材料庫管理制度
- 定制廠配件管理制度
- 實木家具廠管理制度
- 2025春季學期國開電大本科《人文英語4》一平臺機考真題及答案(第七套)
- 2025年河北省萬唯中考定心卷生物(一)
- 2025-2030中國食物病原體檢測行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析研究報告
- 托里縣鐵廠溝鎮(zhèn)工業(yè)固廢垃圾填埋場項目環(huán)境影響報告書
- 中草藥種植技術(shù)課件
- T/CHES 63-2022活塞式調(diào)流調(diào)壓閥技術(shù)導則
- T/CCMA 0048-2017二手工程機械評估師
- 傳染病防治法試題(答案)
- 《中國近現(xiàn)代史綱要(2023版)》課后習題答案合集匯編
- 電磁場與電磁波智慧樹知到課后章節(jié)答案2023年下同濟大學
- 重慶市工傷保險傷殘、工亡待遇申請表
評論
0/150
提交評論