您的位置 首页 芯闻

51单片机DS18B20温度操控报警程序(可设置温控规模)

DS18B20的管脚定义:1、GND2、DQ3、VCCDQrarr;P17K1rarr;P32K2rarr;P34K3rarr;P36K4rarr;P37温度显示用四位

DS18B20的管脚界说:

1、GND
2、DQ
3、VCC

DQ → P1.7

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

温度显现用四位数码管,当温度>=100度时,第四位才显现。
第五位数码管显现状况符号。

开机检测 DS18B20 状况:

DS18B20正常显现:

O 18.8 ← 显现实时温度和加热符号“O”

DS18B20不正常显现:
黑屏、蜂鸣器一向响。

这时你要检查DS18B20是否衔接好、接对,否则要替换一个新的 DS18B20 芯片。

程序在整个运转进程中,一直对 DS18B20 进行检测。
你能够将 DS18B20 从 51hei-5 拔掉,检测一下此功用。

一、检查温度报警值:

K1 → 进入检查温度报警值 TL 状况:

L--20
TL: 20 低位报警值

K1 → 进入检查温度报警值 TH 状况:

H--28
TH: 28 高位报警值

K1 → 退出检查温度报警值状况。

二、设定温度报警值:

1、K3 → 进入设定温度报警值 TL 状况:

L--20

2、K3 → 进入设定温度报警值 TH 状况:

H--28

3、K3 → 回来

4、设定进程: K1 →加键 (UP), K2 →减键 (DOWN),可快速调。

将设定的温度报警值主动存入 DS18B20 的 EEROM 中,可永久保存。
每次开机时主动从 DS18B20 的 EEROM 读出温度报警值。

三、报警状况的显现:

1、当实践温度大于 TH 的设定值时,

H 38.8 H → 闪烁

封闭继电器,表明超温。

2、当实践温度小于 TL 的设定值时,

L 18.8 L → 闪烁

表明加热部分呈现毛病。

3、当实践温度小于 TH 的设定值时,继电器吸合,开端加热。

加热符号为“O”

四、其它功用

1、以闪烁方法显现符号符 “ H”、“ L”、“O”。

2、实时温度百位数为 “0”时,不显现。

3、报警温度值百位数为 “0”时,显现“-”。

完好的程序代码下载地址:http://www.51hei.com/f/DS18B20温度操控LED显现_asm.rar

;*****************************************************************;*  标题:  51Hei单片机开发体系演示程序 - DS18B20温度操控数码管显现              *;*  晶振:  12M                                                                  *;*  跳线设置:J5的12脚用跳线帽短接,J5的第3脚用杜邦线衔接到顶部P1.0扩展,其他默许                                                                  *                                                 *;*  网站: http://www.51HEI.com                                                  *;******************************************************************;*  描绘:                                                                       *;*          DS18B20温度操控数码管显现                                           *;*        1、K3 → 进入设定温度报警值 TL 状况:                                   *;*           L--20                                                            *;*        2、K3 → 进入设定温度报警值 TH 状况:                                   *;*           H--28                                                            *;*        3、K3 → 回来                                                          *;*        4、设定进程: K1 →加键 (UP), K2 →减键 (DOWN),可快速调。         *;*                                                                              *;********************************************************************************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行的功用是封闭8*8点阵的输出,也便是把一切的行置0,这样不论列为任何电平点阵都不会亮了.MOV     R2,#8    ;输出数据8位 hei:     CLR     P2.4     ;拉低SCL,以便下次拉高便可发生上升沿CLR     P2.5  ;数据先送入74hc164,等候clk上升沿的到来SETB    P2.4     ;低电平到高电平边缘触发到来,并行数据输出至164的Q0-Q7DJNZ    R2,hei   ;判别输出结束了没有MOV  TMOD,#01H        ;T0,方法1MOV  TIMER_L,#00H     ;50ms定时值MOV  TIMER_H,#4CHMOV  TIMER_COUN,#00H  ;中止计数MOV  IE,#82H          ;EA=1,ET0=1LCALL  READ_E2;LCALL  RE_18B20MOV  20H,#00HSETB   BEEPSETB   RELAYMOV  7FH,#0AH         ;平息符CALL RESET            ;复位与检测DS18B20JNB FLAG1,MAIN1       ;FLAG1=0,DS18B20不存在JMP  STARTMAIN1:    CALL RESETJB FLAG1,STARTLCALL  BEEP_BL        ;DS18B20过错,报警JMP  MAIN1START:MOV A,#0CCH         ; 越过ROM匹配CALL WRITEMOV A,#044H         ; 宣布温度转化指令CALL WRITECALL RESETMOV A,#0CCH         ; 越过ROM匹配CALL WRITEMOV A,#0BEH         ; 宣布读温度指令CALL WRITECALL  READ           ;读温度数据CALL  CONVTEMPCALL  DISPBCDCALL  DISP1CALL  SCANKEYLCALL  TEMP_COMPJMP   MAIN1;=====================================================;DS18B20 复位与检测子程序;FLAG1=1 OK, FLAG1=0 ERROR;======================================================RESET:SETB DATA_LINENOPCLR DATA_LINEMOV R0,#64H            ;主机宣布延时600微秒的复位低脉冲MOV R1,#03HRESET1:   DJNZ R0,$MOV R0,#64HDJNZ R1,RESET1SETB DATA_LINE        ;然后拉高数据线NOPMOV R0,#25HRESET2:   JNB DATA_LINE,RESET3  ;等候DS18B20回应DJNZ R0,RESET2JMP RESET4            ; 延时RESET3:   SETB FLAG1            ; 置标志位,表明DS1820存在JMP RESET5RESET4:   CLR FLAG1             ; 清标志位,表明DS1820不存在JMP RESET6RESET5:   MOV R0,#064HDJNZ R0,$             ; 时序要求延时一段时间RESET6:   SETB DATA_LINERET;===========================================================;;===========================================================WRITE:  MOV R2,#8            ;总共8位数据CLR CYWR1:CLR DATA_LINE        ;开端写入DS18B20总线要处于复位(低)状况MOV R3,#09DJNZ R3,$            ;总线复位坚持18奇妙以上RRC A                ;把一个字节DATA 分红8个BIT环移给CMOV DATA_LINE,C      ;写入一个BITMOV R3,#23DJNZ R3,$            ;等候46奇妙SETB DATA_LINE       ;从头开释总线NOPDJNZ R2,WR1          ;写入下一个BITSETB DATA_LINERET;============================================================;从DS18B20中读出温度低位、高位和报警值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       ;开端读总线开释MOV R3,#09           ;延时18奇妙DJNZ R3,$MOV C,DATA_LINE      ;从DS18B20总线读得一个BITMOV R3,#23DJNZ R3,$            ;等候46奇妙RRC A                ;把读得的位值环移给ADJNZ R2,RE01         ;读下一个BITMOV @R1,AINC R1DJNZ R4,RE00RET        				   

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/xinwen/317988.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部