室内温度控制报警器讲解.docx
- 文档编号:25966332
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:28
- 大小:215.86KB
室内温度控制报警器讲解.docx
《室内温度控制报警器讲解.docx》由会员分享,可在线阅读,更多相关《室内温度控制报警器讲解.docx(28页珍藏版)》请在冰豆网上搜索。
室内温度控制报警器讲解
室内温度控制报警器
前言
自从第三次科技革命以来,电子计算机,原子能和信息技术,新能源技术等等诸多新兴技术都得到了大力的发展。
这次科技革命不仅推动了人类社会经济,政治文化的变革,而且也影响了人类的生活方式和思维方式,使得人类的社会生活和现代化发展向更高的境界发展。
随着时代的发展和科技的进步,自动控制和智能化逐渐在全球得到广大人民追捧。
如声控、光控灯,银行的安全报警系统,医疗器械,工业的温度自动检测,智能手机等等。
而温度检测已经渗入到我们的生活、工作、科研等各个领域,已经成为了一种非常重要检测手段。
温度在工业生产中作为主要的被控参数之一,在冶金、机械、化工各类工业生产中,广泛的使用各种热处理炉、加热炉、反应炉等,对工件的温度处理要求严格控制。
温度控制在日常生活中也是随处可见的,如空调器温度的自动控制,电冰箱的自动制冷等等。
可见,温度控制在生活中许的方面都有着重要的应用和需要。
本次设计的目的就是基于AT89S51单片机设计一个室内温度控制报警的系统,该系统能实时采集室内的温度信息进行检测和控制,程序内部设定有报警上下限,根据温度变化范围设定报警上下限,当达到温度报警上下限时该系统通过蜂鸣器发出警报并自动控制温度。
通过本次设计深入的了解单片机的应用并掌握温度控制报警系统的硬件设计方法和软件编程方法,通过课题设计进一步巩固所学知识,锻炼动手能力并提升实际工作能力,将理论和实践相结合。
1系统设计
1.1设计题目
室内温度控制报警系统
1.2方案选择
为AT89S51的单片机
1.3设计内容
本次设计是以AT89S51单片机为控制核心的室内温度控制报警器。
通过温度传感器采集温度信息,经单片机进行计算分析处理,实现对温度的识别,从而达到温度的控制目的。
1.4设计要求
●能检测当前温度并显示温度值。
●具有报警功能。
●能进行温度的控制。
2系统硬件设计
本系统由AT89S51、温度传感器、复位电路、时钟电路、报警电路、蜂鸣器、LCD显示器组成,系统框图如图2-1所示:
图2-1系统框图
2.1CPU控制部分
2.1.1AT89S51单片机简介
AT89S51是一种可编程可擦除的只读存储器并带有4K字节的闪烁,具有是低功耗,高性能CMOS8位微处理器,俗称单片机。
AT89S51内有4K字节可编程闪烁存储器,128字节的内部RAM,32个外部双向I/O口,6个中断源,两个16位定时/计数器及两个全双工串行通信口,看门狗电路。
AT89S51有片内振荡器和时钟电路,具有掉电模式和低功耗的闲置。
AT89S51可降至0Hz的静态逻辑操作,空闲方式是停止CPU的工作,但允许定时/计数器、RAM、中断系统及串行通信口继续工作。
掉电方式是保存RAM中的内容,但振荡器停止工作就要禁止其它所有部件工作直到下一个硬件复位。
2.1.2管脚说明如图2.1.2-1所示:
图2.1.2-1AT89S51单片机管脚图
●VCC:
电源电压输入端
●GND:
接地
●P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口写1时,引脚作高阻抗输入。
P0能够用于外部程序数据存储器被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
●P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
当P1口写1时,内部上拉电阻把端口拉高作为输入口使用,P1口被外部下拉为低电平时将输出电流(IIT)。
●P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
当P2口写1时,内部上拉电阻把端口拉高,此时可以作为输入口使用将输出电流(IIT)。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
●P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写1时,内部上拉电阻把端口拉高,此时可以作为输入口使用将输出电流(IIT)。
P3口同时为闪烁编程和编程校验接受一些控制信号。
如表2.1.2-1所示:
表2.1.2-1P3口引脚应用
P3.0
RXD串行输入
P3.1
TXD串行输出
P3.2
INT0外部中断0
P3.3
INT1外部中断1
P3.4
T0定时器0外部输入
P3.5
T1定时器1外部输入
P3.6
WR外部数据存储器写选通
P3.7
RD外部数据存储器读选通
●RST:
复位输入,高电平有效。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
●ALE/PROG:
访问外部存储器时,地址锁存允许输出电平用于锁存地址的低位字节。
一般情况下,ALE以晶振六分之一的固定频率输出正脉冲信号,可用来作为外部定时器或始终使用。
然而每当用作外部数据存储器时,ALE脉冲将会跳过一个。
●PSEN:
外部程序存储器的选通信号,低电平有效。
在外部程序存储器取指时,PSEN有效且机器周期为二,若在访问外部程序存储器时,两次有效PSEN信号未出现。
●EA/VPP:
EA为底电位时,能从0000H到FFFFH的外部程序存储器读取指令,EA为高电位时,执行内部程序指令。
●XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
●XTAL2:
振荡器反相放大器的输出端。
2.1.3中断
中断:
在程序执行过程中,允许外部或内部事件被硬件打断程序的执行,使其转向处理内部事件的中断服务程序中去,完成中断服务程序后,CPU继续执行原来被打断的程序。
中断源:
能产生中断的外部或内部事件。
●T0:
定时/计数器0溢出中断请求。
●T1:
定时/计数器1溢出中断请求。
●INT0:
外部中断0请求,低电平有效。
通过P3.2引脚输入。
●INT1:
外部中断1请求,高电平有效。
通过P3.3引脚输入。
●RXD/TXD:
串行口中断请求。
2.1.4复位电路
复位是使单片机处于起始状态,并从该状态开始运行。
AT89S51的RST引脚为复位端,该引脚连续保持2个以上的机器周期高电平,则可使单片机复位。
内部复位电路在每一个机器周期的S5P2期间采样斯密特触发器的输出端,该触发器可抑制RST引脚的噪声干扰,并在复位期间不产生ALE信号,内部RAM处于不断电状态。
其中的数据信息不会丢失,即复位后,只影响SFR中的内容,内部RAM中的数据不受影响。
外部复位有上电复位和按键电平复位两种。
为了便于本设计运行调试,复位电路采用按键复位方式。
2.1.5时钟电路
时钟电路是单片机的心脏,它控制着单片机的工作节奏。
AT89S51内部有一个反相振荡放大器,XTAL1和XTAL2分别是该反向振荡放大器的输入端和输出端。
该反向放大器可配置为片内振荡器。
本设计采用晶振频率为12MHZ的时钟电路。
图2.1-1CPU控制部分图
2.2温度传感器DS18B20
使用温度传感器DS18B20是美国达拉斯(DALLAS)半导体公司推出的应用单总线技术的数字温度传感器。
该器件将半导体温敏器件、A/D转换器、存储器等做在一个很小的集成电路芯片上。
能够有效的减小外界的干扰,提高测量的精度,简化电路。
2.2.1DS18B20的主要性能特点
●独特的单线接口方式,仅需一条口线就可以实现DS18B20与微处理器的双向通讯。
●支持多点组网功能,多个(最多8个)DS18B20可以并联在唯一的三线上,实现组网多点测温,数量过多,会使电源电压过低造成信号传输的不稳定。
●DS18B20使用时不需要任何外围元件,全部集成在电路内。
●适应电压范围:
3.0V到5.5V之间,寄生电源方式下由数据线供电。
●测试温度范围:
-55℃~+125℃,固有测温分辨率为0.5℃。
●可编程分辨率为9~12位,对应分辨温度分别为0.5℃、0.25℃、0.125℃、0.0625℃,可实现高精度测温。
●分辨率为9位时最多在93.75ms内把温度转换为数字,12位时最多在750ms内把温度转换为数字,速度更快。
●测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。
●负压特性:
电源极性接反时,芯片不会被烧坏但不能正常工作。
2.2.2DS18B20的结构
DS18B20引脚
●GND:
接地端。
●VDD:
外接电源输入端。
●DQ:
数字信号输入输出端。
DS18b20内部结构由64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器四部分组成。
如图2.2.2-1所示:
图2.2,2-1DS18B20内部结构
●64位光刻ROM前8位是DS18B20的产品分类编号,接着的48位为自身的序列号,最后8位是前56位的CRC循环冗余校验码。
光刻ROM的作用是使每个DS18B20各不相同,实现一根总线上挂多个DS18B20的目的。
包括5个ROM的功能命令:
读ROM、匹配ROM、跳跃ROM、查找ROM和报警查找。
●温度传感器是DS18B20的核心部分,可完成对温度的测量。
●DS18B20的存储器包括一个高速暂存器RAM和一个非易失性的可电擦除的EEPRAM,非易失性的可电擦除的EEPRAM存放非挥发的温度报警触发器TH、TL和结构寄存器。
●配置寄存器是配置不同的位数来确定温度和数字的转化。
结构如表2.2.2-1所示:
表2.2.2-1配置寄存器结构
TM
R1
R0
1
1
1
1
1
低五位都是“1”,TM为测试模式位,用于设置DS18B20是在工作模式还是在测试模式。
2.2.3DS18B20的供电方式
DS18B20可以采用寄生电源供电和外部电源供电两种模式。
●寄生电源供电:
DS18B20的GND和VDD均直接接地,它的能量是从单线信号线获得的,信号线DQ处于高电平时在内部电容里储电,处于低电平时消耗电容里的电能,直到下一个高电平到来再给寄生电源充电。
使用寄生电源供电进行远距离测温时无需本地电源,可在没有常规电源条件下读取ROM,电路简洁只用一根I/O口就能实现测温。
●外部电源供电:
DS18B20工作电源由VDD引脚接入,GND接地,DQ与单总线相连作为信号线。
此时I/O线不需要强上拉,电源电流充足,能保证转换精度,总线上可以连接多个DS18B20传感器组成多点测温系统。
外部供电工作稳定可靠,抗干扰能力强,电路简单是DS18B20的最佳工作方式。
在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度且读取温度总为85℃。
2.2.4DS18B20的工作原理
DS18B20温度转换延时时间为750ms,低温度系数晶振振荡频率受温度影响很小,将产生固定频率的脉冲信号送给计数器1。
高温度系数晶振振荡频率受温度变化影响明显,产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置到-55℃所对应的一个值。
计数器1对低温系数晶振产生信号进行减法计数,计数器1的预置值减到0时温度寄存器的值就将加1,这时计数器1的重新被预置再开始对低温系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0则停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
2.3报警电路
蜂鸣器是一种一体化结构的电子讯响器,通过直流电压供电,是利用I/O定时翻转电平来产生符合蜂鸣器要求的频率波形,这个波形就可以用来驱动蜂鸣器。
由于蜂鸣器的工作电流一般较大,而单片机的I/O口则无法直接驱动的,一般利用三极管放大电流电路来驱动。
I/O口控制蜂鸣器时,按一次按键就能使蜂鸣器鸣叫,再按一次就停止鸣叫。
不鸣叫时将I/O口的输出电平设置为低电平是为了防止漏电。
当环境温度不在设置温度的范围内时需要发出警报,报警电路由蜂鸣器和LED闪烁灯构成。
选用低功率三极管9012,当P1.0为低电平时,三极管集电极正偏,发射极反偏,三极管导通则驱动蜂鸣器报警。
当室内温度高于所设上限温度时,LED1灯闪烁,蜂鸣器发出报警,当室内温度低于所设下限温度时,LED2灯闪烁,蜂鸣器发出警报。
报警电路如图2.3-1所示:
图2.3-1报警电路
2.4LCD1602显示器电路
LCD1602是一种专门用来显示数字、字母、符号等的点阵型液晶模块。
LCD1602显示器电路如图2.4-1所示:
图2.4-1LCD1602显示器
2.4.1LCD1602管脚功能
如表2.5-1所示:
表2.4.1-1LCD1602引脚介绍
引脚编号
符号
引脚说明
1
VSS
电源接地
2
VDD
电源正极5V
3
VL
液晶显示偏压
4
RS
寄存器选择(高电平:
数据寄存器,低电平:
指令寄存器)
5
RW
读写信号线(高电平:
读操作,低电平:
写操作)
6
EN
使能端
7~14
D0~D7
双向数据端
15
BLA
背光正极
16
BLK
背光负极
2.4.2LCD1602的特性及应用
LCD1602能提供清屏、字符闪烁、光标闪烁、显示移位等控制命令,接入电压为3.3V,对比度可调,有80字节显示数据存储器DDRAM,内建有192个5×7点阵字符发生器CGROM和8个可自定义5×7字符发生器CGRAM,内含复位电路。
LCD1602体积小,微功耗,薄又巧,显示内容丰富,多用在低功耗应用系统和袖珍式仪表中。
3系统软件设计
3.1主程序流程图
本系统设计采用C语言编程,主程序由四部分组成,通电后,系统首先初始化,再采集温度,处理温度,显示数据,最后进行键盘处理。
系统主程序流程图如图3.1-1所示:
图3.1-1主流程图
3.2温度测量流程图
在测量温度前首先要进行温度的采集,每个DSl8B20温度传感器在其ROM中都存有其唯一的48位序列号,在出厂前就已写入片内ROM中。
主机在进入操作程序前必须用读ROM(33H)命令将该DSl8B20的序列号读出并登录。
程序可以先跳过ROM,启动所有DSl8B20进行温度变换之后通过匹配ROM,再逐一地读回每个DSl8B20的温度数据。
采集了温度后并在单片机内部建立了测量位置和传感器64位ROM代码之间的关系表,就可对温度进行巡回测量。
温度处理是将采集到的温度数据与用户设定的上下限温度值进行比较,判断是否超出设定的上下限温度值,如果超出设定值则LED闪烁灯亮进行报警。
系统温度测量流程图如图3.2-1所示:
图3.2-1温度测量流程图
3.3显示模块流程图
显示模块部分主要是实现温度数据的显示,显示方式根据系统设计支持温度固定显示和测试点的轮流循环显示两种方式。
系统显示模块流程图如图3.3-1所示:
图3.3-1显示模块流程图
3.4键盘扫描流程图
按键处理程序是通过扫描按键的情况读取按键值。
实现了用户对系统各点温度传感器上下限报警参数的设置和显示模式的设置,并结合显示部分,实现用户与系统之间的人机接口。
系统键盘扫描流程图如图3.4-1所示:
图3.4-1键盘扫描流程图
4结束语
这次课程设计基本上完成了任务要求,实现了室内温度的控制和报警。
通过测试表明系统设计的正确性和可行性。
但是由于自身知识水平有限,系统还存在很多不足和缺陷。
本次设计采用的单片机AT89S51性价比高,温度传感器DS18B20转化温度的方法简单精度高且测试范围较广。
本次课程设计是为了进一步的学习和掌握单片机知识,经过两个多月的学习查找和方案论证并查阅了大量的相关资料,比较粗略的了解了温度传感器、AT89S51单片机及其接口电路、以及控制方面的理论知识。
对于单片机的硬件设计和软件设计掌握的程度不够,很多东西也没有但学懂。
但通过本次的课程设计有了一个较为乐观的改变,首先对于硬件电路的工作原理有了进一步的了解和学习,其次,软件方面在程序的设计及程序的调试方面都有了一个比较清晰的认识。
通过本次课程设计让我受益匪浅,使我学到了许多书本上无法学到的知识并且深刻的体会到了单片机技术应用领域的广泛性,也使我对学过的单片机知识有了一个巩固,同时也对单片机这一门课程产生了更大的兴趣。
通过所学的专业知识来解决问题,不仅检验了自己的知识水平也使我对自己有一个全新的认识。
要想把这门课程学好不仅要好好学习书本上的知识,还要学会应用现有资源查找资料,关键还要亲自动手实践,锻炼自己的动手能力,只有在实践中才能更好的掌握所学到的东西。
知识的获得是来自于课本理论与实践的相结合,我们只有把理论知识更好的运动到实践中才能学到真正的知识。
通过这次课程设计,不仅锻炼了自己分析问题和处理问题的能力,还提高了自己的动手能力。
这些培养和锻炼对于我们这些即将走向社会的大学生来说是非常重要的为今后的学习、工作打下了比较坚实的基础。
由于老师的悉心指导和同学的帮助我才能顺利完成本次课程设计,并对温度传感器、单片机理论等方面的知识进行了系统的学习,不仅巩固了专业知识也学会了很多新的东西,为我创造了很多有利条件。
在这里,首先我要感谢刘强老师,是他的认真教学使我对单片机这门课程有了一定的了解,并在学习的过程中对它产生了兴趣。
同时,我还要感谢实验室的所有老师,为我的课程设计提供了非常便利的条件。
在此特别感谢孙活老师,是你认真的教学,渊博的学识,视野的开阔,幽默犀利的言语令我受益匪浅,为我以后的生活学习带来深远的影响并让我领会了实践的重要,在此衷心的向孙老师表示感谢。
还要感谢帮助我的同学,是她们在设计过程中与我积极的探讨并提出好的建议并帮我解决了很多设计中遇到的难题,当我遇到困难及时给予我耐心的帮助。
最后还要感谢我的父母,是他们的默默付出和支持,才让我走到了今天。
附录:
附录1:
电路图
图1.1-1电路图
附录2:
程序
#include
#defineucharunsignedchar
#defineuintunsignedint
bitshanshuo_st;//闪烁间隔标志
signedcharm;//温度值全局变量
ucharn;//温度值全局变量
ucharset_st=0;//调整键状态标志
ucharadd_st=0;//增加建状态标志
uchardec_st=0;//减少键状态标志
signedcharshangxian=40;//上限报警温度,默认值为40
signedcharxiaxian=5;//下限报警温度,默认值为5
sbitDQ=P1^1;//定义DS18B20总线I/O
sbitset=P1^2;//定义调整键
sbitadd=P1^3;//定义增加键
sbitdec=P1^4;//定义减少键
sbitbeep=P1^0;//定义蜂鸣器
ucharcodetable[10]={0x5f,0x44,0x9d,0xd5,0xc6,0xd3,0xdb,0x45,0xdf,0xd7};
voiddelay(uintN)
{
inti;
for(i=0;i } voidDelay_1ms(uinti) { ucharx,j; for(j=0;j for(x=0;x<=148;x++); } voidintime(void) { TMOD=0X01; TH0=0X3C; TL0=0XB0; } voidtimer0(void)interrupt1 { TH0=0X3C; TL0=0XB0; } voidint0(uchardec_st) { EX0=0; if(dec_st==0&&set_st==1) { shangxian--; if(shangxian shangxian=xiaxian; } if(dec_st==0&&set_st==2) { xiaxian--; if(xiaxian<0) xiaxian=0; } } voidint1(ucharadd_st) { EX1=0; if(add_st==0&&set_st==1) { shangxian++; if(shangxian>99) shangxian=99; } if(add_st==0&&set_st==2) { xiaxian++; if(xiaxian>shangxian) xiaxian=shangxian; } } voidReset(void) { uchardeceive_ready; DQ=0; delay(29); DQ=1; delay(3); deceive_ready=DQ; delay(25); } ucharread_byte(void) { uchari=0; uchardat=0; for(i=8;i>0;i--) { DQ=0;//给脉冲信号 dat>>=1; DQ=1;//给脉冲信号 if(DQ) dat|=0x80; delay(8); } return(dat); } voidwrite_byte(uchardat) { uchari=0; for(i=8;i>0;i--) { DQ=0; DQ=dat&0x01; delay(9); DQ=1; dat>>=1; } } uintwendu(void) { uintt=0; uchara=0,b=0; floattt; Reset(); write_byte(0xCC); write_byte(0x44); Reset(); write_byte(0xCC); write_byte(0xBE); a=read_byte(); b=read_byte(); t=b; t<<=8; t=t|a; tt=t*0.0625; t=tt*10+0.5; return(t); } voidcheck_wendu(void) { uinta,b,c; c=wendu()-5; a=c/100; b=c/10-a*10; n=c%10; m=c/10; if(m<0) { m=0; n=0; } if(m>99) { m=99; n=9; } } voidwenduxianshi()//温度显示 { P0=0x3e;//显示C P2=0xf7; delay(200); P0=table[n];//显示个位 P2=0x7f; delay(200); P0=tab
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 室内 温度 控制 报警器 讲解