温湿度检测报警系统_第1页
温湿度检测报警系统_第2页
温湿度检测报警系统_第3页
温湿度检测报警系统_第4页
温湿度检测报警系统_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

...wd......wd......wd...计算机科学与技术学院微计算机系统设计课程设计学号:S#########专业:计算机科学与技术学生姓名:###任课教师:###教授2012年12月温湿度检测与报警系统摘要以STC12C5A60S2单片机为控制单元,串行接口智能显示驱动芯片作为数码管和键盘的驱动器,采用C语言进展编程,设计实现一款临界值可调的温湿度检测与报警系统。本系统采用DHT11温湿度模块采集并处理温湿度参数,单片机从DHT11读取四十位数字信号(四十位数字信号为:湿度高八位,湿度低八位,温度高八位,温度低八位和校验位),根据要显示的内容选择性的把数据送往HD7279A,控制数码管的显示。HD7279A读取按键按下的键位,反响给MCU,实现不同的操作。该系统能够对空气温湿度进展准确的检测,并能实时显示当前温湿度。当温度或湿度越过临界值时,系统发出相应的报警信号。温湿度的临界值可以手动调节,方便不同的领域应用该系统。关键词:STC12C5A60S2,DHT11,HD7279A,温湿度,报警1引言在当今社会的各行各业,温度和湿度对各行业的影响不尽一样,但是温度和湿度是生产生活中的关键因素,只有把周围环境的温度和湿度控制在适宜的范围,生产生活才能有序的进展。1.1选题的目的和意义改革开放以来,我国的经济迅猛开展,人们生活消费水平的提高,在各行业生产中,在人们的日常生活中,环境的温度和湿度对于各方面起着弥足重要的作用。温度是表示物体冷热程度的物理量,微观上来讲是物体分子热运动的剧烈程度;湿度是表示大气枯燥程度的物理量,在一定温度下单位体积空气里含有的水汽的多少。温度、湿度和人类的生产、生活有着密切的关系,同时也是工业生产中最为常见的,而且是最根本的工艺参数;例如机械、石油化工、电子等各类行业中广泛需要对温度和湿度进展检测和控制。并且随着人们生活水平的提高,人们对自己的生存环境越来越关注,而空气中温湿度的变化与人体的舒适度和情绪都有着某种间接或者直接的关系,所以对温湿度的检测和控制就显得非常重要和迫切了。1.2课题研究现状及开展趋势应用在现在社会生活及工农业生产上的温湿度测试器有许多种,温湿度传感器也各式各样。不同的温湿度测试器采用的传感器不同,但是设计原理大致一样,它们都由三局部组成:测量局部、本体局部、PC界面。测量局部主要由温湿度传感器组成,传感器检测周围的温湿度。本体局部主要是控制芯片,当温湿度超过一定的范围时,控制芯片会控制相应的部件,做出相应的操作,直至温湿度数值到达正常的范围。PC界面主要是显示信息给用户,让用户知道周围的温湿度参数。总体来看,现代温湿度检测系统呈现出高精度、检测灵敏度高、体型小巧、可交互、标准化和模块化的趋势和开展。1.3课题的主要内容本课题设计的是温湿度检测报警系统,本系统的是以STC12C5A60S2为主控制芯片,包括HD7279A数码管键盘驱动模块、以DHT11为核心的温湿度检测模块和报警器等。本系统可以准确对周围环境的温湿度进展检测,实时显示温湿度的值。本系统的特点是:温湿度的临界值时可调的,越过临界值发出报警信号,报警信号根据低于或高于临界值的不同而不同。总之,该系统为用户提供一个精准的温湿度数字检测器。本设计主要在以下方面展开研究工作:〔1〕分析温湿度的开展历程和现状,论述课题的研究目的和研究意义〔2〕硬件总体设计的展开。简要介绍系统所需要的关键器件及其工作的原理,论述每个模块的硬件实现及其原理。〔3〕系统的软件设计。根据硬件设计和功能需求编写相应的软件程序。〔4〕对系统进展硬件和软件调试,得出结论并总结心得2系统的硬件介绍此局部主要介绍本系统的总体设计和主要模块的工作原理。2.1系统的总体设计系统主要由STC12C5A60S2单片机控制模块、DHT11温湿度检测处理模块、HD7279A为驱动的按键和显示模块、报警模块和辅助模块等几局部组成。本系统的构造图如2-1所示。图2-1系统总体设计温湿度检测模块不断的对周围环境温湿度参数进展采集处理,STC12C5A60S2单片机不断的和温湿度检测模块进展数据交换,并通过HD7279A驱动数码管显示温湿度,通过按键调节温湿度的上下临界值,翻开或关闭报警系统的允许位。如果温湿度异常,报警模块报警。2.2DHT11温湿度检测模块介绍温湿度检测模块式本系统的核心局部,主要负责温湿度的采集和模数的转换,为系统提供一组温湿度数字信号,方便处理。DHT11数字温度、湿度传感器是一款有已经校准数字信号输出的温度、湿度传感器。它采用先进的数字模块采集技术和温度、湿度传感技术,保证产品具有较高的可靠性与非凡的长期稳定性。DHT11测量范围20-90%RH0-50℃,测湿精度±5%RH,测温精度±2℃,分辨力为1。DHT11实物及典型电路图如图2-2所示。图2-2DHT11实物及典型电路图DHT11与STC12C5A60S2之间交换的数据是40bit的数字信号,MCU先从DHT11中读取高位,再读取低位,其40bit数据的格式为:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和。数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据〞所得结果的末8位。由于DHT11的精度为1,故小数位为0。2.3HD7279A驱动芯片和矩阵键盘、数码管2.3.1HD7279A简介HD7279A是一片具串行接口的,可同时驱动8位共阴式数码管的智能显示驱动芯片,该芯片同时还可以连接多达64键的键盘矩阵,单片即可完成LED显示,键盘接口的全部功能。HD7279A的管脚图如2-3所示。图2-3HD7279管脚HD7279A的主要特征为:(1).串行接口,无需外围元件可直接驱动LED。(2).各位独立控制译码/不译码及消隐和闪烁属性。(3).〔循环〕左移/〔循环〕右移指令。(4).具有段寻址指令,方便控制独立LED。(5).64键键盘控制器,内含去抖动电路2.3.2矩阵键盘的功能介绍本系统采用矩阵键盘作为用户与系统的交互接口。矩阵键盘中按键的标号为:0到F,其中0、1、2、4、5、8、9、C和D有具体的功能,其他按键无效。具体功能如表2.3所示。表2.3按键号使用及其功能简介键号功能简介0实时显示温度模式1实时显示湿度模式2报警系统允许与否切换按键4温度下限显示和温度下限调节〔与C、D键配合使用〕5湿度下限显示和温度下限调节〔与C、D键配合使用〕8温度上限显示和温度下限调节〔与C、D键配合使用〕9湿度上限显示和温度下限调节〔与C、D键配合使用〕C在十/个位减小温/湿度的数值〔与4、5、8、9键配合使用〕D在十/个位增加温/湿度的数值〔与4、5、8、9键配合使用〕2.3.3数码管显示功能本系统采用四个七段数码管显示所有的信息,要显示的内容包括:实时温湿度、温湿度的上下临界值和调节上下临界值时闪烁等。3系统的软件设计系统软件采用C语言,基于STC12C5A60S2单片机进展设计。根据系统功能要求,主控系统软件分为1个主程序模块和6个子程序模块,即系统初始化、定时器模块、温湿度采集模块、HD7279A驱动键盘和数码管显示、报警模块。软件设计的流程图如图3-1所示。下面就这几个方面进展介绍详细介绍。图3-1软件设计的流程图3.1系统的初始化模块系统初始化包括:DHT11初始化,HD7279A初始化,中断初始化,温湿度初始临界值初始化,报警使能初始化。其主要代码如下所示。init(){///发光二极管初始化P2_7=1;//74hc245数据方向为A进B出P2_6=0;//74HC573芯片使能输出P3_6=0;baojing_EN_flag=1;////初始化温湿度的临界值 wen_MAX=25; wen_MIN=15; shi_MAX=40; shi_MIN=20;//P4.4设置为通用I/O口 P4SW=0x10;/////7279初始化 Write_1byte(0xbf); //测试闪烁 DELAY_10nms(200); Write_1byte(CMD_RESET);//重启芯片DELAY_10nms(20);///中断初始化 EA=1;//开总中断 ET0=1;//定时器T0中断允许 TMOD=0x01;//使用定时器T0的模式1 TH0=(65536-10000)/256;//定时器T0的高8位赋初值 TL0=(65536-10000)%256;//定时器T0的高8位赋初值 TR0=1; //开场计数}3.2定时器模块 定时器中断服务程序为本系统软件设计的核心,其作用举足轻重。本系统采用定时器T0的模式1,即16位定时/计数器。当计数器计数溢出是产生中断,执行中断服务子程序。中断服务程序的伪代码如下所示。voidTime0(void)interrupt1using0{ EA=0; TR0=0;//关总中断,停顿计数 RH();//读取温湿度数据 default_show() //默认显示 if(baojing_EN_flag==0)baojing(); //是否执行报警 if(HD7279_KEY_DOWN==0) //有键按下 { DATA_IN=Receive_cmd_data(KEY_VALUE);//读出按键值 while(HD7279_KEY==0); //去抖动 { switch(按键号) { case0:display_wen();break;//显示温度 case1:display_shi();break;//显示湿度 case2:if(可以报警)Function(消除报警); case8:adjust(wen_MAX,8);break;//温度上限调节 case4:adjust(wen_MIN,4);break;//温度下限调节case9:adjust(shi_MAX,9);break;//湿度上限调节case5:adjust(shi_MIN,5);break;//湿度下限调节case12: sub();break;//增加操作 case13: add();break;//增加操作 } }} TH0=(65536-10000)/256;//定时器T0的高8位重新赋初值 TL0=(65536-10000)%256;//定时器T0的高8位重新赋初值 TR0=1; //重新计数 EA=1; //开总中断}3.3温湿度检测模块由于DHT11数据线为串行接口(单线双向),MCU发送一次开场信号后,DHT11从低功耗模式转换到高速模式,等待主机开场信号完毕后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,我们可选择读取局部数据。COM()函数执行一次取出8bit,要想取出40bit的数据,须执行四次COM()操作,即执行RH()。其伪代码如下所示。voidCOM(void){for(i=0;i<8;i++){U8FLAG=2;while((!P4_4)&&U8FLAG++); //等待数据起始信号完毕Delay_30us();//延时30-40us后判断如果是低电平表示为数据0 //如果是高电平表示为数据1U8temp=0;if(P4_4)U8temp=1;U8FLAG=2;while((P4_4)&&U8FLAG++);if(U8FLAG==1)break;U8comdata<<=1;U8comdata|=U8temp;}}voidRH(void){P4_4=0; //拉低总线Delay(25); //主机拉低总线大于18ms作为开场信号P4_4=1; //拉高总线Delay_40us();//开场信号发送完后拉高总线20-40us等待响应P4_4=1;if(!P4_4) //从器件发送响应{U8FLAG=2;while((!P4_4)&&U8FLAG++); //超出时间后自动认为完毕响应U8FLAG=2;while((P4_4)&&U8FLAG++); //发送数据的起始信号COM(); //读出湿度的整数局部U8RH_data_H_temp=U8comdata;//COM(); //读出湿度的小数局部U8RH_data_L_temp=U8comdata;COM();U8T_data_H_temp=U8comdata; //读出温度的整数局部COM();U8T_data_L_temp=U8comdata; //读出温度的小数局部COM(); //读出校验数据U8checkdata_temp=U8comdata; P4_4=1;U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);//校验if(U8temp==U8checkdata_temp) //校验规则{U8RH_data_H=U8RH_data_H_temp; //湿度高位U8RH_data_L=U8RH_data_L_temp; //湿度低位,为0U8T_data_H=U8T_data_H_temp; //温度高位U8T_data_L=U8T_data_L_temp; //温度低位,为0U8checkdata=U8checkdata_temp; //校验位}wendu_shi=U8T_data_H/10;wendu_ge=U8T_data_H%10;shidu_shi=U8RH_data_H/10;shidu_ge=U8RH_data_H%10;}}3.4HD7279A驱动键盘和数码管显示键盘局部功能复杂,其主要局部为:温湿度显示、温湿度上下限的选择,温湿度上下限的调节,报警系统的使能等。键盘的操作界面如图3-2所示,其中阴影局部为无效按键,0、1、2、4、5、8、9、C和D的具体功能参见表2.3〔按键号使用及其功能简介〕。通过对键盘操作界面的操作即可完成对系统的应用,当要显示相应的数据是,直接按相应的按键即可。例如,要显示实时温度的值,我们只需要按下0号键,其显示的格式为“25.C.〞,表示25℃。其显示操作函数如下所示。同样的道理,湿度显示格式为“25.RH.〞,表示25%RH。voiddisplay_wen(){Write_cmd_data(0xca,wendu_shi); //温度十位显示在第四位Write_cmd_data(0xc9,wendu_ge+0x80);//温度个位显示在第三位Write_cmd_data(0xc8,12+0x80); //湿度的单位C Write_cmd_data(0x93,0);//去除最后一位} 上述函数调用了对7279A操作的函数voidWrite_cmd_data(unsignedcharcommand,unsignedcharvalue),函数的功能为在command命令下,往数码管上显示value的值。如下所示。voidWrite_cmd_data(unsignedcharcommand,unsignedcharvalue){Write_1byte(command); //写命令DELAY_nus(15); Write_1byte(value); //写数据}当需要调节温湿度上下限时,以调节温度上限为例,调节其他雷同。如图3-3为调节功能的按键操作流程图。 图3-2键盘的操作界面图3-3调节温度MAX按键操作具体操作为:先按8号键,切换到显示温度上限的状态,8号键再按下温度上限十位闪烁,此时按下C/D键十位减/加1;再按下8号键,个位闪烁,此时按下C/D键个位减/加1;再按下8号键,返回显示温度上限的状态。此时完成对温度上下限的操作。其具体代码如下。Switch(key_value){case12: sub();break;case13: add();break;}//***********************************////*****sub函数,减小上下限***********////***********************************//voidsub(){ ////调上界 if((wen_MAX>wen_MIN+10)&&wen_H_shi==1) {if(wen_MAX/10!=0)wen_MAX-=10;show(wen_MAX);} if((shi_MAX>shi_MIN+10)&&shi_H_shi==1) {if(shi_MAX/10!=0)shi_MAX-=10;show(shi_MAX);} if((wen_MAX>wen_MIN+1)&&wen_H_ge==1) {if(wen_MAX%10!=0)wen_MAX-=1;show(wen_MAX);} if((shi_MAX>shi_MIN+1)&&shi_H_ge==1) {if(shi_MAX%10!=0)shi_MAX-=1;show(shi_MAX);} ////调下届 if(wen_L_shi==1) {if(wen_MIN/10!=0)wen_MIN-=10;show(wen_MIN);} if(wen_L_ge==1) {if((wen_MIN%10)!=0)wen_MIN--;show(wen_MIN);} if(shi_L_shi==1) {if(shi_MIN/10!=0)shi_MIN-=10;show(shi_MIN);} if(shi_L_ge==1) {if((shi_MIN%10)!=0)shi_MIN--;show(shi_MIN);} }//***********************************////*****add函数,增加上下限***********////***********************************//voidadd(){ ////调上界 if(wen_H_shi==1) {if(wen_MAX/10!=9)wen_MAX=wen_MAX+10;show(wen_MAX);} if(wen_H_ge==1) {if((wen_MAX%10)!=9)wen_MAX++;show(wen_MAX);} if(shi_H_shi==1) {if(shi_MAX/10!=9)shi_MAX=shi_MAX+10;show(shi_MAX);} if(shi_H_ge==1) {if((shi_MAX%10)!=9)shi_MAX++;show(shi_MAX);} ////调下界的十位 if((wen_MAX>wen_MIN+10)&&wen_L_shi==1) {if(wen_MIN/10!=9)wen_MIN+=10;show(wen_MIN);} if((shi_MAX>shi_MIN+10)&&shi_L_shi==1) {if(shi_MIN/10!=9)shi_MIN+=10;show(shi_MIN);} ///调下界的个位 if((wen_MAX>wen_MIN+1)&&wen_L_ge==1) {if((wen_MIN%10)!=9)wen_MIN++;show(wen_MIN);} if((shi_MAX>shi_MIN+1)&&shi_L_ge==1) {if((shi_MIN%10)!=9)shi_MIN++;show(shi_MIN);} }3.5报警模块当温湿度值超过/低于临界值时,发出报警信号,发光二极管闪烁。当超过时红灯闪烁,低于时绿灯闪烁。按键2为报警的使能按键,初始状态不允许报警,按下按键后允许报警,再按下又不允许报警。不允许报警的状态下,二极管为灭状态。当温度异常时,数码管显示温度;湿度异常时,数码管显示湿度;两者都异常时,数码管显示温度。voidbaojing(){///判断是温度越界还是湿度越界,不同的越界显示不同的参数 if(U8T_data_H>wen_MAX||U8T_data_H<wen_MIN) { default_show=0; Write_cmd_data(0x88,0xff);//取消闪烁 if(U8T_data_H>wen_MAX) { P0=0xff; //全部灭 DELAY_10nms(10); P0=0xaa; //红灯亮 DELAY_10nms(10); } if(U8T_data_H<wen_MIN) { P0=0xff; //全部灭 DELAY_10nms(10); P0=0x55; //绿灯亮 DELAY_10nms(10); } }elseif(U8RH_data_H>shi_MAX||U8RH_data_H<shi_MIN) { default_show=1; Write_cmd_data(0x88,0xff); if(U8RH_data_H>shi_MAX) { P0=0xff; //全部灭 DELAY_10nms(10); P0=0xaa; //红灯亮 DELAY_10nms(10); } if(U8RH_data_H<shi_MIN) { P0=0xff; //全部灭 DELAY_10nms(10); P0=0x55; //绿灯亮 DELAY_10nms(10); } }}4单片

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论