电子信息工程技术专业毕业论文基于at89c51单片机的温湿度传感器_第1页
电子信息工程技术专业毕业论文基于at89c51单片机的温湿度传感器_第2页
电子信息工程技术专业毕业论文基于at89c51单片机的温湿度传感器_第3页
电子信息工程技术专业毕业论文基于at89c51单片机的温湿度传感器_第4页
电子信息工程技术专业毕业论文基于at89c51单片机的温湿度传感器_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

温湿度传感器 摘 要 本系统以AT89C51单片机为核心,实现了一种温湿度无线测量监控。重点设计红外线发射和接收电路、温湿度测量电路。该系统主要包括红外通信模块、温湿度测量模块和人机交互模块。经实验测试表明,该系统各项功能都已达到或超过题目基本要求和发挥部分,并且实现了部分功能的创新。 关键词 温湿度测量 单片机 红外线目 录第一章 设计要求及目的11.1 设计目的11.2 设计要求1第二章 系统方案设计及论证22.1总体方案设计22.2方案比较与论证22.2.1温湿度检测22.2.2主从机通信32.2.3键盘部分32.2.4 显示部分4第三章 系统的硬件设计与实现53.1 单片机介绍53.1.1 单片机主要性能53.1.2 单片机各引脚功能介绍53.2 红外发射电路73.3红外接收电路93.3键盘及显示电路103.4语音播报电路11第四章 软件设计124.1主机程序124.2从机程序13总 结14致 谢15参考文献16附录一 从机电路图17附录二 从机电路图18附录三 程序代码19引 言随着社会的发展,人们对环境中的温度和湿度的要求也越来越高,尤其是在医学、电子电力、航天航空、食品发酵等领域中对温湿度的要求尤其严格,鉴于如此设计出一个能够精确、稳定、实时测量出环境中温湿度的实用型温湿度检测仪显得尤为重要。 本温湿度检测仪是以AT89C51单片机的为核心控制芯片,该单片机有很好的抗干扰能力、响应速度快。基于此单片机的温湿度检测仪可以实时、准确的测量环境中的温度和相对湿度。 本检测仪的硬件部分的设计采用了以高灵敏度采集湿敏电阻阻值变化,在经过单片机处理得到相应湿度; 单片机直接控制AM2303数字式温度传感器对温度实时采集和监控。本仪器还增加了报警语音装置,用户可根据需要设定温湿度上下限,若当前温湿度超限便会报警。接入独立键盘实现人机交换功能,并用LCD显示屏作为显示设备的硬件设计方案。软件部分则采用模块化的方法将其分成几个部分,然后逐模块设计程序,用C语言来实现,使各部分结合起来协调工作,最终实现对环境中温湿度的实时检测。 第一章 设计要求及目的 1.1 设计目的 温度、湿度是工农业生产的主要环境参数对其进行适时准确的测量具有重要意义。利用单片机对温、湿度控制。具有控温、湿精度高、功能强、体积小、价格低,简单灵活等优点,很好的满足了工艺要求。此次设计致力于训练学生综合运用单片机的基本知识,独立设计基本硬件电路及程序实现的能力,加强学生理论与实践相结合的能力1.2 设计要求1、实现温度和湿度的测量;2、按开机键进行测量;3、湿度测量范围: 0100%RH;温度测量范围:-40+85;4、湿度测量精度:2.0%RH温度测量精度:0.2;5、在LCD显示屏上显示数据和结果;6、语音播报系统会播报当时检测到的数据。第二章 系统方案设计及论证2.1总体方案设计根据题目所要实现的要求,本系统包含主机系统和从机系统两个部分,并且都以AT89C51为核心进行设计。具体框图如图1-1和1-2所示: AT89C51红外通信液晶显示语音键盘AT89C51红 外通信温 湿度 传感 器图 1-1 主机系统框图 图 1-2 从机系统框图2.2方案比较与论证2.2.1温湿度检测方案一:采用DHT11数字式温湿度传感器。该传感器指标如下:湿度测量范围为2090%RH;温度测量范围为0+50;湿度测量精度为5.0%RH;温度测量精度为2.0。该温湿度传感器价格较为便宜,但测温范围和测湿范围较小,温度精度和湿度精度较低,无法达到题目要求。方案二:采用AM2301电容式数字温湿度传感器。该传感器指标如下:湿度测量范围为0100%RH;温度测量范围为-40+80;湿度测量精度为3.0%RH温度测量精度:0.5。该型温湿度传感器价格适中,可以基本满足题目要求。 方案三:采用AM2303数字式温湿度传感器。该型温湿度传感器,采用3.3-6V直流电源供电,湿度测量范围: 0100%RH;温度测量范围:-40+85;湿度测量精度:2.0%RH温度测量精度:0.2。该型温湿度传感器的温湿度范围和温湿精度均已达到或超出题目要求,并且属于低功耗型传感器。经过比较,从系统技术参数要求和低功耗方面考虑,选用方案三。2.2.2主从机通信方案一:采用RF905SE无线发射模块。该无线收发模块可以进行远距离无线通信,最远可达1000米,性能稳定,易于使用,但是成本较高。方案二:采用无线蓝牙串口模块。该模块传输距离为510米,可以与单片机进行串行通信,通信方便,但是成本较高。方案三:采用自制红外通信电路实现,可以实现5米以上距离的通信,并且功耗较低,所需成本较低,且可满足题目发挥部分要求。 经过比较,自制红外电路成本低廉,性能完全可以满足题目基本部分和发挥部分要求,故选用方案三。2.2.3键盘部分方案一:采用矩阵式键盘,其可以减少I/O口线的占用,一个并行口可以构成44=16个按键。在需要的按键数量比较多的设计中,采用矩阵法来连接键盘是非常合理的,其结构比较复杂一些,识别也要复杂一些。方案二:采用独立式按键。一个按键占用单独的一个I/O口,并且要接上拉电阻,另一端接地。这种键盘的硬件比较简单,适合按键少的设计。综上所述,课题中用到的按键不是很多,所有本设计选用方案二的独立式按键。2.2.4 显示部分方案一:采用LED数码管,其操作简单,显示直观。程序的设计也相当简单,对外界的环境要求比较低,易于维护。数码管只能显示数字,不能显示汉字。硬件设计也相对复杂。不适合本设计。方案二:采用LCD液晶显示,其具有体积小、功耗低、显示内容多等特点。电路连接简单,价格也便宜。综上所述,LCD液晶显示内容多,所以本设计选用方案二的LCD液晶显示。第三章 系统的硬件设计与实现3.1 单片机介绍3.1.1 单片机主要性能l 与MCS-51兼容l 4K字节可编程闪烁存储器l 寿命:1000写/擦循环l 数据保留时间:10年l 全静态工作:0HZ-24HZl 三级程序存储器锁定l 128*8位内部RAMl 32可编程I/O线l 两个16位定时器/计数器l 5个中断源l 可编程串行通道l 低功耗的闲置和掉电模式l 片内振荡器和时钟电路3.1.2 单片机各引脚功能介绍VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当管脚第一次写1时,被定义为高阻输入。PO能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,PO口作为原码输入口,当FLASH进行校验时,PO输出原码,此时PO外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流。当P2口被写1时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址1时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入1后,它们被内部上拉为高电平,并用作输入。P3口也可作为AT89C51的一些特殊功能口,如下所示: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(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部存储器(0000H-FFFFH),不管是否有内部程序存储器。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3.2 红外发射电路常用的红外遥控器的输出都是用编码后串行数据对3840kHz的方波进行脉冲幅度调制而产生的。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征: 采用脉宽调制的串行码:1. 以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”; 2. 以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”。上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制,然后再通过红外发射二极管产生红外线向空间发射。红外遥控器编码常用格式为连续的32位二进制码组,其中前16位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。后16位为8位的操作码和8位的操作反码,用于核对数据是否接收准确确。根据红外编码的格式,发送数据前需要先发送9ms的起始码和4.5ms的结果码。遥控串行数据编码波形如下图3-1所示:图 3-1串行数据波形编码红外发射电路,通过单片机控制三极管的导通与截至从而实现红外发射管的数据发送,红外发射电路图如图3-2所示:图3-2红外发射电路3.3红外接收电路 接收方使用TL0038一体化红外线接收器进行接收解码,当TL0038接收到38kHz红外信号时,输出端输出低电平,否则为高电平。所以发射电路发送红外信号时,参考上面遥控串行数据编码波形图,在低电平处发送38kHz红外信号,高电平处则不发送红外信号。红外接收电路图,通过红外接受管接收从外部接收到的信号,并通过P口将数据传送给单片机,红外接收电路图如图3-3所示:图 3-3 红外接收电路图3.3键盘及显示电路主机系统采用LCD屏显示温度与湿度的参数,并且通过独立式的按键选择实时检测的多路温湿度数据其中的一路。从机也采用LCD显示数据。图3-4 键盘及显示电路3.4语音播报电路 当键盘选择一路需要查看的温湿度检测时,从机向主机发送所需的温湿度参数,当打开语音播报键时,语音电路会播报温湿度值各是多少。因此不仅主机的显示屏上可以看到实时的温湿度参数,也可以通过语言播报听到。语音提示电路以单片20s高保真语音录放芯片ISD1420为核心,具体应用电路如3-4所示。单片机通过并行通信控制ISD1420和中功率高保真功率放大集成电路TDA2030实现语音播报。图3-4 ISD1420应用电路第四章 软件设计4.1主机程序主机程序主要包括主程序和一个中断服务程序。主程序流程如图4-1所示,主要是实现温湿度数据的接收、显示,并通过液晶屏显示温湿度。开始初始化某路温湿度采集发送数据收到信号NY 图4-1 从机主程序流程图4.2从机程序从机程序主要由一个主程序构成。主程序流程图如图4-2所示。主要是实现数据的收发以及温湿度数据的采集。开始初始化启动检测N1路按下2路按下Y提取1路数据提取2路数据YNN显示温湿度语音键按下Y语音播报 图4-2主机主程序流程图 YYY总 结经过半学期的努力,毕业设计终于完成了。在没有做毕业设计以前,觉得毕业设计只是对这几年来所学知识的单纯总结,但是通过这次做毕业设计发现自己的看法有点太片面。毕业设计不仅是对前面所学知识的一种检验,而且也是对自己能力的以一种提高。通过这次毕业设计使我明白了自己原来知识还比较欠缺。自己要学习的东西还太多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。通过这次毕业设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。在整个设计中我懂得了许多东西,也培养了独立思考的能力,也大大提高了动手的能力,体会到了在创造过程中探索的艰难和成就时的喜悦,这些树立了对自己工作能力的信心,相信会对今后的学习工作生活有着非常重要的影响。虽然这个设计做得还有缺陷,但是在设计过程中所学到的东西是这次毕业设计的最大收获和财富,使我终身受益。在毕业设计完成的过程中,还深深体会到交谈和相互讨论的重要性。与老师的交谈,可以把握工作的方向;与同学讨论,可以获得新的方法。只有思想和信息的传递,毕业设计才可能完成。此外,还得出一个结论:知识必须通过应用才能实现其价值!参考文献1 谢光忠、蒋亚东等. 温湿度智能数据采集控制系统的研制:传感器技术 2000,4.2 丁元杰.单片微机原理及应用.北京:机械工业出版社.1993.3 喻评,郭文川.单片机原理与接口技术.北京:化学工业出版社,2006.4 李刚.51系列单片机系统设计与应用技巧.北京:北京航空航天大学出版社.2004.5 余永权.MCS-51系列单片机应用技术.北京:北京航空航天出版社.2002.6 刘勇.数字电路.北京电:子工业出版社.2004.7 王法能.单片机原理及应用(简明修订版). 北京:科学出版社.2001. 8 赵伟军.PROTEL 99 SE 教程.北京:人民邮电出版社.2004.9 黄 强.模拟电子技术北京:科学出版社.2003.10 徐正惠,胡海影.单片机原理与应用实训教程.北京:京科学出版社.2004. 11 陈晓文.电子电路课程设计.北京:北京电子工业出版社. 2004.附录一 从机电路图附录二 从机电路图附录三 程序代码#include #include AM2303_1.h#include AM2303_2.h#include AM2303_3.h#includeSMS0601.h#define uchar unsigned char#define uint unsigned int#define c(x) (x*120000/120000)/sbit Ir_Pin=P24;/定义红外接收管脚unsigned char Ir_Buf4; /用于保存解码结果/sbit P3_4=P34;/定义红发射管脚static bit OP; /红外发射管的亮灭static unsigned int count; /延时计数器static unsigned int endcount; /终止延时计数static unsigned char flag; /红外发送标志uchar iraddr1; /十六位地址的第一个字节uchar iraddr2; /十六位地址的第二个字节/unsigned char table= 5 ;unsigned char num=0123456789ABCDEF;/*主从机红外通信协议:一次传送共4个字节数据 第1字节:#/16,高4位为系统码,#%16,低4位为地址信息 第2字节:温度值的整数值,如0x41,代表温度65度 第3字节:湿度值的整数值,如0x42,代表湿度66% 第4字节:高4位为温度的小数值,低4位代表湿度的小数值 */unsigned long guide_high; /储存引导码高电平unsigned int guide_low; /储存引导码高电平unsigned int temp; /储存信息收集中的电平时间,用于判断char i,j; /用于循环储存接收数据的变量/uchar call_master_flag=0;/当主机呼叫从机,从机接受数据,判断系统码和本系统正确时,标识符置1uchar sys_code=0;/此变量( a )为本系统的识别码,通信协议第一个字节的高4位必须包含此码( a )uchar call_addr=0;/用来储存主机发来的询问的地址信息uchar T_RH12=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;/用于储存时间变量/-/发送模块程序/数据发送函数void SendIRdata(uchar A,uchar B,uchar C,uchar D) int i; /char irdata=p_irdata; uchar irdata; /发送9ms的起始码 TR0 = 1; endcount=223; flag=1; count=0; dowhile(countendcount); /发送4.5ms的结果码 endcount=117; flag=0; count=0; dowhile(countendcount); /发送十六位地址的前八位 irdata=A; for(i=0;i8;i+) /先发送0.56ms的38KHZ红外波(即编码中0.56ms的低电平) endcount=10; flag=1; count=0; dowhile(countendcount);/停止发送红外信号(即编码中的高电平) if(irdata-(irdata/2)*2) /判断二进制数个位为1还是0 endcount=41; /1为宽的高电平 else endcount=15; /0为窄的高电平 flag=0; count=0; dowhile(count1; /发送十六位地址的后八位 irdata=B; for(i=0;i8;i+) endcount=10; flag=1; count=0; dowhile(countendcount); if(irdata-(irdata/2)*2) endcount=41; else endcount=15; flag=0; count=0; dowhile(count1; /发送八位数据 irdata=C; for(i=0;i8;i+) endcount=10; flag=1; count=0; dowhile(countendcount); if(irdata-(irdata/2)*2) endcount=41; else endcount=15; flag=0; count=0; dowhile(count1; /发送八位数据的反码 irdata=D; for(i=0;i8;i+) endcount=10; flag=1; count=0; dowhile(countendcount); if(irdata-(irdata/2)*2) endcount=41; else endcount=15; flag=0; count=0; dowhile(count1; endcount=10; flag=1; count=0; dowhile(countendcount); flag=0; TR0 = 0;/-/接收模块程序unsigned long Low_guide() unsigned long dat=0;TL1=0;TH1=0;TR1=1;while(!Ir_Pin&(TH1*256+TL1)5000);dat=TH1*256+TL1;TL1=0;TH1=0;while(!Ir_Pin&(TH1*256+TL1)5000);dat=dat+(TH1*256+TL1); TR1=0;return dat;unsigned int High_guide() TL1=0;TH1=0;TR1=1;while(Ir_Pin &(TH1*256+TL1)5000); TR1=0;return TH1*256+TL1;/=/辨别低电平unsigned int Ir_Get_Low()TL1=0;TH1=0;TR1=1;while(!Ir_Pin & (TH1&0x80)=0); /当Ir_Pin变为1时,退出计时TR1=0;return TH1*256+TL1;/=/辨别高电平unsigned int Ir_Get_High()TL1=0;TH1=0;TR1=1;while(Ir_Pin & (TH1&0x80)=0);/当Ir_Pin变为0时,退出计时TR1=0;return TH1*256+TL1;void timeint(void) interrupt 1 TH0=0xFF; TL0=0xE6; /设定时值为38K 也就是每隔26us中断一次 count+; if (flag=1) OP=OP; else OP = 0; P3_4 = OP;void Slave_init()call_master_flag=0;sys_code=0;call_addr=0;/count = 0;flag = 0;OP = 0;P3_4 = 0;/临时用void disp(uchar n1,uchar n2,uchar n3)Num1_Ram=n1/10; Num2_Ram=n1%10; Num3_Ram=n2/10;Num4_Ram=n2%10;Num5_Ram=n3/16;Num6_Ram=n3%16;SMS06_display(); /=/主函数void main()uchar n=0;Slave_init();init_SMS0601();TMOD=0x11;/定时器1采用16为计时 TH0 = 0xFF; TL0 = 0xE6; /设定时值0为38K 也就是每隔26us中断一次 ET0 = 1; /定时器0中断允许 TR0 = 0;EA = 1; /允许CPU中断while(1)restart:while(Ir_Pin);/等待主机呼叫/guide_high=Low_guide();/guide_long=Ir_Get_Low();if(guide_high9900) continue;/引导脉冲低电平9000guide_low=High_guide();/guide_long=Ir_Get_High();if(guide_low5000) continue;/引导脉冲高电平4500/for(i=0;i4;i+) /4个字节for(j=0;j8;j+) /每个字节8位/排除干扰+载波低电平通过temp=Ir_Get_Low();/载波为560mif(tempc(800) goto restart;/读取高电平时间,先排除干扰,再判断是低电平还是高电平temp=Ir_Get_High();if(tempc(2000) goto restart;Ir_Bufi=1;/给第一位清零

温馨提示

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

评论

0/150

提交评论