云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 基于DHT11的温湿度监测电路设计 - 图文

基于DHT11的温湿度监测电路设计 - 图文

  • 62 次阅读
  • 3 次下载
  • 2025/6/14 16:40:30

4 软件设计

软件设计是本次设计中不可缺少的环节,贯穿了整个毕业设计,是本次设计能够完成的最重要的环节之一。 根据温湿度监控系统功能,系统软件流程图如图4-1所示:

LCD正常显示 自动检测 系统启动开始 蜂鸣器鸣叫 LCD1602初始化 读取温湿度值 N 蜂鸣器不报警 判断是否超预设? Y 蜂鸣器鸣叫报警 启动相关调控设备

图4-1 系统软件流程图

12

4.1 温湿度采集模块

DHT11传感器内含一个NTC测温和一个电阻式感湿元件,并与一个8位的高性能单片机相连接,在精确的湿度校验室中DHT11传感器进行过校准,以程序的形式校准系数储存在0TP内存中,检测信号的时候,在处理过程中传感器内部要调用这些校准系数,采用单线制的串行接口。

首先将DHT11数据端口置低电平,发送开始信号,延时20毫秒,释放数据线,用于检测低电平应答信号。若无应答信号,则EA为高电平,返回;有应答信号,等待应答信号结束,若超出检测范围,则读数据出错,退出函数;应答信号后有80us高电平,等待高电平结束后,读出温湿度值。

unsigned char DHT11_ReadTempAndHumi(void) {

unsigned char i = 0, check_value = 0,count = 0; EA = 0;

dht11 = 0; //拉低数据线大于18ms 发送开始信号 Delay_1ms(20); //需大于18 毫秒

dht11 = 1; //释放数据线,用于检测低电平的应答信号

//延时20-40us,等待一段时间后检测应答信号,应答信号是从机拉低数据线80us DHT11_Delay_10us(); DHT11_Delay_10us(); DHT11_Delay_10us(); DHT11_Delay_10us();

if(dht11 != 0) //检测应答信号,应答信号是低电平 {

//没应答信号 EA = 1;

return ERROR; } else {

//有应答信号

while(dht11 == 0 && count++ < NUMBER); //等待应答信号结束 if(count >= NUMBER) //检测计数器是否超过了设定的范围 { dht11 = 1; EA = 1; return ERROR; //读数据出错,退出函数 }

count = 0;

dht11 = 1;//释放数据线

13

//应答信号后会有一个80us 的高电平,等待高电平结束 while(dht11 != 0 && count++ < NUMBER); if(count >= NUMBER) { dht11 = 1; EA = 1; return ERROR; //退出函数 }

//读出湿.温度值

for(i = 0; i < SIZE; i++) { value_array[i] = DHT11_ReadValue(); if(status == ERROR)//调用ReadValue()读数据出错会设定status 为ERROR { dht11 = 1; EA = 1; return ERROR; } //读出的最后一个值是校验值不需加上去 if(i != SIZE - 1) { //读出的五字节数据中的前四字节数据和等于第五字节数据表示成功 check_value += value_array[i]; } }//end for //在没用发生函数调用失败时进行校验 if(check_value == value_array[SIZE - 1]) { //将温湿度扩大10 倍方便分离出每一位 humi_value = value_array[0] * 10; temp_value = value_array[2] * 10; dht11 = 1; EA = 1; return OK; //正确的读出dht11 输出的数据 } else { //校验数据出错 EA = 1; return ERROR; }

14

}

}

4.2 显示模块

LCD1602液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。首先将LCD1602的各个引脚定义,然后算出指令码,将温度显示和湿度显示的子程序分别定义,以备调用。 void displayfun1() {

display_temp(); }

void displayfun2() {

display_temp1(); }

void display()

{

if(!disp_mode) }

displayfun1(); //显示正常 else

displayfun2(); //设置界面

4.3 蜂鸣器报警模块

微型计算机控制系统中,为了安全起见,对于一些重要的参数或系统,都设定有紧急状态报警系统,以便于提醒操作人员注意,或者采取紧急措施,本设计采用把计算机采集的数据进行数据处理、标度变换、数字滤波之后,与该参数上下限与设定值进行比较,不符合标准值则进行报警,否则就作为采样的正常值,进行显示[12]。

本设计采用峰鸣音报警电路。蜂鸣器额定电流≤30Ma,而对于AT89S51单片机,P3口的电流为15mA,由此可见,仅靠单片机的P3口电流是不能驱动蜂鸣器的,必须使用晶体管放大电路,为了使单片机的功率更小,所以使用PNP型晶体管,当外部环境的温度或者湿度超过预设值的时候,基级变为低电平,蜂鸣器导通鸣叫[11]。 void display() {

if((((temp_value/10)0)

{beep=0;red=0;} //温度低于下限值,报警

else if(((temp_value/10)0)>=temph || ((humi_value/10)0)>=huih)

{beep=0;blue=0;} //温度高于或等于上限值,报警 else {beep=1;red=1;blue=1;}

15

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

4 软件设计 软件设计是本次设计中不可缺少的环节,贯穿了整个毕业设计,是本次设计能够完成的最重要的环节之一。 根据温湿度监控系统功能,系统软件流程图如图4-1所示: LCD正常显示 自动检测 系统启动开始 蜂鸣器鸣叫 LCD1602初始化 读取温湿度值 N 蜂鸣器不报警 判断是否超预设? Y 蜂鸣器鸣叫报警 启动相关调控设备 图4-1 系统软件流程图 12 4.1 温湿度采集模块 DHT11传感器内含一个NTC测温和一个电阻式感湿元件,并与一个8位的高性能单片机相连接

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com