没有合适的资源?快使用搜索试试~ 我知道了~
18B20温度控制程序
资源推荐
资源详情
资源评论
DS18B20的读写程序
以下是我为宾馆智能控制器所做的温度探测器DS18B20的一个程序。在网上看到很多朋友想要DS18B20的读写程序却苦于找不到这样的程序,我把它贡献出来和大家分享。这个程序取到的温度值范围为0-70(一般应用足够了),如需大于此温度值可自行在TAB中添加。测温精度为0.5度,没有加校正,需要的朋友可自行查一些资料。
; FLAG1: 标志位,为"1"时表示检测到DS18B20
; DQ: DS18B20的数据总线接脚
; TEMPER_NUM:保存读出的温度数据
; 本程序仅适合单个DS18B20和51单片机的连接,晶振为12MHZ左右
TEMPER_L EQU 36H
TEMPER_H EQU 35H
DQ BIT P1.7
; DS18B20初始化程序
;//*****************************************//
INIT_1820:
SETB DQ
NOP
CLR DQ
MOV R0,#06BH
TSR1:
DJNZ R0,TSR1 ; 延时
SETB DQ
MOV R0,#25H
TSR2:
JNB DQ,TSR3
DJNZ R0,TSR2
LJMP TSR4 ; 延时
TSR3:
以下是我为宾馆智能控制器所做的温度探测器DS18B20的一个程序。在网上看到很多朋友想要DS18B20的读写程序却苦于找不到这样的程序,我把它贡献出来和大家分享。这个程序取到的温度值范围为0-70(一般应用足够了),如需大于此温度值可自行在TAB中添加。测温精度为0.5度,没有加校正,需要的朋友可自行查一些资料。
; FLAG1: 标志位,为"1"时表示检测到DS18B20
; DQ: DS18B20的数据总线接脚
; TEMPER_NUM:保存读出的温度数据
; 本程序仅适合单个DS18B20和51单片机的连接,晶振为12MHZ左右
TEMPER_L EQU 36H
TEMPER_H EQU 35H
DQ BIT P1.7
; DS18B20初始化程序
;//*****************************************//
INIT_1820:
SETB DQ
NOP
CLR DQ
MOV R0,#06BH
TSR1:
DJNZ R0,TSR1 ; 延时
SETB DQ
MOV R0,#25H
TSR2:
JNB DQ,TSR3
DJNZ R0,TSR2
LJMP TSR4 ; 延时
TSR3:
SETB FLAG1 ; 置标志位,表示DS1820存在
LJMP TSR5
TSR4:
CLR FLAG1 ; 清标志位,表示DS1820不存在
LJMP TSR7
TSR5:
MOV R0,#06BH
TSR6:
DJNZ R0,TSR6 ; 延时
TSR7:
SETB DQ
RET
;//*****************************************//
; 重新写DS18B20暂存存储器设定值
;//*****************************************//
RE_CONFIG:
JB FLAG1,RE_CONFIG1 ; 若DS18B20存在,转RE_CONFIG1
RET
RE_CONFIG1:
MOV A,#0CCH ; 发SKIP ROM命令
LCALL WRITE_1820
MOV A,#4EH ; 发写暂存存储器命令
LCALL WRITE_1820
MOV A,#00H ; TH(报警上限)中写入00H
LCALL WRITE_1820
MOV A,#00H ; TL(报警下限)中写入00H
LCALL WRITE_1820
MOV A,#1FH ; 选择9位温度分辨率
LCALL WRITE_1820
LJMP TSR5
TSR4:
CLR FLAG1 ; 清标志位,表示DS1820不存在
LJMP TSR7
TSR5:
MOV R0,#06BH
TSR6:
DJNZ R0,TSR6 ; 延时
TSR7:
SETB DQ
RET
;//*****************************************//
; 重新写DS18B20暂存存储器设定值
;//*****************************************//
RE_CONFIG:
JB FLAG1,RE_CONFIG1 ; 若DS18B20存在,转RE_CONFIG1
RET
RE_CONFIG1:
MOV A,#0CCH ; 发SKIP ROM命令
LCALL WRITE_1820
MOV A,#4EH ; 发写暂存存储器命令
LCALL WRITE_1820
MOV A,#00H ; TH(报警上限)中写入00H
LCALL WRITE_1820
MOV A,#00H ; TL(报警下限)中写入00H
LCALL WRITE_1820
MOV A,#1FH ; 选择9位温度分辨率
LCALL WRITE_1820
剩余6页未读,继续阅读
资源评论
fei1178
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功