温度报警器ds18b20制作.ppt

上传人:赵** 文档编号:65350723 上传时间:2022-12-05 格式:PPT 页数:21 大小:262.50KB
返回 下载 相关 举报
温度报警器ds18b20制作.ppt_第1页
第1页 / 共21页
温度报警器ds18b20制作.ppt_第2页
第2页 / 共21页
点击查看更多>>
资源描述

《温度报警器ds18b20制作.ppt》由会员分享,可在线阅读,更多相关《温度报警器ds18b20制作.ppt(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、温度报警器设计制作温度报警器设计制作设计简介温度是工业生产中常见的工艺参数之一,任何物理变化和化学反应过程都与温度密切相关,因此温度检测在日常活动与工业控制中已变得非常重要。此设计是基于单片机与温度传感器的综合应用此作品优势是设计相对精简,价钱相对便宜。具体器件具体器件 89S52型单片机 DS18B20传感器 两位译码管 12M晶振 蜂鸣器 PCB板 电容、电阻、LED、开关数只 主要元件简介DS18B20 DS18B20可将温度值转换为12位的数字量方式传送到单片机内内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器.其特点为 体积更小、适

2、用电压更宽、更经济,并采用“一线制”传输,测量温度范围为-55C+125C,在-10+85C范围内,精度为0.5C。DS18B20的精度较差为 2C ATS52单片机 AT89S52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器 AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM

3、、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。设计原理由DS18B20传感器原理,可将温度值转换为12位的数字量方式传送到单片机内。单片机内将得到的数字量经过预先编写的程序处理得到一个数值,再将此值与预定值比较,当此值大于或等于预定值时,通过程序驱动灯闪亮和蜂鸣器发声;当其小于预设值时,外设处于常态;在两种状态下,二位译码管都将显示此时的瞬时温度值主要功能利用AT89S52单片机和DS18B20温度传感器实现达到预设温度值的蜂鸣器报警可自由设置报警的数值(0到100度)可复位重设可扩充一些其他功能程序流

4、程图电路仿真图报警程序LED_0EQU 30HLED_1 EQU 31HWENDUEQU35HTEMPER_L EQU 29H ;存取低位TEMPER_H EQU 28HFLAG EQU38HFLAG1 BIT 00HDISP_SET EQU 37HH_TEM EQU 50HL_TEM EQU 51H ;差5度时的提示温度ALARM_LBITP3.0ALARM_H BIT P3.1GEWE BIT P3.4SHIWE BITP3.5SOUNDBITP3.7DQ BIT P1.0LIGHT BIT P1.1 ;传感器工作检测灯SHEWEN BIT P2.7 ;温度设置开关CLOSE BIT P1

5、.7 ;关闭响声CLOSE2 BIT01HSET1_A BIT 02H ORG 0000H SJMP START ORG 0050HSTART:MOV SP,#70H SETB CLOSE2 CLR SET1_A MOV LED_0,#00H MOV LED_1,#00H CLR SOUND MOV H_TEM,#60 MOV L_TEM,#55MAIN:LCALL GET_TEMPER MOV A,TEMPER_L MOV C,40H ;将28H中的最低位移入C RRC A MOV C,41H RRC A MOV C,42H RRC A MOV C,43H RRC A MOV TEMPER_

6、L,A WAIT:SETB ALARM_L SETB ALARM_H CLR SOUND JB P2.7,SET1 CLR SET1_A MOV WENDU,29H;读取转换结果 MOVA,#99 MOV R7,WENDU SUBB A,R7 JC OUT CLR C MOVA,H_TEM DECA MOVR0,WENDU SUBBA,R0;判断是否高于上限 JC HALM SETB CLOSE2 MOV A,L_TEM DEC A SUBB A,WENDU ;判断是否低于下限 JCLALM NOP LJMP MAINLALM:;低温报警 CLR ALARM_L LJMPMAINHALM:;高

7、温报警 JNB CLOSE2,CL;关闭报警声 JNB CLOSE,CL2 MOVR2,#235;置计数值 SETBSOUNDDV:LCALLDELY500 LCALLDELY500;延时1毫秒 DJNZR2,DV CPL ALARM_H;标志位取反 SJMP CLCL2:CLR CLOSE2CL:LJMPMAINOUT:;超过99度上限显示 LCALL GET_TEMPER_2 MOV A,TEMPER_L MOV C,40H;将28H中的最低位移入C RRC A MOV C,41H RRC A MOV C,42H RRC A MOV C,43H RRC A MOV TEMPER_L,A S

8、ETB CLOSE2 LJMP WAITSET1:JB SET1_A,SET1_1 MOV LED_0,#00H MOV LED_1,#00HSET1_1:MOV A,LED_1 MOV B,#10 MUL AB ADD A,LED_0 MOV DISP_SET,A MOV H_TEM,DISP_SET MOV A,H_TEM SUBB A,#05H MOV L_TEM,A CLR C SETB CLOSE2 JNB P3.4,SER1 JNB P3.5,SER2 LCALL DISP_3 LJMP WAITSER1:JNB P3.4,SER1;判断SP1是否按下 LCALL DELAY10M

9、S;若按下,则延时10ms左右 JNB P3.4,SER1 SETB SET1_A INC LED_0 MOV A,#9 SUBB A,LED_0 JNC CLR1 MOV LED_0,#00HCLR1:JNB P3.4,$AJMP SET1SER2:JNB P3.5,SER2;判断SP1是否按下 LCALL DELAY10MS;若按下,则延时10ms左右 JNB P3.5,SER2 SETB SET1_A INC LED_1 MOV A,#9 SUBB A,LED_1 JNC CLR2 MOV LED_1,#00HCLR2:JNB P3.5,$AJMP SET1 GET_TEMPER:SET

10、B DQ ;读出转换后的温度值BCD:LCALL INIT_1820 ;先复位DS18B20 JB FLAG,S22 LJMP BCD ;判断DS1820是否存在 若DS18B20不存在则返回S22:LCALL DELAY1 CLR LIGHT ;点亮检测灯 MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE_1820 MOV A,#44H ;发出温度转换命令 LCALL WRITE_1820 NOP LCALL DISP LCALL INIT_1820 ;准备读温度前先复位 MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE_1820 MOV A,#0BEH ;发

11、出读温度命令 LCALL WRITE_1820 LCALL READ_18200 ;将读出的温度数据保存到28H/29H RETGET_TEMPER_2:SETB DQ ;读出转换后的温度值BCD_2:LCALL INIT_1820 ;先复位DS18B20 JB FLAG,S22_2 LJMP BCD_2 ;判断DS1820是否存在 若DS18B20不存在则返回S22_2:LCALL DELAY1 CLR LIGHT ;点亮检测灯 MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE_1820 MOV A,#44H ;发出温度转换命令 LCALL WRITE_1820 NOP LC

12、ALL DISP_2 LCALL INIT_1820;准备读温度前先复位 MOV A,#0CCH;跳过ROM匹配 LCALL WRITE_1820 MOV A,#0BEH;发出读温度命令 LCALL WRITE_1820 LCALL READ_18200 ;将读出的温度数据保存到28H/29H RETWRITE_1820:MOV R2,#8 ;写DS18B20的子程序(有具体的时序要求),一共8位数据 CLR CWR1:CLR DQ MOV R3,#6 DJNZ R3,$RRC A MOV DQ,C MOV R3,#23 DJNZ R3,$SETB DQ NOP DJNZ R2,WR1 SET

13、B DQ RETREAD_18200:MOV R4,#2 ;读DS18B20的程序,将温度高位和低位从DS18B20中读出 MOV R1,#29H ;低位存入29H(TEMPER_L),高位存入28H(TEMPER_H)RE00:MOV R2,#8 ;数据一共有8位RE01:CLR C SETB DQ NOP NOP CLR DQ NOP NOP NOP SETB DQ MOV R3,#8RE10:DJNZ R3,RE10 MOV C,DQ MOV R3,#23 DJNZ R3,$RRC A DJNZ R2,RE01 MOV R1,A DEC R1 DJNZ R4,RE00 RETdisp:m

14、ov a,29H ;显示子程序将29H中的,低8位十六进制数转换成10进制 mov b,#10 ;16进制/10=10进制 div ab mov LED_1,a ;十位在a mov LED_0,b ;个位在b mov dptr,#TAB ;指定查表启始地址 mov r0,#4dpl1:mov r1,#250 ;显示1000次dplop:mov a,LED_0 ;取个位数 MOVC A,A+DPTR ;查个位数的7段代码 mov p0,a ;送出个位的7段代码 clr p2.3 ;开个位显示 acall DELAY1mS ;显示1ms setb p2.3 mov a,LED_1 ;取十位数 MO

15、VC A,A+DPTR ;查十位数的7段代码 mov p0,a ;送出十位的7段代码 clr p2.2 ;开十位显示 acall DELAY1mS ;显示1ms setb p2.2 djnz r1,dplop ;100次没完循环 djnz r0,dpl1 ;4个100次没完循环 retTAB:DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH,40HDISP_2:MOV LED_0,#10 ;超过上限显示 MOV LED_1,#10 mov dptr,#TAB ;指定查表启始地址 mov r0,#4dpl1_2:mov r1,#250 ;显示1000次d

16、plop_2:mov a,LED_0 MOVC A,A+DPTR ;查个位数的7段代码 mov p0,a ;送出个位的7段代码 clr p2.3 acall DELAY1mS setb p2.3 mov a,LED_1 ;取十位数 MOVC A,A+DPTR mov p0,a clr p2.2 acall DELAY1mS setb p2.2 djnz r1,dplop_2 ;100次没完循环 djnz r0,dpl1_2 ;4个100次没完循环 retDISP_3:mov a,DISP_SET ;显示子程序将29H中的,低8位十六进制数转换成10进制 mov b,#10 ;16进制/10=1

17、0进制 div ab mov LED_1,a ;十位在a mov LED_0,b ;个位在b mov dptr,#TAB ;指定查表启始地址 mov r0,#20dpl1_3:mov a,LED_0 MOVC A,A+DPTR ;查个位数的7段代码 mov p0,a ;送出个位的7段代码 clr p2.3 acall DELAY1mS setb p2.3 mov a,LED_1 ;取十位数 MOVC A,A+DPTR mov p0,a clr p2.2 acall DELAY1mS setb p2.2 djnz r0,dpl1_3 ;4个100次没完循环 retDELAY1mS:MOV R7,

18、#0f0H DJNZ R7,$RETINIT_1820:SETB DQ ;这是DS18B20复位初始化子程序 NOP CLR DQ MOV R1,#3 ;主机发出延时537微秒的复位低脉冲TSR1:MOV R0,#107 DJNZ R0,$DJNZ R1,TSR1 SETB DQ ;然后拉高数据线 NOP NOP NOP MOV R0,#25HTSR2:JNB DQ,TSR3 DJNZ R0,TSR2 ;等待DS18B20回应 LJMP TSR4TSR3:SETB FLAG ;置标志位,表示DS1820存在 LJMP TSR5TSR4:CLR FLAG ;清标志位,表示DS1820不存在 LJMP TSR7TSR5:MOV R0,#065H;200uSTSR6:DJNZ R0,TSR6 ;时序要求延时一段时间TSR7:SETB DQ RETDELAY10MS:MOV R6,#20 /延时10ms子程序L1:MOV R7,#247DJNZ R7,$DJNZ R6,L1RETDELAY1:MOV R7,#20H DJNZ R7,$RETDELAY2:MOV R5,#20D2:MOV R6,#20D3:MOV R7,#250 DJNZ R7,$DJNZ R6,D3 DJNZ R5,D2 RETDELY500:MOV R7,#0FDH DJNZ R7,$RETEND实物图

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