|
利用AT89S2051采用DS18B20作為測(cè)溫傳感器,用AT89C2051作處理器,用數(shù)碼管顯示,并用LED燈作報(bào)警器。當(dāng)測(cè)量溫度高于100℃或低于-20℃時(shí),發(fā)出警報(bào)。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載):
0.png (29.93 KB, 下載次數(shù): 70)
下載附件
2017-7-4 01:36 上傳
0.png (30.57 KB, 下載次數(shù): 80)
下載附件
2017-7-4 01:33 上傳
0.png (53.39 KB, 下載次數(shù): 71)
下載附件
2017-7-4 01:35 上傳
單片機(jī)源程序如下:
- ORG 0000H
- LJMP MAIN
- ORG 0030H
- MAIN:LCALL CSH0 ;DS18B20初始化
- MOV A,#0CCH ;單點(diǎn)測(cè)溫時(shí)執(zhí)行跳過(guò)ROM命令節(jié)省訪問(wèn)時(shí)間
- LCALL WRITE
- MOV A,#44H ;發(fā)開(kāi)始溫度轉(zhuǎn)換命令
- LCALL WRITE
- LCALL CSH0 ;DS18B20初始化
- MOV A,#0CCH ;單點(diǎn)測(cè)溫時(shí)執(zhí)行跳過(guò)ROM命令節(jié)省訪問(wèn)時(shí)間
- LCALL WRITE
- MOV A,#0BEH ;讀存儲(chǔ)器命令(讀的字節(jié)暫存存儲(chǔ)器,此后讀操作)
- LCALL WRITE
- LCALL READ ;讀出已轉(zhuǎn)換的溫度值低字節(jié)
- MOV 2BH,A
- LCALL READ ;讀出已轉(zhuǎn)換的溫度值高字節(jié)
- MOV 2CH,A
- LCALL ERSH ;二進(jìn)制轉(zhuǎn)化成十進(jìn)制
- LCALL DISPL ;調(diào)用動(dòng)態(tài)顯示的子程序
- LCALL MAXorMIN;***判斷是否超出上下限***
- LJMP MAIN
- ;******************第一個(gè)DS18B20初始化子程序*******************
- CSH0:CLR P3.0
- MOV R2,#250
- CSH1:DJNZ R2, CSH1 ;主機(jī)發(fā)置位脈沖持續(xù)2μs*240=480μs
- SETB P3.0 ;主機(jī)釋放總線控制P3.2口改為輸入
- MOV R2,#30
- CSH4:DJNZ R2, CSH4 ;DS18B20等待2μs*30=60μs
- JB P3.0,CSH0 ;DS18B20沒(méi)準(zhǔn)備好,重來(lái)
- MOV R3,#120 ;DS18B20數(shù)據(jù)線變低
- CSH5:DJNZ R3,CSH5 ;DS18B20數(shù)據(jù)線低電平狀態(tài)可持續(xù)2μs*120=240us
- JB P3.0,CSH3 ;18B20數(shù)據(jù)線變高,初始化成功
- LJMP CSH0 ;初始化失敗,重來(lái)
- CSH3:MOV R2,#240
- CSH2:DJNZ R2, CSH2;18B20應(yīng)答過(guò)程最少2μs*240=480μs
- RET
- ;******************寫DS18B20子程序**********************
- WRITE:MOV R3,#8
- WR1: SETB P3.0 ;保證連續(xù)寫2位間的間隙大于1μs
- MOV R4,#7
-
- CLR P3.0
- RRC A
- WR2: DJNZ R4,WR2 ;18B20數(shù)據(jù)線變低后2μs*7+1=15μs開(kāi)始采樣數(shù)據(jù)
- MOV P3.0,C ;將命令字從低位按位依次送18B20
- MOV R4,#22
- WR3: DJNZ R4,WR3;保證整個(gè)寫過(guò)程持續(xù)2μs*22+1=45μS
- DJNZ R3,WR1;送完整個(gè)命令字
- SETB P3.0
- RET
- ;********************讀DS18B20子程序*********************
- READ:MOV R3,#8
- RE1: CLR P3.0
- MOV R4,#4
- NOP ;低電平持續(xù)2μs
- SETB P3.0 ;P3.0口設(shè)為輸入口
- RE2: DJNZ R4,RE2 ;等待2μs*4=8μs
- MOV C,P3.0 ;主機(jī)(從低位)按位讀入18B20數(shù)據(jù)
- RRC A ;數(shù)據(jù)逐位(先低位后高位)送入A
- MOV R4,#30
- RE3: DJNZ R4,RE3 ;保證讀數(shù)據(jù)過(guò)程持續(xù)2μs*30=60μs
- DJNZ R3,RE1 ;讀完整個(gè)轉(zhuǎn)換值(不含符號(hào)位)并存21H中
- RET
- ;************判斷是否為負(fù)、溫度精度轉(zhuǎn)換********************
- ERSH: MOV A,2CH ;把溫度的高字節(jié)給了A
- JB ACC.7,BB ;溫度為負(fù)轉(zhuǎn)變補(bǔ)(BB)程序段
- SETB F0 ;F0作為是否為負(fù)數(shù)的標(biāo)志
- MOV R7,#0FFH ;溫度為正不點(diǎn)亮
- ZHCH: MOV A,2BH ;屏蔽溫度低字節(jié)的小數(shù)位
- ANL A,#0F0H
- SWAP A
- MOV 2DH,A
- MOV A,2CH ;屏蔽溫度高字節(jié)的符號(hào)位
- ANL A,#07H
- SWAP A
- ADD A,2DH
- CFZH: MOV B,#10
- DIV AB
- MOV 41H,B ;41H中為個(gè)位
- MOV B,#10
- DIV AB
- MOV 42H,B ;42H中存放十位
- MOV B,#10
- DIV AB
- MOV 43H,B ;43H中為百位
- ESHD: MOV A,2BH ;低精度二十進(jìn)制轉(zhuǎn)換小數(shù)處理程序
- JB ACC.3,XS ;小數(shù)十分位為1,則跳轉(zhuǎn)到XS
- MOV 40H,#00H
- RET
- XS: MOV 40H,#05H ;43H中存放小數(shù)位
- RET
- BB: CLR F0
- MOV R7,#0BFH ;負(fù)數(shù)讓第1個(gè)數(shù)碼管顯示為"-"
- MOV A,2BH ;負(fù)數(shù)補(bǔ)碼求補(bǔ)
- CPL A
- ADD A,#1
- MOV 2BH,A ;負(fù)溫度低字節(jié)求補(bǔ)后送2BH
- MOV A,2CH
- CPL A
- ADDC A,#0
- MOV 2CH,A ;負(fù)溫度高字節(jié)求補(bǔ)后送2CH
- LJMP ZHCH ;負(fù)數(shù)求補(bǔ)后轉(zhuǎn)到ZHCH
- ;*************************顯示子程序**************************
- DISPL:MOV A,R7 ;取顯示的正負(fù)號(hào)
- MOV P1,A ;發(fā)送字段代碼
- CLR P3.5 ;Y5=0, K5=1
- ACALL DL2MS ;符號(hào)位
- SETB P3.5 ;138A腳置1,關(guān)閉所有位碼
- MOV DPTR,#CSTAB;字段碼表首址送DPTR
- MOV R1,#40H
- MOV A,@R1
- MOVC A,@A+DPTR
- MOV P1,A
- CLR P3.4
- CLR P3.7 ;Y2=0,K1=1
- ACALL DL2MS ;小數(shù)
- SETB P3.4
- SETB P3.7
- INC R1
- MOV A,@R1
- MOVC A,@A+DPTR
- ANL A,#7FH ;個(gè)位小數(shù)點(diǎn)亮 數(shù)碼管的Dp段點(diǎn)亮,其他段跟隨A中的值
- MOV P1,A
- CLR P3.7 ;Y3=0,K2=1
- ACALL DL2MS ;個(gè)位
- SETB P3.7
-
- INC R1
- MOV A,@R1
- MOVC A,@A+DPTR
- MOV P1,A
- CLR P3.4 ;Y3=0,K3=1
- CLR P3.5
- ACALL DL2MS ;十位
- SETB P3.4
- SETB P3.5
- INC R1
- MOV A,@R1
- MOVC A,@A+DPTR
- MOV P1,A
- CLR P3.4 ;Y6=0,K4=1
- ACALL DL2MS ;百位
- SETB P3.4
- RET
- ;*************************上下限判斷子程序**************************
- MAXorMIN: PUSH ACC
- JNB F0,MIN
- MAX: MOV A,43H ;正溫度時(shí),判斷是否超過(guò)上限100℃
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
溫度上下限 (4).zip
(2.29 MB, 下載次數(shù): 58)
2017-7-3 17:58 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|