环境温度监控报警系统Word格式.docx
- 文档编号:802768
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:39
- 大小:974.54KB
环境温度监控报警系统Word格式.docx
《环境温度监控报警系统Word格式.docx》由会员分享,可在线阅读,更多相关《环境温度监控报警系统Word格式.docx(39页珍藏版)》请在冰点文库上搜索。
本系统共分为六个模块。
〔1〕单片机模块,这部分要紧实现数据的处理,输出执行,报警设置功能〔要紧模块〕
〔2〕液晶显示模块能够分别显示实时温度值,温度上下限。
(要紧模块)
〔3〕温度传感模块的要紧功能是通过DS18B20的强大功能实现对温度的采集。
〔4〕蜂鸣器模块能够发出报警声。
〔5〕按键能够设置时刻和上限的两个温度值
〔6〕LED灯模块能够显示报警信号
2.2、系统框架
图1
三、硬件电路设计
本系统由温度传感器DS18B20模块、单片机AT89C52模块、LCD液晶显示1602模块、蜂鸣器模块、LED灯模块、键盘模块六大模块组成,
3.1、单片机模块
3.1.1、AT89C52简介
该环境温度监控报警系统所用的单片机是AT89C52单片机,又图2为AT89C52单片机引脚图,AT89C52是一个低电压,高性能CMOS
8位单片机,片内含8kbytes的可反复擦写的Flash只读程序储备器和256bytes的随机存取数据储备器〔RAM〕,器件采纳ATMEL公司的高密度、非易失性储备技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash储备单元,该型号的单片机是应用量最多最普遍的单片机,它具有性能稳固、抗干扰能力强、性价比高、适应温度范畴广、功耗低、体积小的特点广泛应用于各种复杂环境及各电子行业中。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52能够按照常规方法进行编程,也能够在线编程。
其将通用的微处理器和Flash储备器结合在一起,专门是可反复擦写的Flash储备器可有效地降低开发成本因此我们选择了AT89C52单片机。
3.1.2、AT89C52的资源:
〔1〕兼容MCS51指令系统
〔2〕8kB可反复擦写(大于1000次〕FlashROM;
〔3〕32个双向I/O口;
〔4〕256x8bit内部RAM;
〔5〕3个16位可编程定时/计数器中断;
图2
〔6〕时钟频率0-24MHz;
〔7〕2个串行中断,可编程UART串行通道;
〔8〕2个外部中断源,共8个中断源;
〔9〕2个读写中断口线,3级加密位;
〔10〕低功耗闲暇和掉电模式,软件设置睡眠和唤醒功能;
〔11〕有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。
3.1.3、引脚说明
〔1〕P0口
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能吸取电流的方式驱动8个TTL逻辑门电路,对端口P0写〝1〞时,可作为高阻抗输入端用。
在访问外部数据储备器或程序储备器时,这组口线分时转换地址〔低8位〕和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
〔2〕P1口
P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动〔吸取或输出电流〕4个TTL逻辑门电路。
对端口写〝1〞,通过内部的上拉电阻把端口拉到高电平,现在可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入〔P1.0/T2〕和输入〔P1.1/T2EX〕。
〔3〕P2口
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动〔吸取或输出电流〕4个TTL逻辑门电路。
对端口P2写〝1〞,通过内部的上拉电阻把端口拉到高电平,现在可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序储备器或16位地数据储备器〔例如执行MOVX@DPTR指令〕时,P2口送出高8位地址数据。
在访问8位地址的外部数据储备器〔如执行MOVX@RI指令〕时,P2口输出P2锁存器的内容。
〔4〕P3口
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动〔吸取或输出电流〕4个TTL逻辑门电路。
对P3口写入〝1〞时,它们被内部上拉电阻拉高并可作为输入端口。
现在,被外部拉低的P3口将用上拉电阻输出电流〔IIL〕,P3口除了作为一样的I/O口线外,更重要的用途是它的第二功能,P3口还接收一些用于Flash闪速储备器编程和程序校验的操纵信号。
〔5〕RST
复位输入。
当振荡器工作时,RST引脚显现两个机器周期以上高电平将使单片机复位.
〔6〕ALE/PROG
当访问外部程序储备器或数据储备器时,ALE〔地址锁存承诺〕输出脉冲用于锁存地址的低8位字节。
一样情形下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据储备器时将跃过一个ALE脉冲。
〔7〕PSEN
程序储存承诺〔PSEN〕输出是外部程序储备器的读选通信号,当AT89C52由外部程序储备器取指令〔或数据〕时,每个机器周期两次PSEN有效,即输出两个脉冲。
在此期间,当访问外部数据储备器,将跃过两次PSEN信号。
〔8〕EA/VPP
外部访问承诺。
欲使CPU仅访问外部程序储备器〔地址为0000H—FFFFH〕,EA端必须保持低电平〔接地〕。
需注意的是:
假如加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平〔接Vcc端〕,CPU那么执行内部程序储备器中的指令。
Flash储备器编程时,该引脚加上+12V的编程承诺电源Vpp,因此这必须是该器件是使用12V编程电压Vpp。
(9)XTAL1
振荡器反相放大器及内部时钟发生器的输入端。
(10)XTAL2
振荡器反相放大器的输出端。
图3
3.1.4、单片机模块电路设计
AT89C52单片机接线图如以下图2
P0接液晶数据口,P2.2和P2.3接2个发光二极管,P3接8个按钮,P2.4接蜂鸣器,P2.5接继电器,P2.6接液晶的RS,P2.7接液晶的EN,P1.2接温度传感器,其他按单片机最小系统连接。
3.2传感器模块
3.2.1、DS18B20简介
采纳DALLAS最新单线数字温度传感器DS18B20。
新的〝一线器件〞体积更小、适用电压更宽、更经济。
一线总线专门而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
DS18B20〝一线总线〞数字化温度传感器也支持〝一线总线〞接口,测量温度范畴为-55°
C~+125°
C,在-10~+85°
C范畴内,精度为±
0.5°
C。
现场温度直截了当以〝一线总线〞的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:
环境操纵、设备或过程操纵、测温类消费电子产品等。
DS18B20的特性:
DS18B20能够程序设定9~12位的辨论率,精度为±
可选更小的封装方式,更宽的电压适用范畴。
辨论率设定,及用户设定的图4
报警温度储备在EEPROM中,掉电后依旧储存。
DS18B20的性能是新一代产品中最好的!
性能价格比也专门杰出!
继〝一线总线〞的早期产品后,DS1820开创了温度传感器技术的新概念。
DS18B20使电压、特性及封装有更多的选择,让我们能够构建适合自己的经济的测温系统。
3.2.2、DS18B20引脚说明
DQ:
数字信号输入/输出端。
GND:
电源地端。
VDD:
外接供电电源输入端(在寄生电源接线时此脚应接地)。
3.2.3DS18B20引脚电路设计
图5
3.3、液晶显示模块
3.3.1、1602LCD液晶显示屏简介
采纳LCD1602液晶显示模块,有体积小、功耗低、显示内容丰富、超薄轻巧等优点,在袖珍式外表和低功耗应用系统中得图6
到广泛的应用。
目前字符型液晶显示模块差不多是单片机应用设计中最常用的信息显示器件。
它能够显示两行,每行16个字符,采纳单+5V电源供电,外围电路配置简单,价格廉价,具有专门高的性价比。
3.3.2、1602引脚说明
1602采纳标准的16脚接口
〔1〕第1脚:
VSS为电源地
〔2〕第2脚:
VDD接5V电源正极
〔3〕第3脚:
V0为液晶显示器对比度调整端,接正极时对比度最弱,接地电源时对比度最高。
〔4〕第4脚:
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
〔5〕第5脚:
RW为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
〔6〕第6脚:
E(或EN)端为使能(enable)端。
〔7〕第7~14脚:
D0~D7为8位双向数据端。
〔8〕第15~16脚:
空脚或背光电源,15脚背光正极,16脚背光负极。
3.3.3、1602电路设计
图7
四、软件模块设计
4.1、主程序流程框图
图8
4.2、显示模块
4.2.1程序编写说明
寄图9图10
寄存器选择操纵表
RS
R/W
操作说明
写入指令寄存器〔清除屏等〕
1
读busyflag〔DB7〕,以及读取位址计数器〔DB0~DB6〕值
写入数据寄存器〔显示各字型等〕
从数据寄存器读取数据
注:
关于E=H脉冲——开始时初始化E为0,然后置E为1,再清0.
4.2.2、显示子程序
voidwrite_com(ucharcom)
{//写液晶命令函数
rs=0;
lcden=0;
P0=com;
delay(3);
lcden=1;
}
voidwrite_date(uchardate)
{//写液晶数据函数
rs=1;
P0=date;
voidwrite_sfm(ucharadd,chardate)//1602液晶刷新时分秒函数1为时,4为分,7为秒
{
charshiwei,gewei;
shiwei=date/10;
gewei=date%10;
write_com(0x80+add);
write_date(0x30+shiwei);
write_date(0x30+gewei);
voidwrite_nyr(ucharadd,chardate)
{//1602液晶刷新年月日函数3为年,6为分,9为秒
write_com(0xc0+add);
4.3、温度传感器模块
4.3.1、程序编写说明
图11图12
初始化
〔1〕先将数据线置高电平〝1〞。
〔2〕延时〔该时刻要求的不是专门严格,然而尽可能的短一点〕
〔3〕数据线拉到低电平〝0〞。
〔4〕延时750微秒〔该时刻的时刻范畴能够从480到960微秒〕。
〔5〕数据线拉到高电平〝1〞。
〔6〕延时等待〔假如初始化成功那么在15到60微秒时刻之内产生一个由DS18B20所返回的低电平〝0〞。
据该状态能够来确定它的存在,然而应注意不能无限的进行等待,不然会使程序进入死循环,因此要进行超时操纵〕。
〔7〕假设CPU读到了数据线上的低电平〝0〞后,还要做延时,其延时的时刻从发出的高电平算起〔第〔5〕步的时刻算起〕最少要480微秒。
〔8〕将数据线再次拉高到高电平〝1〞后终止。
写操作
〔1〕数据线先置低电平〝0〞。
〔2〕延时确定的时刻为15微秒。
〔3〕按从低位到高位的顺序发送字节〔一次只发送一位〕。
〔4〕延时时刻为45微秒。
〔5〕将数据线拉到高电平。
〔6〕重复上〔1〕到〔6〕的操作直到所有的字节全部发送完为止。
〔7〕最后将数据线拉高。
读操作
〔1〕将数据线拉高〝1〞。
〔2〕延时2微秒。
〔3〕将数据线拉低〝0〞。
〔4〕延时3微秒。
〔5〕将数据线拉高〝1〞。
〔6〕延时5微秒。
〔7〕读数据线的状态得到1个状态位,并进行数据处理。
〔8〕延时60微秒。
4.3.2、温度传感器读取温度以及显示温度的子程序:
voiddsreset(void)//18B20复位,初始化函数
{
uinti;
ds=0;
i=103;
while(i>
0)i--;
ds=1;
i=4;
bittempreadbit(void)//读1位函数
bitdat;
i++;
//i++起延时作用
dat=ds;
i=8;
while(i>
return(dat);
uchartempread(void)//读1个字节
uchari,j,dat;
dat=0;
for(i=1;
i<
=8;
i++)
{
j=tempreadbit();
dat=(j<
<
7)|(dat>
>
1);
//读出的数据最低位在最前面,如此刚好一个字节在DAT里
}
return(dat);
voidtempwritebyte(uchardat)//向18B20写一个字节数据
ucharj;
bittestb;
for(j=1;
j<
j++)
testb=dat&
0x01;
dat=dat>
1;
if(testb)//写1
i++;
else
//写0
voidtempchange(void)//DS18B20开始猎取温度并转换
dsreset();
delay
(1);
tempwritebyte(0xcc);
//写跃过读ROM指令
tempwritebyte(0x44);
//写温度转换指令
uintget_temp()//读取寄存器中储备的温度数据
uchara,b;
tempwritebyte(0xbe);
a=tempread();
//读低8位
b=tempread();
//读高8位
temp=b;
temp<
//两个字节组合为1个字
temp=temp|a;
f_temp=temp*0.0625;
//温度在寄存器中为12位辨论率位0.0625°
temp=f_temp+0.5;
//加0.5是四舍五入
returntemp;
//temp是浮点型
五、结论
紧紧张张的电子大赛培训也有一周之久了,第一给我们的感受确实是有好多东西都不明白,但这未必是一件坏事,就像王老师说的一样,你越是不明白就说明你要学的东西专门多,你的提升空间也就越大。
我们组每天差不多上起早贪黑的工作者早上7:
40准时在实验室坐着中午不休息一直到晚上10:
40才回去,因为再晚回到宿舍就要关门了,当东西做不完时我们都有一种冲动晚上不回了,正是因为这种执着拼搏的精神使我们收成专门多,每天我们都会感受脑子里差不多上满满的不管是明白得的收成依旧不明白得苦恼。
从刚开始的什么也不明白到现在的protel画电路图、proteus仿真、腐蚀、打板,焊接、调试等一些东西差不多上动能专门好的把握了,能够说这是一个庞大的进步,调试是一个复杂而漫长的过程,需要我们不断地去做,有一次我们的仿真也做出来了,然而在实物上确实是不行,结果总是不对,通过一上午的检查调试终于明白了是我们的一根线接反了,开始的时候我们还以为是在焊接时由于高温而把与器件烧了呢,因此我们有万能表一个一个的检查电路。
从这能够看出这是一个看似简单而最容易出错的过程,需要我们的耐心和细心。
现在我们的环境温度监控报警系统差不多做出来了,它能够收集环境的温度并在显示屏上显示出来,我们能够用矩阵键盘设置两个上线温度值,当检测到的环境温度值大于最小上线温度时二极管会闪耀同时蜂鸣器会做频率较低的报警,当环境温度大于较大上线温度值时二极管会闪耀同时蜂鸣器会做频率较高的报警。
它具有一定的使用价值能够用于仓库、实验室、机房以及军事等设备上。
该系统的整体设计依旧有专门大的提升空间的,比如让它也能够监控低温,当温度低于设置温度值时也能够做出一些指示报警。
另一方面,该系统只是报警这是不够的,最终依旧需要人去做出反应,我们能够让它自动切断电源,从而爱护设备,如此使其更具有自动化,从而会有更大的推广应用范畴。
六、致谢
本次项目从开始设计到最后完工涉及到大量的知识应用,我们的指导老师李清贵老师一直孜孜不倦的指导我们,给我们提供关心,专门是当遇到单片机上的问题。
在此我们感谢李清贵老师。
在项目设计的过程中有杨彦伟老师、李浩平老师和王晓军老师的监督治理以及在知识、器材、元件方便对我们的关心,在此我们一并表示致谢!
对当我们遇到问题时给我们提供关心的同学们在此我们同样便是感谢。
感谢一路上有你们的陪伴,真心的感谢你们!
七、参考文献
[1]、唐颖.单片机技术及C51程序设计.电子工业出版社.2021
[2]、黄智伟.全国大学生电子设计竞赛训练教程.电子工业出版社.2020
[3]、郭天祥.51单片机C语言教程.电子工业出版社.2020
[4]李朝清.单片机原理及接口技术.北京航空航天大学出版社,1996.8
[5]于永权.89系列〔MCS-51兼容〕Flash单片机原理及应用.北京:
电子工业出版社,1997
[6]wenku.baiduXX文库
[7]宋文续,扬帆.传感器与检测技术.北京:
高等教育出版社,2005.4
[8]常健生.检测与转换技术.北京:
机械工业出版社,2004.6
[9]凌志浩.智能外表原理与设计技术.上海:
华东理工大学出版社,2003.8
八、附录
8.1、实物图
8.2、仿真图
8.3、总程序
#include<
reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitrs=P2^6;
sbitlcden=P2^7;
sbitjidianqi=P2^5;
sbits1=P3^0;
//功能键
sbits2=P3^1;
//增加键
sbits3=P3^2;
//减小键
sbitbeep=P1^5;
//蜂鸣器
sbitled1=P1^0;
sbitled2=P1^1;
sbitds=P3^7;
//温度传感器
uintwarnl=33;
//下限温度
uintwarnh=35;
//上限温度
uinttemp;
//整形温度数据
floatf_temp;
//浮点型温度数据
ucharcount,stop,s1num,s2num;
//其它变量定义
charmiao,shi,fen;
ucharcodetable
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 环境温度 监控 报警 系统
![提示](https://static.bingdoc.com/images/bang_tan.gif)