新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)DS18B20溫度控制報(bào)警程序(可設(shè)置溫控范圍)

51單片機(jī)DS18B20溫度控制報(bào)警程序(可設(shè)置溫控范圍)

作者: 時(shí)間:2016-11-30 來(lái)源:網(wǎng)絡(luò) 收藏
DS18B20的管腳定義:

1、GND
2、DQ
3、VCC

本文引用地址:http://butianyuan.cn/article/201611/323666.htm

DQ → P1.7

K1 → P3.2
K2 → P3.4
K3 → P3.6
K4 → P3.7

溫度顯示用四位數(shù)碼管,當(dāng)溫度>=100度時(shí),第四位才顯示。
第五位數(shù)碼管顯示狀態(tài)符號(hào)。

開(kāi)機(jī)檢測(cè) DS18B20 狀態(tài):

DS18B20正常顯示:

O 18.8 ← 顯示實(shí)時(shí)溫度和加熱標(biāo)記“O”

DS18B20不正常顯示:
黑屏、蜂鳴器一直響。

這時(shí)你要檢查DS18B20是否連接好、接對(duì),否則要更換一個(gè)新的 DS18B20 芯片。

程序在整個(gè)運(yùn)行過(guò)程中,始終對(duì) DS18B20 進(jìn)行檢測(cè)。
你可以將 DS18B20 從 51hei-5 拔掉,檢測(cè)一下此功能。

一、查看溫度報(bào)警值:

K1 → 進(jìn)入查看溫度報(bào)警值 TL 狀態(tài):

L--20
TL: 20 低位報(bào)警值

K1 → 進(jìn)入查看溫度報(bào)警值 TH 狀態(tài):

H--28
TH: 28 高位報(bào)警值

K1 → 退出查看溫度報(bào)警值狀態(tài)。


二、設(shè)定溫度報(bào)警值:

1、K3 → 進(jìn)入設(shè)定溫度報(bào)警值 TL 狀態(tài):

L--20

2、K3 → 進(jìn)入設(shè)定溫度報(bào)警值 TH 狀態(tài):

H--28

3、K3 → 返回

4、設(shè)定過(guò)程: K1 →加鍵 (UP), K2 →減鍵 (DOWN),可快速調(diào)。

將設(shè)定的溫度報(bào)警值自動(dòng)存入 DS18B20 的 EEROM 中,可永久保存。
每次開(kāi)機(jī)時(shí)自動(dòng)從 DS18B20 的 EEROM 讀出溫度報(bào)警值。

三、報(bào)警狀態(tài)的顯示:

1、當(dāng)實(shí)際溫度大于 TH 的設(shè)定值時(shí),

H 38.8 H → 閃動(dòng)

關(guān)閉繼電器,表示超溫。

2、當(dāng)實(shí)際溫度小于 TL 的設(shè)定值時(shí),

L 18.8 L → 閃動(dòng)

表示加熱部分出現(xiàn)故障。

3、當(dāng)實(shí)際溫度小于 TH 的設(shè)定值時(shí),繼電器吸合,開(kāi)始加熱。

加熱標(biāo)記為“O”

四、其它功能

1、以閃動(dòng)方式顯示標(biāo)記符 “ H”、“ L”、“O”。

2、實(shí)時(shí)溫度百位數(shù)為 “0”時(shí),不顯示。

3、報(bào)警溫度值百位數(shù)為 “0”時(shí),顯示“-”。

完整的程序代碼下載地址:http://www.51hei.com/f/DS18B20溫度控制LED顯示_asm.rar

