基于单片机的湿度计课程设计.doc_第1页
基于单片机的湿度计课程设计.doc_第2页
基于单片机的湿度计课程设计.doc_第3页
基于单片机的湿度计课程设计.doc_第4页
基于单片机的湿度计课程设计.doc_第5页
免费预览已结束,剩余8页可下载查看

下载本文档

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

文档简介

数字湿度计设计一、设计任务设计一个以单片机为核心的湿度测量系统,可实现的功能为:(1) 能实时测量所处环境的湿度值,误差0.5%;(2) 系统可有用户预设湿度值,测湿范围0100%;(3) 如若超出预设值时,系统会自动报警,即发光二极管亮,同时蜂鸣器发出报警;(4) 系统采用数码管显示,能显示设定温度值和测得的实际值;(5) 设计出原理图和实际电路板图。二、设计方案按照系统设计攻能要求,确定系统有5个模块组成:主控制器,数字湿度传感器,报警电路,按键电路及驱动先是电路。主控制器的功能有单片机来完成,主要负责处理由数字湿度传感器送来的数据,并把处理好的数据送向显示模块。数字湿度传感器主要来采集周围环境参数,并把所采集来的数据送向主控制器。按键电路主要用来完成单片机的复位操作和湿度初始值的设定。由于单片机输出电流太小(仅有几毫安),所以增加驱动电路主要用来驱动八位数码管发光的。三、硬件电路设计Pc板图元器件的选则湿度传感器湿度传感器的温度系数。湿敏元件除对环境湿度敏感对温度都十分敏感,而且在不同的相对湿度下其温度系数是有差异的。温漂非线性,我们需要在电路上加温度补偿式。湿度传感器温漂曲线的线性化直接影响到补偿的效果,非线性的温漂补偿不出较好的效果,采用单片机软件补偿,或者无温度补偿的湿度传感器也是保证不了全温范围的精度,只有采用硬件温度跟随性补偿才会获得真实的补偿效果。应注意的是多数湿敏元件在40以上的环境是无法正常工作。DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为 4 针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。 实物图 引脚说明 通信过程 总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后, 读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可, 总线由上拉电阻拉高。 LCD液晶显示器1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。1602LCD是指显示的内容为16X2,即可以显示两行,每行1615 个字符液晶模块(显示字符和数字)。目前市场上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。四、软件设计软件任务,程序框图程序:#include#include#include#define uint unsigned int#define uchar unsigned charsbit seg1=P20;sbit seg2=P21;sbit seg3=P22;sbit DQ=P13;/ds18b20 端口sfr dataled=0x80;/显示数据端口Ucharcode duan=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,;uchar code we=0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff,; uchar huanchong=0,0,0,0,0,0,0,0,;uchar dispcount,T0count,time,temp8;sbit led=P12;bit flag;uint temp1;uchar flag_get,count,num,minute,second;unsigned long x; void delay1(uchar MS);unsigned int ReadTemperature(void);void Init_DS18B20(void);unsigned char ReadOneChar(void);void WriteOneChar(unsigned char dat);void delay(uint z)while(z-);void main(void)uchar TempH,TempL;uchar i;EA=1;TMOD=0x15;TH0=0;TL0=0;TH1=(65536-4000)/256;TL1=(65536-4000)%256;TR1=1;TR0=1;ET0=1;ET1=1;count=0;while(1)P2=we7;P0=duanhuanchong0;delay(250); P2=we6;P0=duanhuanchong1;delay(250); P2=we5;P0=duanhuanchong2;delay(250); P2=we4;P0=duanhuanchong3;delay(250); P2=we3;P0=duan12;delay(250);P2=we2;P0=duanTempL;delay(250);P2=we1;P0=duan(TempH%100)%10|0x80;delay(250); P2=we0;P0=duan(TempH%100)/10;delay(250); if(flag_get=1) /定时读取当前温度temp1=ReadTemperature();if(temp1&0x8000)P2=we0;P0=0x40;/负号标志temp1=temp1; / 取反加1temp1 +=1;elseP2=we0;P0=0;TempH=temp14; TempL=temp1&0x0F; TempL=TempL*6/10;/小数近似处理flag_get=0;if(flag=1)flag=0;x=T0count*65536+TH0*256+TL0;for(i=0;i4;i+)tempi=0;i=0;while(x/10)tempi=x%10; x=x/10;i+;tempi=x;for(i=0;i=60)second=0;minute+;void Init_DS18B20(void)unsigned char x=0;DQ = 1; /DQ复位delay(8); /稍做延时DQ = 0; /单片机将DQ拉低delay(80); /精确延时 大于 480usDQ = 1; /拉高总线delay(10);x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(5);/*/ /* 读一个字节 */ /*/ unsigned char ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-)DQ = 0; / 给脉冲信号dat=1;DQ = 1; / 给脉冲信号if(DQ)dat|=0x80;delay(5);return(dat);/*/ /* 写一个字节 */ /*/ void WriteOneChar(unsigned char dat)unsigned char i=0;for (i=8; i0; i-)DQ = 0;DQ = dat&0x01;delay(5);DQ = 1;dat=1;delay(5);/*/ /* 读取湿度度 */ /*/ unsigned int ReadTemperature(void)unsigned char a=0;unsigned int b=0;unsigned int t=0;Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动湿度度转换delay(200);Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取湿度寄存器等(共可读9个寄存器) a=ReadOneChar(); /低位b=ReadOneChar(); /高位b=8;t=a+b;return(t);/ 前两个就是湿度五、电路测试与问题解决方法首先是测试显示电路的正确性,根据写好的程序,写入单片机中。安装好硬件,上电,显示正常,达到预期效果,则证明显示电路是正常的。按下复位按键,LCD无显示,松开,显示正常,证明复位电路是正常的。然后测试得到湿度程序,将初始化程序,ADC0804正常工作的初始化程序、写ADC0804程序、读ADC0804程序,有了湿度子程序,湿度转换子程序,数据转换子程序,显示子程序正确编排后写入单片机中,上电,显示不正常。重新读取源程序,经检查后发现问题出在ADC0804初始化程序有错,修改后重新编译并写入单片机。上电后,显示当前湿度。证明ADC0804工作是正常的,各部分子程序都运行正常。最后是按键子程序及报警子程序的调试,将正确编排后的按键子程序及报警子程序写入单片机中,上电后,各个部分工作正常,在测得当前湿度超出设定湿度上下限后,蜂鸣器发出报警声,调试基本成功。但按键反应迟缓是否是由于显示程序占用时间过长造成的呢,还是在于按键程序采用扫描方式。我们先考虑采用中断方式解决此问题,又因为ADC0804正常工作有严格的时序限制,中断在很大可能上会影到ADC0804正常工作。在尝试并采用中断方式后,决定仍采用扫描方式。后来仔细排查发现确实是由于显示程序占用时间过长造成的,修改显示程序并且在主程序和按键子程序中增加调用显示程序的次数,问题得到解决。此次设计的调试部分完成,设计的所有功能也全部得以实现。六、功能测试与结论 在硬件和软件单独调试成功后进行软硬件综合调试,它可以分成以下三个步骤:第一步,湿度传感器有信号传出;第二步,使单片机获得中断信号,计算出转速值并且存储;第三步,通过LCD1602显示屏把测量的数据显示出来。七、设计总结与 体会本系统是基于单片机AT89S52的处理,可以完美的实现对湿度的监测。可以说传感器是实现测量与控制的首要环节,是测控系统的关键部件。近来传感器所检测的信号显著地增加,因而其品种也极其繁多。为了对各种各样的信号进行检测、控制,就必须获得尽量简单易于处理的信号。电信号能较容易地进行放大、反馈、滤波、微分、存贮、远距离操作等。所以只有电信号能够满足这样的要求。作为一种功能块的传感器可狭义的定义为:“将外界的输入信号变换为电信号的一种元件。用计算机控制的自动化装置来代替人的劳动,我们可以说电子计算机就相当于人的大脑,那么传感器则相当于人的五官。传感器是获取自然领域中信息的主要途径与手段。换句话说如果不进行传感器的开发,电子计算机将处于一种不能适应实际需要的状态。

温馨提示

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

评论

0/150

提交评论