基于单片机的环境温度湿度检测仪课程设计.docx
《基于单片机的环境温度湿度检测仪课程设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的环境温度湿度检测仪课程设计.docx(23页珍藏版)》请在冰豆网上搜索。
![基于单片机的环境温度湿度检测仪课程设计.docx](https://file1.bdocx.com/fileroot1/2022-10/13/783a8dc3-6cec-4605-9680-6bff88da1b19/783a8dc3-6cec-4605-9680-6bff88da1b191.gif)
基于单片机的环境温度湿度检测仪课程设计
MC大学
环境温度湿度检测仪
题目:
环境温度湿度检测仪
专业:
电子信息工程
班级:
电信XX班
姓名:
XXX
学号:
XX
指导老师:
XXX
小组成员:
XXXXXXXXX
成绩:
环境温度湿度检测仪
摘要
环境温度湿度检测仪是生活乃至生产中不可或缺的重要仪器生活中,人们用检测仪可以精确的了解到当前空气的温湿度,采用适当的方法改变当前的环境湿度与温度,使人体舒适,不易生病(例如:
长期生活在较潮湿的地方易得风湿病等)。
在工业生产中,更是体现了检测仪的重要性,工厂的仓库是一个工厂的核心,仓库货物繁多,需要做到防潮、防霉、防腐、防爆,才能保障储备物资的使用寿命和工作可靠性,只有在适当的温湿度下,才能做到对货物的长期储存,如若温湿度不当,就会造成一系列的损失甚至灾难(例如:
货物的堆压可能导致内部温度过高引起自燃)。
故环境温湿度检测仪是科学发展道路上不可少的仪器。
此次课程设计主要通过单片机与温湿度传感器的硬件连接,以及对芯片内程序的烧写进行实现的,其中重点要使传感器所检测到的直面表达给人们看,能给人一目了然。
一、总体设计
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据
处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。
从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单片机。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。
接下来就有我们从单片机的角度去制作出一个环境温湿度检测仪,检测其的实用性。
二、课程设计任务及要求
2.1设计任务
利用单片机原理制作环境温湿度检测仪,需具备原理图、仿真图以及实物图,需对实物有详细的说明。
1.设计一个有能在LCD1602液晶显示器精确显示温湿度的单片机设计(利用DHT11传感器);
2.用简明的单片机电路实现。
2.2设计步骤
1.用DHT11温湿度传感器感受环境的温湿度情况,并能在LCD1602液晶显示器显示出温度以及湿度的值;
2正确编写程序使之能驱动芯片;
3.正确选择各个原件,并选择其最佳值;
4.首先需要用仿真设计电路图(通过protues),通过Keil编写程序;
5.利用Keil生成Hex文件,并在Protues仿真图上进行仿真;
6.仿真设计完毕之后就通过仿真图进行实物的焊接(需注意各个原件的焊接情况,切勿焊接错,以防通电时烧坏芯片);
7.对实物图进行烧写程序并启动实物图进行观察。
三、电路及个元器件功能介绍
3.1原件介绍
3.1.1AT89C52
引脚图如下所示:
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个
外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本,采用PDIP封装(塑料双列直插式封装),
单片机的复位分为上电自动复位、按键手动复位两种和看门狗强制复位三种等。
上电复位通常利用电容的充放电来实现。
在这个例子中,我们采用按键电平复位。
3.1.2DHT11温湿度传感器
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。
它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。
传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。
因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
每个DHT11传感器都在极为精确的湿度校验室中进行校准。
校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。
单线制串行接口,使系统集成变得简易快捷。
超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。
产品为4针单排引脚封装。
连接方便,特殊封装形式可根据用户需求而提供。
应用:
暖通空调、测试及检测设备、汽车、数据记录器、消费品、自动控制、气象站、家电、温度调节器、医疗、除湿器等等。
3.1.3LCD1602液晶显示器(带背光)
编号符号引脚说明编号符号引脚说明
1GND电源地9D2数据
2VCC电源正极10D3数据
3VL液晶显示偏压11D4数据
4RS数据/命令选择12D5数据
5R/W读/写选择13D6数据
6E使能信号14D7数据
7D0数据15BLA背光源正极
8D1数据16BLK背光源负极
1602LCD主要技术参数:
显示容量:
16×2个字符
芯片工作电压:
4.5—5.5V
工作电流:
2.0mA(5.0V)
模块最佳工作电压:
5.0V
字符尺寸:
2.95×4.35(W×H)mm
3.2系统设计
3.2.1结构的基本框图
3.2.2系统原理图及工作原理
3.2.3驱动执行程序
#include
#include
typedefunsignedcharunint8;
typedefunsignedcharunint16;
unsignedcharstr1[]={""};
unsignedcharstr2[]={""};
unsignedcharcodedis1[]={"TEMPT:
"};
unsignedcharcodedis2[]={"HUMIRH:
"};
sbitTRH=P1^0;//温湿度传感器DHT11数据接入
sbitST=P1^1;//状态显示,是为了方便调试,具体使用的时候可以不要
sbitLCD_RS=P2^5;
sbitLCD_RW=P2^6;
sbitLCD_EN=P2^7;
unint8TH_data,TL_data,RH_data,RL_data,CK_data;
unint8TH_temp,TL_temp,RH_temp,RL_temp,CK_temp;
unint8com_data,untemp,temp;
unint8respond;
voiddelayNOP()
{
_nop_();
_nop_();
_nop_();
_nop_();
}
voiddelay_ms(unsignedcharms)
{
unsignedchari;
while(ms--)
{
for(i=0;i<150;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
voiddelay_us()
{
unint8i;
i--;
i--;
i--;
i--;
i--;
i--;
}
bitlcd_busy()
{
bitresult;
LCD_RS=0;
LCD_RW=1;
LCD_EN=1;
delayNOP();
result=(bit)(P0&0x80);
LCD_EN=0;
return(result);
}
voidlcd_wcmd(unsignedcharcmd)
{
while(lcd_busy());
LCD_RS=0;
LCD_RW=0;
LCD_EN=0;
_nop_();
_nop_();
P0=cmd;
delayNOP();
LCD_EN=1;
delayNOP();
LCD_EN=0;
}
voidlcd_wdata(unsignedchardat)
{
while(lcd_busy());
LCD_RS=1;
LCD_RW=0;
LCD_EN=0;
P0=dat;
delayNOP();
LCD_EN=1;
delayNOP();
LCD_EN=0;
}
voidlcd_init()
{
delay_ms(15);
lcd_wcmd(0x38);//16*2显示,5*7点阵,8位数据
delay_ms(5);
lcd_wcmd(0x38);
delay_ms(5);
lcd_wcmd(0x38);
delay_ms(5);
lcd_wcmd(0x0c);//显示开,关光标
delay_ms(5);
lcd_wcmd(0x06);//移动光标
delay_ms(5);
//lcd_wcmd(0x01);//清除LCD的显示内容,如果屏幕过暗,可将这俩句删除
//delay_ms(5);
}
voidlcd_dis_pos(unsignedcharpos)
{
lcd_wcmd(pos|0x80);//数据指针=80+地址变量
}
charreceive()
{
unint8i;
ST=0;
com_data=0;
for(i=0;i<=7;i++)
{
respond=2;
while((!
TRH)&&respond++);
delay_us();
delay_us();
delay_us();
if(TRH)
{
temp=1;
respond=2;
while((TRH)&&respond++);
}
else
temp=0;
com_data<<=1;
com_data|=temp;
}
return(com_data);
}
voidread_TRH()
{
//主机拉低18ms
TRH=0;
delay_ms(18);
TRH=1;
//DATA总线由上拉电阻拉高主机延时20us
delay_us();
delay_us();
delay_us();
delay_us();
//delay_us();
//delay_us();delay_us();delay_us();delay_us();
//主机设为输入判断从机响应信号
TRH=1;
//判断DHT11是否有低电平响应信号如不响应