【资源下载】下载地址如下1524:
https://docs.qq.com/doc/DTlRSd01BZXNpRUxl
前言
对于现代工业生产过程,温度是一个非常重要的参数,例如,仓库温度,锅炉热水温度等。对温度的监测,需要满足实时性,下面介绍一种简易的温度监控系统,其兼具良好的经济和高效性。
1、任务要求与效果呈现
设计温度监控系统,采用DS18B20作为测温传感器,用AT89C2051作处理器,用数码管显示,并用LED灯作报警器。当测量温度高于100℃或低于-20℃时,发出警报。其效果如图1所示。
(a)规定温度范围内的正温度,数码管显示温度,LED不亮即不报警
(b)规定温度范围内的负温度,数码管显示温度,LED不亮即不报警
(c)超出温度上限(100℃),数码管显示温度,LED亮即报警
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:LCALL CSH0 ;DS18B20初始化
MOV A,#0CCH ;单点测温时执行跳过ROM命令节省访问时间
LCALL WRITE
MOV A,#44H ;发开始温度转换命令
LCALL WRITE
LCALL CSH0 ;DS18B20初始化
MOV A,#0CCH ;单点测温时执行跳过ROM命令节省访问时间
LCALL WRITE
MOV A,#0BEH ;读存储器命令(读的字节暂存存储器,此后读操作)
LCALL WRITE
LCALL READ ;读出已转换的温度值低字节
MOV 2BH,A
LCALL READ ;读出已转换的温度值高字节
MOV 2CH,A
LCALL ERSH ;二进制转化成十进制
LCALL DISPL ;调用动态显示的子程序
LCALL MAXorMIN;***判断是否超出上下限***
LJMP MAIN
;******************第一个DS18B20初始化子程序*******************
CSH0:CLR P3.0
MOV R2,#250
CSH1:DJNZ R2, CSH1 ;主机发置位脉冲持续2μs*240=480μs
SETB P3.0 ;主机释放总线控制P3.2口改为输入
MOV R2,#30
CSH4:DJNZ R2, CSH4 ;DS18B20等待2μs*30=60μs
JB P3.0,CSH0 ;DS18B20没准备好,重来
MOV R3,#120 ;DS18B20数据线变低
CSH5:DJNZ R3,CSH5 ;DS18B20数据线低电平状态可持续2μs*120=240us
JB P3.0,CSH3 ;18B20数据线变高,初始化成功
LJMP CSH0 ;初始化失败,重来
CSH3:MOV R2,#240
CSH2:DJNZ R2, CSH2;18B20应答过程最少2μs*240=480μs
RET
;******************写DS18B20子程序**********************