基于单片机的湿度计课程设计.docx
- 文档编号:18464059
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:16
- 大小:509.85KB
基于单片机的湿度计课程设计.docx
《基于单片机的湿度计课程设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的湿度计课程设计.docx(16页珍藏版)》请在冰点文库上搜索。
基于单片机的湿度计课程设计
数字湿度计设计
一、设计任务
设计一个以单片机为核心的湿度测量系统,可实现的功能为:
(1)能实时测量所处环境的湿度值,误差0.5%;
(2)系统可有用户预设湿度值,测湿范围0—100%;
(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
#defineuintunsignedint
#defineucharunsignedchar
sbitseg1=P2^0;
sbitseg2=P2^1;
sbitseg3=P2^2;
sbitDQ=P1^3;//ds18b20端口
sfrdataled=0x80;//显示数据端口
Ucharcodeduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,};
ucharcodewe[]={0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff,};ucharhuanchong[]={0,0,0,0,0,0,0,0,};
uchardispcount,T0count,time,temp[8];
sbitled=P1^2;
bitflag;
uinttemp1;
ucharflag_get,count,num,minute,second;
unsignedlongx;
voiddelay1(ucharMS);
unsignedintReadTemperature(void);
voidInit_DS18B20(void);
unsignedcharReadOneChar(void);
voidWriteOneChar(unsignedchardat);
voiddelay(uintz)
{
while(z--);
}
voidmain(void)
{
ucharTempH,TempL;
uchari;
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=we[7];P0=duan[huanchong[0]];delay(250);P2=we[6];P0=duan[huanchong[1]];delay(250);P2=we[5];P0=duan[huanchong[2]];delay(250);P2=we[4];P0=duan[huanchong[3]];delay(250);P2=we[3];P0=duan[12];delay(250);
P2=we[2];P0=duan[TempL];delay(250);
P2=we[1];P0=duan[(TempH%100)%10]|0x80;delay(250);P2=we[0];P0=duan[(TempH%100)/10];delay(250);if(flag_get==1)//定时读取当前温度
{
temp1=ReadTemperature();
if(temp1&0x8000)
{
P2=we[0];P0=0x40;//负号标志
temp1=~temp1;//取反加1
temp1+=1;
}
else
P2=we[0];P0=0;
TempH=temp1>>4;
TempL=temp1&0x0F;
TempL=TempL*6/10;//小数近似处理
flag_get=0;
}
if(flag==1)
{
flag=0;
x=T0count*65536+TH0*256+TL0;
for(i=0;i<4;i++)
{
temp[i]=0;
}
i=0;
while(x/10)
{
temp[i]=x%10;x=x/10;
i++;}
temp[i]=x;
for(i=0;i<4;i++)
{
huanchong[i]=temp[i];}
time=0;
T0count=0;
TH0=0;
TL0=0;
TR0=1;
}
}
}
voidt0(void)interrupt1using0
{
T0count++;
}
voidt1(void)interrupt3using0
{
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
time++;num++;
if(time==250)
{
led=~led;
TR0=0;
time=0;
flag=1;
}
if(num==50)
{num=0;
flag_get=1;//标志位有效
second++;
if(second>=60)
{
second=0;
minute++;
}
}
}
voidInit_DS18B20(void)
{
unsignedcharx=0;
DQ=1;//DQ复位
delay(8);//稍做延时
DQ=0;//单片机将DQ拉低
delay(80);//精确延时大于480us
DQ=1;//拉高总线
delay(10);
x=DQ;//稍做延时后如果x=0则初始化成功x=1则初始化失败delay(5);
}
/******************************************************************//*读一个字节*//******************************************************************/unsignedcharReadOneChar(void)
{
unsignedchari=0;
unsignedchardat=0;
for(i=8;i>0;i--)
{
DQ=0;//给脉冲信号
dat>>=1;
DQ=1;//给脉冲信号
if(DQ)
dat|=0x80;
delay(5);
}
return(dat);
}
/******************************************************************//*写一个字节*//******************************************************************/voidWriteOneChar(unsignedchardat)
{
unsignedchari=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
delay(5);
DQ=1;
dat>>=1;
}
delay(5);
}
/******************************************************************//*读取湿度度*//******************************************************************/unsignedintReadTemperature(void)
{
unsignedchara=0;
unsignedintb=0;
unsignedintt=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的处理,可以完美的实现对湿度的监测。
可以说传感器是实现测量与控制的首要环节,是测控系统的关键部件。
近来传感器所检测的信号显著地增加,因而其品种也极其繁多。
为了对各种各样的信号进行检测、控制,就必须获得尽量简单易于处理的信号。
电信号能较容易地进行放大、反馈、滤波、微分、存贮、远距离操作等。
所以只有电信号能够满足这样的要求。
作为一种功能块的传感器可狭义的定义为:
“将外界的输入信号变换为电信号的一种元件。
用计算机控制的自动化装置来代替人的劳动,我们可以说电子计算机就相当于人的大脑,那么传感器则相当于人的五官。
传感器是获取自然领域中信息的主要途径与手段。
换句话说如果不进行传感器的开发,电子计算机将处于一种不能适应实际需要的状态。
同时要求传感器、电子计算机和执行器三者都能相互协调。
如此一来,传感器就成了现代科学的中枢神经系统,并且日益受到人们的普遍重视,现代传感器技术的应用已成为必然趋势。
有了传感器对原始被测信号进行准确可靠的捕捉和转换一切准确的测量和控制都可以实现,并且是设备和系统都正常运行在最佳状态,从而保证生产的高效率和高质量。
湿度计课程设计
学院西安外事学院
专业(方向)电子信息工程
班级1002
学号100102050230
姓名李乾坤
指导教师龙小红
2013年11月25日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 湿度计 课程设计