毕业设计(论文)-红外报警监控系统--温湿度监测.doc_第1页
毕业设计(论文)-红外报警监控系统--温湿度监测.doc_第2页
毕业设计(论文)-红外报警监控系统--温湿度监测.doc_第3页
毕业设计(论文)-红外报警监控系统--温湿度监测.doc_第4页
毕业设计(论文)-红外报警监控系统--温湿度监测.doc_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

华南农业大学珠江学院 毕业论文 题目 红外报警监控系统 温湿度监测 作者: 指导老师: 系:2008 年级专业:电子信息工程 提交日期: 答辩日期: 答辩委员会主席(签名): 评阅人(签名): 年 月 日 (一) 摘 要随着社会的发展,科学技术的进步和安全防范意识的增强,人们越来越注重自身所处的环境是否安全。当家中无人或者仅有老人孩子在家时,必须考虑家庭成员生命和财产的绝对安全。目前,许多住宅小区的安防主要依靠安装防盗窗、防盗门以及人工防范。这样不仅有碍美观,不符合防火的要求,而且不能有效地防止坏人的侵入。本课题研究红外报警监控系统,它集红外报警、温湿度测量显示、实时时钟为一体,简单实用,抗干扰能力强、灵敏度高、安全可靠,具有较高的应用价值。本系统采用单片机stc89c51,温湿度测量采用全数字型温湿度传感器dht11,温度测量范围0-50,湿度测量范围20%rh90%rh,可以满足一般需要。若要求更宽测量范围,只需更换温湿度传感器型号,硬件电路及软件程序全兼容。采用ds1302做实时时钟电路,ds1302是dallas公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态ram,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、日期、月、年的信息。每月的天数和闰年的天数可自动调整。时钟操作可通过am/pm指示决定采用24或12小时格式。显示部分采用smc 1602液晶屏进行数据显示,显示容量16x2个字节,工作电压5.0v。重点对硬件、软件的组成进行了分项、模块化设计。对各部分的电路一 一进行了介绍,最终实现了该系统的硬件设计,绘制了电路原理图。在软件方面完成了各功能模块的流程图,并根据设计要求对需要实现的功能经过反复的模拟运行、调试、修改、简化、最后得出一套完整的 软件系统。关键字:温湿度传感器 ds1302时钟芯片 smc 1602液晶屏 stc89c51 (二)目 录(三)元件清单 红外报警监控系统(3005)元器件清单元件名封装标称值说明数量c1直插10uf/16v电解电容1c2c3直插20pf2c4直插0.1uf1c5直插22uf/16v电解电容1d1直插1n41481r1,r3-r4,r9-r13直插1k8r2,r5-r6,r8,r14-r17直插10k8r7直插5k1b1直插蜂鸣器1v1直插8550三极管1l1直插绿色发光管1l3直插红色发光管1l4直插红色发光管1l5直插红色发光管1y1直插11.0572m晶振1y2直插32.768k晶振1k1直插自锁按钮电源按钮1k2直插微动开关按键1k3直插微动开关按键1k4直插微动开关按键1k5直插微动开关按键1u1直插stc89c52单片机1u2dip8dyp-me003红外传感器1u3dip824c01eeprom1u4直插dht11传感器1u5dip8ds1302时钟芯片1液晶屏lcd1602绿屏1纽扣电池cr23023v1纽扣电池座1usb插座4脚插针1单片机插座dip401lcd排针sip161lcd转接插座16脚插针1usb下载线1连接导线1电路板1 (四)正文1、前言1.1、设计的背景在日常生活和生产中,我们经常要测量环境的温湿度,传统的测量方式采用水银温度计和干湿球湿度计查算法,存在着误差大,操作使用不便等问题,采用工业级测量仪表价格昂贵。1.2、设计的意义采用stc89c51和dht11等构成的lcd数字式温湿度测量精度好可以且价格便宜。2、 设计的基础依据 1.熟悉电路的工作原理; 2.掌握该电路中的元器件的识别方法; 3.掌握电路的调试方法; 4.熟练电路简单的故障分析方法; 5.论文符合其格式、字数的基本要求,内容要求充实、作图严谨规范等。3、 文献综述 1.新型单总线数字温湿度传感器dht11具有体积小巧、接口简单、响应速度快、性价比高等特点。文章简要介绍了单总线概念,阐述了dht11的基本原理和控制使用方法,以及其在仓库温湿度测控系统中的应用。dht11的诸多优点,使其在自动控制和家电消费品领域中拥有较高的应用价值。 2.基于温室和养殖孵化等场所需要及时监测环境温湿度的需求,设计了一种低成本、低功耗的无线温湿度传感器网络节点。主要介绍了节点的软硬件设计,详细阐述了dht11温湿度传感器的时序。传感器节点的设计以超低功耗msp430f122单片机为核心,配以dht11和无线rf收发芯片nrf401实现了节点有效的数据采集和可靠的数据传输。节点具有功耗低、成本低、体积小、集成度高、工作稳定等优点。 3.以单片机为控制核心,采用dht11温湿度传感器,12864lcd显示模块,实现了实验室多点温湿度参数的实时采集、显示和超限报警功能。系统的优点为单总线串口通信,使系统结构简化,节约了单片机资源,易于系统的功能扩展。 4.环境温湿度对蚕的生长有着极大的影响,而目前市场上的温湿度控制产品价格过高,不适应于中小型农村蚕农的需求,大部分农村蚕农还在使用原始的温湿度调节方法。介绍了一种基于dht11数字温湿度传感器和at89c51单片机的低成本蚕室温湿度自动控制系统,以为蚕农养蚕提供便利。4、 总体方案的确定1. 利用单片机芯片89c52及dht11温湿度传感器完成温湿度的测量,不间断测量当前温度和湿度数据,并在液晶屏上实时显示。2.具备不间断时钟电路,当前时间在液晶屏显示。时钟电路具有后备电池,系统掉电后始终依然运行,再次上电显示当前时间,无须重新调时。 3.四键键盘可以调校时钟初始值,具体方法是连续按设置键直至“年”、“月”、“日”、“时”、“分”、“秒”相应的位置闪烁,再通过up键和down键调整数值,调整完毕继续按设置键进入正常状态。5、 硬件设计 本研究设计的温湿度控制器框图如图1所示。图1红外报警监控系统方框图图中stc89c52单片机随时监控dyp-me003红外人体传感器送来的报警信号。当报警功能打开并且传感器检测到有人侵入时,单片机通过声(蜂鸣器)光(led发光管)报警,同时将入侵时间记录在外部存储芯片at24c04中。系统还可以即时显示当前环境温湿度值。单片机每2秒钟从dht11温湿度传感器中读入温度和湿度,在液晶屏上即时显示。系统通过ds1302时钟电路获得并显示当前时间。该时间初始值可以通过设置键、上调键和下调键设定,由于具有后备电池,主控系统断电后时钟仍然继续运行。系统通过四键键盘切换开、关报警状态,设定时钟初始值,查询报警时间等。系统各单元电路介绍如下。5.1、单片机电路本设计选用宏晶公司高性能单片机stc89c52采用主控芯片,其管脚如图2所示。图2 stc89c52单片机管脚图该芯片为52内核8位单片机,兼容intel等52内核单片机,支持isp下载,适用于常用检测控制电路。由stc89c52组成的单片机系统原理图如图2所示。图3 单片机系统电路图中alert引脚输入dyp-me003红外人体传感器信号,该信号为高电平时有人入侵,为低电平时表示没有检测到人。data引脚为温湿度传感器单总线引脚。2402_scl和2402_sda为外存芯片at24c04通信引脚,该芯片为iic接口芯片,通过时钟线和数据线二线接口通信。k1、k2、k3、k4为四只按键,分别为设置键、上调键、下调键和查询键。l2为报警led发光管。p0.0p0.7为lcd数据线,p2.5p2.7为lcd控制线。系统采用11.0572mhz外部晶振电路。5.2、红外热释电报警传感器电路图4 dyp-me003红外人体传感器电路传感器使用dyp-me003红外人体传感器,图中alert引脚输出信号,该信号为高电平时有人入侵,为低电平时表示无人入侵。r17电阻为下拉电阻,防止管脚误报。5.3、温湿度传感器器及检测电路图5 dht11温湿度传感器外型及管脚dht11温湿度传感器外型及管脚如图5所示。其中电源引脚的供电电压为 3.5-5.5v。传感器上电后,要等待 1s 以越过不稳定状态在此期间不要发送任何指令。电源引脚(vdd,gnd)之间可增加一个100nf 的电容,用以去耦滤波。 dht11典型应用电路如图5所示,其连接电路简单,只需要占用控制器一个i/o口即可完成上下位的连接。建议连接线长度短于20时用5k上拉电阻,大于20米时根据实际情况使用合适的上拉电阻。图6 dht11典型应用电路dht11数字湿温度传感器采用单总线数据格式,即单个数据引脚端口完成输入输出双向传输。其数据包由5byte(40bit)组成。一次通讯时间最大3ms,数据分小数部分和整数部分。 一次完整的数据传输为40bit,高位先出。 数据格式如表2:表1 dht11数据格式5.4、ds1302实时时钟电路ds1302是dallas公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态ram,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、日期、月、年的信息。每月的天数和闰年的天数可自动调整。时钟操作可通过am/pm指示决定采用24或12小时格式。其芯片管脚如图7所示。 图7 ds1302管脚图ds1302 与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口:线1-res复位,2-i/o数据线和3-sclk串行时钟。时钟/ram 的读/写数据以一个字节或多达31个字节的字符组方式通信,ds1302工作时功耗很低,保持数据和时钟信息时功率小于1mw。ds1302是由ds1202改进而来,增加了以下的特性,双电源管脚用于主电源和备份电源,供应vcc1为可编程涓流充电电源,附加七个字节存储器。它广泛应用于电话、传真、便携式仪器以及电池供电的仪器仪表等。l 实时时钟具有能计算2100 年之前的秒分时日日期星期月年的能力还有闰年调整的能力;l 31*8位暂存数据存储ram;l 串行i/o 口方式使得管脚数量最少;l 宽范围工作电压2.0-5.5v;l 工作电流:2.0v 时,小于300na;l 读/写时钟或ram 数据时有两种传送方式:单字节传送和多字节传送字符组方式;l 8 脚dip封装或可选的8脚soic封装,根据表面装配;l 简单3线接口;l 与ttl兼容,vcc=5v;l 可选工业级温度范围-40-+85;l 与ds1202 兼容;l 双电源管用于主电源和备份电源供应,备份电源管脚可由电池或大容量电容输入;l 附加的7字节暂存存储器。ds1302与单片机系统连接电路如图8所示。图8 ds1302电路连接图如图8所示,ds1302的sclk、i/o和rst三个引脚通过上拉电阻连接单片机的p1.4、p1.5和p1.6。5.5、lcd显示电路显示部分采用smc 1602液晶屏进行数据显示,其主要技术参数为:表2 液晶屏技术指标接口信号说明如表3所示。表3 液晶屏接口信号说明与单片机接口电路如图9所示。其中p0.0p0.7接lcd数据线,p2.5p2.7接lcd控制线。图9 lcd与单片机接口电路5.6、eeprom存储器电路红外报警监控系统的报警时间存储在eeprom芯片at24c04中,并可以通过查询按键查看。at24c04是iic芯片,其管脚连接如图10所示,与单片机连接电路。如图11所示 图10 at24c04管脚图 图11 与单片机连接图5.7、键盘电路本设计采用四键键盘,电路如图12所示。图12 四键键盘电路 按键直接接单片机p3.2p3.5,程序采用查询方式获取按键状态。5.8、供电及程序下载电路本设计采用usb接口供电,电源电压5v。同时,usb接口通过内含pl2303芯片的转换电路对单片机进行程序编写。其电路原理如图13所示。图13 供电及程序下载电路 6、 软件设计 6.1、软件流程图本设计软件主程序流程图如图14所示。图14 软件流程图6.2、主程序下面介绍main.c主程序编写,其他程序略。(1) 头文件和一些宏定义#include #include #include 1602.h#include dht.h#include 2402.h#include ds1302.h(2) 管脚定义sbit led_alert=p36;/报警灯sbit in_alert=p21; /报警信号输入sbit beep=p20; /蜂鸣器sbit key_up = p32;sbit key_down = p35;sbit key_set = p33;sbit key_review = p34;(3) 常量、变量定义和函数声明/定义标识volatile bit flagstartrh = 0; /开始温湿度转换标志volatile bit flagkeypress = 0; /有键按下标志volatile bit flagalert = 0; /报警状态标志volatile bit flagreview = 0; /查询标志/定义温湿度传感器用外部变量extern u8 u8flag,k;extern u8 u8count,u8temp;extern u8 u8t_data_h,u8t_data_l,u8rh_data_h,u8rh_data_l,u8checkdata;extern u8 u8t_data_h_temp,u8t_data_l_temp,u8rh_data_h_temp,u8rh_data_l_temp,u8checkdata_temp;extern u8 u8comdata;extern u8 count, count_r;/温湿度传感器用变量u16 temp;s16 temperature, humidity;u16 rhcounter;/按键响应用变量u8 keyvalue, keyup, keydown, keyset, keyreview;u8 flagset; /ds1302时钟用变量systemtime currenttime;uchar year, month, day, hour, minute, second;/报警及存储用变量/char * psave;/字符串显示用变量uchar str16 = 000000;uchar alertdate9=00-00-00, alerttime9=00:00:00;uchar hide;/函数声明void int2str(int x, char* str);void delay1ms(unsigned int count);void data_init();void timer0_init();void timer0_isr () ;void savealert();void loadalert();void keyprocess(uint num);(4) 各子程序/整型转字符串的函数,转换范围0-65536void int2str(int x, char* str) int i=1; int tmp=10; while(x/tmp!=0) i+; tmp*=10; tmp=x; stri=0; while(i1) str-i=0+(tmp%10); tmp/=10; str0=tmp+0; void delay1ms(unsigned int count)unsigned int i,j;for(i=0;icount;i+)for(j=0;j= 450) flagstartrh = 1; rhcounter = 0; /设定闪烁标志 if (hide = 1) hide = 0; else hide = 1; /存入报警日期时间void savealert() wrteeprom(0, year); delay(1500); wrteeprom(1, month); delay(1500); wrteeprom(2, day); delay(1500); wrteeprom(3, hour); delay(1500); wrteeprom(4, minute); delay(1500); wrteeprom(5, second); delay(1500);/载入报警日期时间void loadalert() uchar value; value = rdeeprom(0); alertdate0=value/10+48; alertdate1=value%10+48; value = rdeeprom(1); alertdate3=value/10+48; alertdate4=value%10+48; value = rdeeprom(2); alertdate6=value/10+48; alertdate7=value%10+48; value = rdeeprom(3); alerttime0=value/10+48; alerttime1=value%10+48; value = rdeeprom(4); alerttime3=value/10+48; alerttime4=value%10+48; value = rdeeprom(5); alerttime6=value/10+48; alerttime7=value%10+48;void keyprocess(uint num) switch (num) case 1: /up键被按下 switch (flagset) case 0:case 1: break;case 2: /年 if (year99)year+; write1302(0x8e,0x00); /写入允许 ds1302_settime(ds1302_year,year); write1302(0x8e,0x80); /禁止写入 break;case 3: /月 if (month12) month+; write1302(0x8e,0x00); /写入允许 ds1302_settime(ds1302_month,month); write1302(0x8e,0x80); /禁止写入 break;case 4: /日 if (day31) day+; write1302(0x8e,0x00); /写入允许 ds1302_settime(ds1302_day,day); write1302(0x8e,0x80); /禁止写入 break;case 5: /时 if (hour23) hour+; write1302(0x8e,0x00); /写入允许 ds1302_settime(ds1302_hour,hour); write1302(0x8e,0x80); /禁止写入 break;case 6: /分 if (minute60) minute+; write1302(0x8e,0x00); /写入允许 ds1302_settime(ds1302_minute,minute); write1302(0x8e,0x80); /禁止写入 break;case 7: /秒 if (second0)year-; write1302(0x8e,0x00); /写入允许 ds1302_settime(ds1302_year,year); write1302(0x8e,0x80); /禁止写入 break;case 3: /月 if (month0) month-; write1302(0x8e,0x00); /写入允许 ds1302_settime(ds1302_month,month); write1302(0x8e,0x80); /禁止写入 break;case 4: /日 if (day0) day-; write1302(0x8e,0x00); /写入允许 ds1302_settime(ds1302_day,day); write1302(0x8e,0x80); /禁止写入 break;case 5: /时 if (hour0) hour-; write1302(0x8e,0x00); /写入允许 ds1302_settime(ds1302_hour,hour); write1302(0x8e,0x80); /禁止写入 break;case 6: /分 if (minute0) minute-; write1302(0x8e,0x00); /写入允许 ds1302_settime(ds1302_minute,minute); write1302(0x8e,0x80); /禁止写入 break;case 7: /秒 if (second0) second-; write1302(0x8e,0x00); /写入允许 ds1302_settime(ds1302_second,second); write1302(0x8e,0x80); /禁止写入 break; break; case 3: /set键被按下。flagset 0-报警;1-关报警;2-设置年;3-月;4-日;5-时;6-分;7-秒 if (flagreview=0) /只有不查询时才能设定 flagset +;if (flagset=1) l1602_string(2,10,a);else l1602_string(2,10, ); if (flagset=8) flagset = 0; break; case 4: /review键被按下 if (flagreview = 0) flagreview = 1; loadalert();l1602_string(1,1, );l1602_string(2,1, ); l1602_string(1,1,alertdate);l1602_string(1,9, alert );l1602_string(2,1,alerttime);l1602_string(2,9, ); else flagreview = 0; break; default: break; /* 名称 : main()* 功能 : 主函数*/void main() u16 i, j, testnum; ea = 0;timer0_init(); /定时器0初始化 data_init();initial_ds1302();ea = 1;l1602_init();l1602_string(1,1, welcome to my );l1602_string(2,1,infrared monitor);/延时for (i=0;i1000;i+) for (j=0;j1000;j+) ; /清屏l1602_string(1,1, t c);l1602_string(2,1, h %); while(1) /查询报警信号 /flagset=0为报警状态, /flagset=1为关报警状态, /flagset=2,3,4,5,6,7依次为设置年,月,日,时,分,秒状态 if (flagset=1)&(in_alert=0) /首次触发报警则存入报警时间 savealert(); flagalert=1; beep=0;led_alert = 0; else /报警未打开或者无警可报 flagalert=0; beep=1;led_alert = 1; if (flagstartrh = 1) /温湿度转换标志检查 tr0 = 0; testnum = rh(); flagstartrh = 0; tr0 = 1; /读出温湿度,只取整数部分 humidity = u8rh_data_h; temperature = u8t_data_h; /读出日期时间值 ds1302_gettime(¤ttime); year = currenttime.year; month = currenttime.month; day = currenttime.day; hour = currenttime.hour; minute = currenttime.minute; second = currenttime.second; datetostr(¤ttime); timetostr(¤ttime); /如果不处于查询状态则显示当前日期时间温度湿度 if (flagreview=0) /清屏 l1602_string(1,1, t c);l1602_string(2,1, );l1602_string(2,12,h %);/显示温湿度 if (temperature0) l1602_string(2,7,-); temperature = abs(temperature); int2str(temperature,str1); l1602_string(1,14,str1); int2str(humidity,str1); l1602_string(2,14,str1); l1602_string(1,1,currenttime.datestring); l1602_string(2,1,currenttime.timestring); /产生时间设定时的闪烁效果,只在未查询且闪烁标志置位时运行 if (hide=1) switch (flagset) case 0: case 1: break; case 2: /年 l1602_string(1,1, ); break; case 3: /月 l1602_string(1,4, ); break; case 4: /日 l1602_string(1,7, ); break; case 5: /时 l1602_string(2,1, ); break; case 6: /分 l1602_string(2,4, ); break; case 7: /秒 l1602_string(2,7, ); break; default: break; /以下为键盘查询,当有按键从按下到弹起时,该按键被响应。if (key_up)&(keyup=0) flagkeypress = 1; keyvalue = 1; else if (key_down)&(keydown=0) flagkeypress = 1; keyvalue = 2; else if (key_set)&(keyset=0) flagkeypress = 1; keyvalue = 3; else if (key_review)&(keyreview=0) flagkeypress = 1; keyvalue = 4;if (flagkeypress = 1) keyprocess(keyvalue); flagkeypress = 0; if (!key_up) keyup = 0;else keyup = 1; if (!key_down) keydown = 0;else keydown = 1; if (!key_set) keyset = 0;else keyset = 1; if (!key_review) keyreview = 0;else keyreview = 1; 7、 实验及调试7.1、程序的编写和编译 1.程序在uvision4环境下编写和编译,新建工程时选择at89c52芯片。如图15所示。 图15 2.新建文件编写程序如图16所示。 图163. 保存程序并运行编译后,如图17所示。 图17 4.编译生成.hex文件后,就可以下载并进行调试了。如果是其他版本uvision,只需将所有.c和.h文件拷贝至新建项目,重新编译即可。如图18所示。 图18 7.2、程序下载7.2.1、usb转串口驱动安装打开usb驱动文件夹下的pl2303_prolific_driverinstaller_v130.exe安装文件,按提示安装usb转串口驱动程序。安装完成后,插入usb下载线后,在开始-控制面板-打印机和其他硬件-设备管理器,在“端口”分支下有(prolific usb-to-serial comm port(comx)。x表示串口号,如果没有说明usb转串口驱动没有安装,须重新安装。记住括号里的com口号。图19成功安装usb转串口驱动示意图 7.2.2、下载程序打开stc单片机下载软件文件夹,点击运行stc_isp_v481.exe程序,出现如下界面。下载软件如图20所示。图20正确选择mcu 类型,com口(与刚才安装的com号一致),最高波特率和最低波特率都选2400bps或者1200bps (下载线内pl2303芯片所限,没办法!),并打开正确的.hex数据文件。点击“download/下载”按纽,窗口出现提示:chinese:正在尝试与 mcu/单片机 握手连接 . connection is failure. you can try: 1.give your mcu power on reset. 2.stop operation, then re-select com port. 3.because plcc-dip/pqfp-dip socket trace too long. 4.update the stc isp.exe version. 5.if still error, your mcu firmware is error or null.chinese:连接失败,请尝试以下操作: 1.在单片机停电状态下,点下载按钮,再给单片机上电 2.停止下载,重新选择 rs-232 串口, 接好电缆 3.可能需要先将 p1.0/p1.1 短接到地 4.可能外部时钟未接 5.因 plcc、pqfp 转换座引线过长而引起时钟不振荡,请 调整参数 6.可能要升级电脑端的 stc isp.exe 软件 7.若仍然不成功,可能 mcu/单片机

温馨提示

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

评论

0/150

提交评论