大連理工大學(xué)單片機(jī)實(shí)驗(yàn)報(bào)告(共25頁(yè))
《大連理工大學(xué)單片機(jī)實(shí)驗(yàn)報(bào)告(共25頁(yè))》由會(huì)員分享,可在線閱讀,更多相關(guān)《大連理工大學(xué)單片機(jī)實(shí)驗(yàn)報(bào)告(共25頁(yè))(25頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、精選優(yōu)質(zhì)文檔-----傾情為你奉上 大連理工大學(xué)本科設(shè)計(jì)報(bào)告 題目: 單總線高精度溫度采集系統(tǒng) 課程名稱(chēng): 單片機(jī)綜合設(shè)計(jì)實(shí)驗(yàn) 學(xué)院(系): 信息與通信工程學(xué)院 專(zhuān) 業(yè): 電子信息工程 班 級(jí): 電子 學(xué) 號(hào): 學(xué)生姓名: 成 績(jī): 2016 年 5 月 5 日
2、 一.設(shè)計(jì)要求 1. 啟動(dòng)DS18B20進(jìn)行12位高精度環(huán)境溫度采集 2. 利用12864LCD屏/數(shù)碼管顯示數(shù)據(jù) 3. 具有溫度上限聲光報(bào)警器 4. 可以通過(guò)鍵盤(pán)設(shè)定報(bào)警上限值(選) 二.設(shè)計(jì)分析及系統(tǒng)方案設(shè)計(jì) 通過(guò)DS18B20進(jìn)行小數(shù)12位溫度轉(zhuǎn)換、采集,通過(guò)單片機(jī)讀取DS18B20采集到的12位溫度值進(jìn)行二進(jìn)制到十六進(jìn)制的轉(zhuǎn)換,利用ZLG7290進(jìn)行八位數(shù)碼管顯示;利用鍵盤(pán)進(jìn)入中斷來(lái)設(shè)定報(bào)警上限,當(dāng)溫度高于上限時(shí)進(jìn)入報(bào)警子程序。利用SW1進(jìn)入中斷來(lái)查看當(dāng)前設(shè)置的溫度報(bào)警上下限值,利用ZLG7290和數(shù)碼管來(lái)顯示。主程序不斷循環(huán)采集溫度比較,并可隨時(shí)進(jìn)
3、入中斷來(lái)修改溫度上下限和查看溫度值。 三.系統(tǒng)電路圖 四.外圍接口模塊硬件電路功能描述 1.DS18B20:用于測(cè)定溫度,測(cè)量范圍-55~+125,分辨率為0.0625℃,數(shù)據(jù)格式為二進(jìn)制補(bǔ)碼形式。 2.ZLG7290B:用于數(shù)碼管動(dòng)態(tài)顯示驅(qū)動(dòng),鍵盤(pán)掃描管理。能夠驅(qū)動(dòng)8位共陰極結(jié)構(gòu)的LED數(shù)碼管或64位獨(dú)立的LED,同時(shí)還能掃描管理多達(dá)64個(gè)按鍵的掃描識(shí)別,其中八個(gè)鍵可以作為功能鍵使用。接口采用IC結(jié)構(gòu)。 3.蜂鳴器:這里用作報(bào)警,為無(wú)源蜂鳴器。 五.主程序中主要變量定義 變量名稱(chēng) 內(nèi)存單元 功
4、能 TEMPER_L 36H 存放溫度低四位 TEMPER_H 35H 存放溫度高四位 TEMPER 34H 轉(zhuǎn)換后的溫度值 TEMPER_BCD 33H BCD形式溫度值 TEMPER_NUM 60H 溫度值緩沖單元 WSLA_7290 70H 7290寫(xiě)控制單元 RSLA_7290 71H 7290讀控制單元 20-27H 數(shù)碼管顯示緩沖區(qū) 28H 存放溫度上限值 30-31H 存放溫度BCD碼個(gè)位十位 六.系統(tǒng)軟件中各個(gè)子程序的功能描述 子程序名稱(chēng) 入口參數(shù)
5、 出口參數(shù) 功能 描述 GET_TEMPER 無(wú) 35H,36H 讀取18B20的溫度值 READ_18200 35H,36H 無(wú) 向18b20讀控制字 TEMPER_COV 35H,36H 20H,21H 溫度轉(zhuǎn)換成十進(jìn)制BCD碼形式 CF 無(wú) R3,R4 拆分子程序,拆分送數(shù)碼管顯示 INIT_1820 無(wú) 無(wú) 溫度傳感器初始化 BUZZER 無(wú) 無(wú) 無(wú) 蜂鳴器控制發(fā)聲子程序 INT_7290 無(wú) 28H 讀取按鍵外部中斷子程序 RDKEY 無(wú) A 讀取鍵值子程序 DELAY 無(wú) 無(wú) 延時(shí)子程序
6、 七.主程序程序流程圖 8. 程序清單(要求打印格式要規(guī)范、重要的語(yǔ)句要有必要的注釋?zhuān)? SDA BIT P1.0 SCL BIT P1.1 TEMPER_L EQU 36H TEMPER_H EQU 35H TEMPER EQU 34H ;轉(zhuǎn)換后溫度值 TEMPER_BCD EQU 33H ;BCD碼溫度值 TEMPER_NUM EQU 60H ;緩沖單元 WSLA_7290 EQU 70H RSLA_7290 EQU 71H FLAG1
7、BIT 00H DQ BIT P3.3 ;總線控制單元 ORG 0000H LJMP MAIN ORG 0003H LJMP INT_7290 ORG 0100H MAIN: MOV SP,#70H ;ZLG7290復(fù)位 CLR P1.7 LCALL DELAY SETB P1.7 MOV 28H,#1EH ;溫度上限初始值30度 MOV TMOD,#01H ;模式一,16位計(jì)數(shù)器 SETB EA ;允許INTO中斷
8、 MODE: JB P1.3,SETTMP ;撥碼為0時(shí)采集溫度 ;溫度采集 TMP: CLR EX0 MOV 27H,#1FH ;t LP1: LCALL GET_TEMPER LCALL TEMPER_COV ;7290顯示 MOV R7,#08H MOV R0,#20H MOV R2,#10H MOV R3,#WSLA_7290 LCALL WRNBYT LCALL DELAY MOV A,TEMPER ;判斷溫度上限 MOV 28H,R5 CL
9、R C CJNE A,28H,rel ;此處報(bào)警溫度為30度 rel: JC NET LCALL BUZZER ;大于等于時(shí)蜂鳴器報(bào)警 ;閃爍 MOV 28H,#70H ;閃爍命令字 MOV 29H,#7FH ;閃爍命令字 MOV R7,#02H ;設(shè)定數(shù)據(jù)個(gè)數(shù) MOV R0,#28H ;設(shè)置源數(shù)據(jù)首地址 MOV R2,#07H ;設(shè)置外圍器件內(nèi)部寄存器首地址 MOV R3,#WSLA_7290 ;設(shè)定外圍器件地址 LCALL WRNBYT ;調(diào)用顯示子程序 LCALL DELAY LJMP NEX
10、TT ;設(shè)定溫度上限 SETTMP: SETB EX0 ;7290復(fù)位 CLR P1.7 LCALL DELAY SETB P1.7 ;顯示設(shè)定內(nèi)容 MOV 27H,#0B6H ;S MOV 26H,#9EH ;E MOV 25H,#1FH ;T. MOV R7,#03H MOV R0,#25H MOV R2,#15H MOV R3,#WSLA_7290 LCALL WRNBYT LCALL DELAY SJMP NEXTT NET: MOV 28H,#70
11、H ;不能閃爍 MOV 29H,#00H MOV R7,#02H MOV R0,#28H MOV R2,#07H MOV R3,#WSLA_7290 LCALL WRNBYT LCALL DELAY NEXTT: CALL DELAY SJMP MODE GET_TEMPER: SETB DQ ;定時(shí)入口 BCD: LCALL INIT_1820 JB FLAG1,S22 LJMP BCD ;若ds18b20不存在則返回 S22: LCALL DELAY1 MOV A,#0CCH ;
12、跳過(guò)rom匹配0cch LCALL WRITE_1820 MOV A,#44H ;發(fā)出溫度轉(zhuǎn)換命令 LCALL WRITE_1820 LCALL DELAY CBA: LCALL INIT_1820 JB FLAG1,ABC LJMP CBA ABC: LCALL DELAY1 MOV A,#0CCH ;跳過(guò)rom匹配 LCALL WRITE_1820 MOV A,#0BEH ;發(fā)出讀溫度命令 LCALL WRITE_1820 LCALL READ_18200 RET WRITE_1820:
13、;寫(xiě)ds18b20程序 MOV R2,#8 CLR C WR1: CLR DQ MOV R3,#6 ;延時(shí)24us DJNZ R3,$ RRC A MOV DQ,C MOV R3,#23 ;延時(shí)60us DJNZ R3,$ SETB DQ NOP DJNZ R2,WR1 SETB DQ RET READ_18200: ;從1820中讀出兩個(gè)字節(jié)溫度數(shù)據(jù) PUSH 01H MOV R4,#2 MOV R1,#36H RE00: MOV R2,#8 RE01: CLR
14、C SETB DQ NOP CLR DQ NOP NOP SETB DQ MOV R3,#2 DJNZ R3,$ MOV C,DQ MOV R3,#23H DJNZ R3,$ RRC A DJNZ R2,RE01 MOV @R1,A DEC R1 DJNZ R4,RE00 POP 01H RETU8 TEMPER_COV: ;將讀出的數(shù)據(jù)轉(zhuǎn)換 PUSH DPH PUSH DPL PUSH 02H MOV A,#0F0H ANL A
15、,TEMPER_L ;舍去小數(shù)點(diǎn)后的四位 SWAP A MOV TEMPER_NUM,A MOV A,TEMPER_H ANL A,#07H SWAP A ADD A,TEMPER_NUM MOV TEMPER,A ;轉(zhuǎn)換成十進(jìn)制數(shù)顯示 MOV B,#10 DIV AB MOV 30H,B ;個(gè)位 MOV B,#10 DIV AB MOV 31H,B ;十位 ANL A,#0FH ;百位 SWAP A ADD A,B MOV TEMPER_BCD,A
16、 LCALL CF2 ;拆分查表 MOV 25H,R3 MOV 26H,R4 MOV A,30H ANL A,#0FH LCALL CF MOV 24H,R3 ;處理四位小數(shù)位數(shù)據(jù) MOV A,TEMPER_L ANL A,#0FH ;取低四位數(shù)據(jù) MOV B,#02H MUL AB ;字節(jié)轉(zhuǎn)為字 MOV DPTR,#NUMSEG MOVC A,@A+DPTR MOV TEMPER_BCD,A LCALL CF2 MOV 22H,R3 MOV 23H,R4
17、 MOV A,TEMPER_L ANL A,#0FH MOV B,#02H MUL AB INC A MOVC A,@A+DPTR MOV TEMPER_BCD,A LCALL CF2 MOV 20H,R3 MOV 21H,R4 POP 02H POP DPL POP DPH RET ;--------------小數(shù)部分查表------------------------ NUMSEG: DW 0000H,0625H,1250H,1875H,2500H,3125H,3750H,4375H DW
18、 5000H,5625H,6250H,6875H,7500H,8125H,8750H,9375H ;-------------------------------------------------- ;--------------拆分顯示整數(shù)子程序------------------ CF: PUSH 02H PUSH DPH PUSH DPL MOV DPTR,#LEDSEG MOV R2,TEMPER_BCD ANL A,#0FH MOVC A,@A+DPTR ;查表得字形碼 MOV R3,A MOV A,R2 S
19、WAP A ANL A,#0FH MOVC A,@A+DPTR MOV R4,A INC R3 ;加上小數(shù)點(diǎn) POP DPL POP DPH POP 02H RET ;----------------------------------------------- ;--------------拆分顯示小數(shù)子程序------------------ CF2: PUSH 02H PUSH DPH PUSH DPL PUSH ACC MOV DPTR,#LEDSEG MOV R2,TEMPER_BCD MO
20、V A,R2 ANL A,#0FH MOVC A,@A+DPTR MOV R3,A MOV A,R2 SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV R4,A ;加上小數(shù)點(diǎn) POP ACC POP DPL POP DPH POP 02H RET ;----------------------------------------------- ;-----------------led字型碼--------------------- LEDSEG: DB 0FCH,60H,0
21、DAH,0F2H,66H,0B6H,0BEH,0E4H DB 0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EH ;----------------------------------------------- INIT_1820: SETB DQ NOP CLR DQ MOV R0,#80H TSR1: DJNZ R0,TSR1 ;延時(shí)300us SETB DQ MOV R0,#25H ;96us TSR2: DJNZ R0,TSR2 JNB DQ,TSR3 LJMP TSR4 ;延時(shí) T
22、SR3: SETB FLAG1 ;致標(biāo)志位 LJMP TSR5 ;ds18b20存在 TSR4: CLR FLAG1 ;清標(biāo)志位 LJMP TSR7 ;ds18b20不存在 TSR5: MOV R0,#06BH ;延時(shí)200us TSR6: DJNZ R0,TSR6 TSR7: SETB DQ RET DELAY1: MOV R7,#20H ;80us延時(shí) DJNZ R7,$ RET ;---------------蜂鳴器驅(qū)動(dòng)子程序-------------- BUZZER: PUSH 07H MOV R
23、7,#00H MOV TL0,#33H ;設(shè)置定時(shí)0.5us初值 MOV TH0,#0FEH SETB TR0 ;啟動(dòng)t0 WAIT: JNB TF0,$ CLR TF0 MOV TL0,#33H MOV TH0,#0FEH CPL P1.2 DJNZ R7,WAIT CLR TR0 SETB P1.2 POP 07H RET ;--------------------------------------------- ;-------------外部中斷服務(wù)程序---------------- INT_7290: PUS
24、H 00H PUSH 01H PUSH 02H PUSH 03H PUSH 04H PUSH 07H PUSH ACC PUSH PSW SJMP RD1 RD1: JB P3.2,$ ;以查詢(xún)方式等待下一次按鍵操作 SWAP A LCALL RDKEY CJNE A,#0AH,WAITT ;容錯(cuò)功能調(diào)整 WAITT: JNC RD1 MOV TEMPER_BCD,A LCALL CF2 MOV B,#0AH MUL AB MOV R5,A MOV 23H,R3
25、 MOV R7,#01H MOV R0,#23H MOV R2,#13H MOV R3,#WSLA_7290 LCALL WRNBYT KEY2: JB P3.2,$ ;以查詢(xún)方式等待下一次按鍵操作 LCALL RDKEY CJNE A,#0AH,WAITT2 WAITT2: JNC KEY2 MOV TEMPER_BCD,A LCALL CF2 MOV A,R5 ADD A,TEMPER_BCD MOV R5,A MOV 22H,R3 MOV 21H,#9CH ;C MOV
26、R7,#02H MOV R0,#21H MOV R2,#11H MOV R3,#WSLA_7290 LCALL WRNBYT ;確定鍵 COMF: JB P3.2,$ ;等待確認(rèn)鍵 LCALL RDKEY CJNE A,#0FH,COMF MOV 28H,R5 ;上限值放入28h中 DOWN: ;7290復(fù)位 CLR P1.7 LCALL DELAY SETB P1.7 CLR IE0 ;必須清標(biāo)志 POP PSW POP ACC POP 07H POP 04H POP 03H POP
27、 02H POP 00H RETI ;--------------------------------------------- ;------------讀取鍵值子程序(鍵值保存在A中)--- RDKEY: MOV R0,#1FH MOV R7,#01H MOV R2,#01H MOV R3,#WSLA_7290 MOV R4,#RSLA_7290 LCALL RDADD MOV A,1FH DEC A RET ;---------------------------------------------- ;---------
28、---延時(shí)子程序----------------------- DELAY: PUSH 00H ;延時(shí)子程序 PUSH 01H MOV R1,#00 LP: MOV R1,#00H DJNZ R1,$ DJNZ R0,LP POP 01H POP 00H RET ;--------------------------------------------- (I2C子程序省略) 九.系統(tǒng)調(diào)試運(yùn)行結(jié)果說(shuō)明、分析所出現(xiàn)得問(wèn)題,設(shè)計(jì)體會(huì)與建議 硬件使用ZLG51單片機(jī)開(kāi)發(fā)平臺(tái),軟件使用KEil2軟件進(jìn)行程序的編寫(xiě)編譯以及調(diào)試。 運(yùn)行結(jié)
29、果:能夠?qū)崿F(xiàn)當(dāng)前環(huán)境溫度的采集以及分為整數(shù)部分和小數(shù)部分的顯示,設(shè)定溫度上限,超過(guò)設(shè)定上限溫度進(jìn)行蜂鳴器報(bào)警,數(shù)碼管同時(shí)閃爍,溫度低于設(shè)定值立刻停止閃爍和報(bào)警。能夠通過(guò)撥碼控制模式切換,切換到設(shè)定上限溫度模式,通過(guò)按鍵輸入上限溫度值改變當(dāng)前上限溫度,能夠糾錯(cuò),輸入10以上的數(shù)字時(shí)不顯示,按下確定鍵時(shí)確定溫度上限值。 問(wèn)題: (1)采集的溫度為十六進(jìn)制數(shù)字,如何轉(zhuǎn)換成十進(jìn)制BCD碼。通過(guò)查詢(xún)上學(xué)期學(xué)習(xí)的計(jì)算機(jī)原理的相關(guān)算法,解決了此問(wèn)題,成功顯示。 (2)小數(shù)部分的顯示問(wèn)題。通過(guò)將有可能出現(xiàn)的小數(shù)情況列舉并進(jìn)行查表顯示,最后成功顯示。 (3)高于溫度報(bào)警閃爍之后,溫度下降以后數(shù)碼管仍然閃
30、爍,后來(lái)發(fā)現(xiàn)是子程序邏輯錯(cuò)誤已經(jīng)改正。 十.結(jié)論及設(shè)計(jì)體會(huì) 通過(guò)本次實(shí)驗(yàn),我對(duì)DS18B20芯片有了一定的了解,對(duì)于DS18B20編程的時(shí)序要求以及相應(yīng)的編程操作流程有了更深度的掌握。這次實(shí)驗(yàn)綜合了中斷、查詢(xún)、時(shí)鐘、ZLG7290芯片、DS18B20芯片等很多知識(shí)。本次試驗(yàn)采用子程序調(diào)用的方法進(jìn)行設(shè)計(jì),可以逐一的進(jìn)行調(diào)試,對(duì)于代碼量比較大的程序來(lái)說(shuō)子程序設(shè)計(jì)還是很好的編程開(kāi)發(fā)方式。此次試驗(yàn)中遇到很多細(xì)節(jié)的錯(cuò)誤,比如子程序順序混亂等邏輯錯(cuò)誤,導(dǎo)致程序總是出現(xiàn)錯(cuò)誤,幸好在最后都成功的改正了。 在代碼量比較大的程序設(shè)計(jì)時(shí),不能只對(duì)軟件代碼進(jìn)行修改,還要結(jié)合硬件調(diào)試,否則很難看出問(wèn)題,同時(shí)不怕錯(cuò)誤,會(huì)正確的調(diào)試方法,靈活使用斷點(diǎn),會(huì)找錯(cuò)并改錯(cuò)也是很重要的素質(zhì)。這次實(shí)驗(yàn)對(duì)我以后的程序設(shè)計(jì)任務(wù)有很大的啟發(fā)作用,讓我明白了程序設(shè)計(jì)的基本順序和需要注意的地方以及調(diào)試方法,相信在以后的學(xué)習(xí)和工作中都會(huì)受益。最后感謝老師的悉心教導(dǎo)。 參考文獻(xiàn) [1] 《MCS-51單片機(jī)應(yīng)用實(shí)驗(yàn)教程》 作者:陳育斌,秦曉梅等 專(zhuān)心---專(zhuān)注---專(zhuān)業(yè)
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案