;*****************************************************************;*  標(biāo)題:  51Hei單片機(jī)開(kāi)發(fā)系統(tǒng)演示程序 - DS18B20溫度控制數(shù)碼管顯示              *;*  晶振:  12M                                                                  *;*  跳線設(shè)置:J5的12腳用跳線帽短接,J5的第3腳用杜邦線連接到頂部P1.0擴(kuò)展,其他默認(rèn)                                                                  *                                                 *;*  網(wǎng)站: http://www.51HEI.com                                                  *;******************************************************************;*  描述:                                                                       *;*          DS18B20溫度控制數(shù)碼管顯示                                           *;*        1、K3 → 進(jìn)入設(shè)定溫度報(bào)警值 TL 狀態(tài):                                   *;*           L--20                                                            *;*        2、K3 → 進(jìn)入設(shè)定溫度報(bào)警值 TH 狀態(tài):                                   *;*           H--28                                                            *;*        3、K3 → 返回                                                          *;*        4、設(shè)定過(guò)程: K1 →加鍵 (UP), K2 →減鍵 (DOWN),可快速調(diào)。         *;*                                                                              *;********************************************************************************TIMER_L     DATA  23HTIMER_H     DATA  24HTIMER_COUN  DATA  25HTEMPL       DATA  26HTEMPH       DATA  27HTEMP_TH     DATA  28HTEMP_TL     DATA  29HTEMPHC      DATA  2AHTEMPLC      DATA  2BHTEMP_ZH     DATA  2CHBEEP        EQU   P1.0DATA_LINE   EQU   P1.7RELAY       EQU   P2.2FLAG1       EQU   20H.0FLAG2       EQU   20H.1;-------------------------------------------------K1   EQU  P3.2K2   EQU  P3.4K3   EQU  P3.6K4   EQU  P3.7;=================================================ORG 0000HJMP  MAINORG  000BHAJMP  INT_T0;--------------------------------------------------MAIN:     MOV SP,#30H;以下5行的功能是關(guān)閉8*8點(diǎn)陣的輸出,也就是把所有的行置0,這樣不管列為任何電平點(diǎn)陣都不會(huì)亮了.MOV     R2,#8    ;輸出數(shù)據(jù)8位 hei:     CLR     P2.4     ;拉低SCL,以便下次拉高便可產(chǎn)生上升沿CLR     P2.5  ;數(shù)據(jù)先送入74hc164,等待clk上升沿的到來(lái)SETB    P2.4     ;低電平到高電平邊沿觸發(fā)到來(lái),并行數(shù)據(jù)輸出至164的Q0-Q7DJNZ    R2,hei   ;判斷輸出完畢了沒(méi)有MOV  TMOD,#01H        ;T0,方式1MOV  TIMER_L,#00H     ;50ms定時(shí)值MOV  TIMER_H,#4CHMOV  TIMER_COUN,#00H  ;中斷計(jì)數(shù)MOV  IE,#82H          ;EA=1,ET0=1LCALL  READ_E2;LCALL  RE_18B20MOV  20H,#00HSETB   BEEPSETB   RELAYMOV  7FH,#0AH         ;熄滅符CALL RESET            ;復(fù)位與檢測(cè)DS18B20JNB FLAG1,MAIN1       ;FLAG1=0,DS18B20不存在JMP  STARTMAIN1:    CALL RESETJB FLAG1,STARTLCALL  BEEP_BL        ;DS18B20錯(cuò)誤,報(bào)警JMP  MAIN1START:MOV A,#0CCH         ; 跳過(guò)ROM匹配CALL WRITEMOV A,#044H         ; 發(fā)出溫度轉(zhuǎn)換命令CALL WRITECALL RESETMOV A,#0CCH         ; 跳過(guò)ROM匹配CALL WRITEMOV A,#0BEH         ; 發(fā)出讀溫度命令CALL WRITECALL  READ           ;讀溫度數(shù)據(jù)CALL  CONVTEMPCALL  DISPBCDCALL  DISP1CALL  SCANKEYLCALL  TEMP_COMPJMP   MAIN1;=====================================================;DS18B20 復(fù)位與檢測(cè)子程序;FLAG1=1 OK, FLAG1=0 ERROR;======================================================RESET:SETB DATA_LINENOPCLR DATA_LINEMOV R0,#64H            ;主機(jī)發(fā)出延時(shí)600微秒的復(fù)位低脈沖MOV R1,#03HRESET1:   DJNZ R0,$MOV R0,#64HDJNZ R1,RESET1SETB DATA_LINE        ;然后拉高數(shù)據(jù)線NOPMOV R0,#25HRESET2:   JNB DATA_LINE,RESET3  ;等待DS18B20回應(yīng)DJNZ R0,RESET2JMP RESET4            ; 延時(shí)RESET3:   SETB FLAG1            ; 置標(biāo)志位,表示DS1820存在JMP RESET5RESET4:   CLR FLAG1             ; 清標(biāo)志位,表示DS1820不存在JMP RESET6RESET5:   MOV R0,#064HDJNZ R0,$             ; 時(shí)序要求延時(shí)一段時(shí)間RESET6:   SETB DATA_LINERET;===========================================================;;===========================================================WRITE:  MOV R2,#8            ;一共8位數(shù)據(jù)CLR CYWR1:CLR DATA_LINE        ;開(kāi)始寫(xiě)入DS18B20總線要處于復(fù)位(低)狀態(tài)MOV R3,#09DJNZ R3,$            ;總線復(fù)位保持18微妙以上RRC A                ;把一個(gè)字節(jié)DATA 分成8個(gè)BIT環(huán)移給CMOV DATA_LINE,C      ;寫(xiě)入一個(gè)BITMOV R3,#23DJNZ R3,$            ;等待46微妙SETB DATA_LINE       ;重新釋放總線NOPDJNZ R2,WR1          ;寫(xiě)入下一個(gè)BITSETB DATA_LINERET;============================================================;從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 CSETB DATA_LINENOPNOPCLR DATA_LINE        ;讀前總線保持為低NOPNOPNOPSETB DATA_LINE       ;開(kāi)始讀總線釋放MOV R3,#09           ;延時(shí)18微妙DJNZ R3,$MOV C,DATA_LINE      ;從DS18B20總線讀得一個(gè)BITMOV R3,#23DJNZ R3,$            ;等待46微妙RRC A                ;把讀得的位值環(huán)移給ADJNZ R2,RE01         ;讀下一個(gè)BITMOV @R1,AINC R1DJNZ R4,RE00RET        				   
				
            
                
			
							
上一頁(yè) 1 2 3 下一頁(yè)

評(píng)論


技術(shù)專區(qū)

關(guān)閉