历史上的今天
今天是:2024年10月14日(星期一)
2021年10月14日 | 基于51单片机的温湿度控制系统
2021-10-14 来源:eefocus
一.硬件方案
本设计采用51单片机每2秒钟从DHT11温湿度传感器中读入温度和湿度,在液晶屏上即时显示。液晶屏上同时显示温湿度上限值,该上限值保存外外部EEPROM存储器中,掉电不失,并且可以通过四只按键上调或下调。当温度或湿度值超过上限值时,报警信号点亮相应报警灯。该报警信号可以通过三极管驱动继电器,以控制外部风机或加热器。
主要由51单片机+最小系统+LCD1602液晶显示模块+温湿度采集模块+继电器驱动模块+风扇模块+LED指示灯模块+按键模块+AT24C02存储模块+蜂鸣器报警模块;如图:

二.设计功能
(1)AT24c02芯片掉电存储设置的上下限。
(2)四个按键为设置、加、减、确定,实现了阀值的调节。
(3)LCD1602液晶显示,上面行显示当前的温度和湿度,下面行显示相应的冷、热、干、湿。
(4)配用全数字型温湿度传感器DHT11,温度测量范围0℃–50℃,湿度测量范围20%RH—90%RH,可以满足一般需要。
(5)当超过阀值的时候,有蜂鸣器闪烁报警提示。并有开关可以关闭或打开报警。
(6)当温度或湿度超限后,报警信号灯点亮同时相应的继电器吸合。继电器可以驱动打开或切断通风机、抽湿机、加热器、制冷器、加湿器、报警器等外部设备;
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:

(2)Protues仿真图如下:

(3)PCB图如下:

四.软件设计
(1)程序流程图

(2)主程序源码
//数据初始化
void Data_Init()
{
Led_qushi = 1;
Led_jiashi=1;
Led_jiangwen = 1;
Led_shengwen = 1;
}
/********************************************************************
* 名称 : Main()
* 功能 : 主函数
***********************************************************************/
void main()
{
uint i, j, testnum;
EA = 0;
Timer0_Init(); //定时器0初始化
Data_Init();
EA = 1;
L1602_init();
//延时
for (i=0;i<1000;i++)
for (j=0;j<1000;j++)
{;}
//清屏
L1602_string(1,1," ");
L1602_string(2,1," ");
L1602_string(1,1,"Tem: C Hum: %");
L1602_string(2,1,"Smalldi@2017");
/***载入温度上限和湿度上限设定值***/
TH=rdeeprom(0);
Delay1(20); //加延时可以存取稳定
TL=rdeeprom(1);
Delay1(20);
HH=rdeeprom(2);
Delay1(20);
HL=rdeeprom(3);
while(1)
{
if (FlagStartRH == 1) //温湿度转换标志检查
{
TR0 = 0;
testnum = RH();
FlagStartRH = 0;
TR0 = 1;
humidity = U8RH_data_H; //读出温湿度,只取整数部分
temperature = U8T_data_H;
if(Mode==0) //温湿度控制
{
if (temperature > TH)
{
Led_jiangwen = 0;
hot=1;
Led_shengwen = 1;
cold=0;
// BJ=1;
}
else if(temperature Led_shengwen = 0; cold=1; Led_jiangwen = 1; hot=0; buzz=0; // BJ=1; } else { Led_jiangwen=1; Led_shengwen=1; hot=0; cold=0; buzz=1; } if (humidity > HH) { Led_qushi = 0; humid=1; Led_jiashi = 1; dry=0; // BJ=1; } else if(humidity Led_jiashi = 0; dry=1; Led_qushi = 1; humid=0; // BJ=1; } else { Led_qushi=1; Led_jiashi=1; humid=0; dry=0; } } else { Led_shengwen=1; Led_jiangwen=1; Led_jiashi=1; Led_qushi=1; hot=0; cold=0; humid=0; dry=0; BJ=0; } } display(); KEY(); } }
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 03:33 编辑 我找到的一些单片机和FPGA通信的材料,里面含有两片资料文章 [ 本帖最后由 open82977352 于 2010-2-10 16:46 编辑 ] … 查看全部问答> |
|
大家好,我想用STM32W108做一个ZIGBEE的无线通信方案,有两个问题请教。 (1)这款新品有卖了吗?大致多少价格? 或者哪里能申请样片? (2)如果说我采用树型网络,ARM9作为协调器,STM32W108作为路由设备,CC2430作为终端设备。 ...… 查看全部问答> |
|
香港政府《2008年食物及药物(成分组合及标签)(修订:关于营养标签及营养声称的规定)规例》将于2010年7月1日起实施。届时所有在香港销售的预包装食品(规例规定可豁免的食品除外)须标注营养标签,该营养标签必须标示能量和七种核心 ...… 查看全部问答> |
|
大家好: 我在修改config.bib文件,但是修改后,系统不能启动,大家看看是怎么回事.还有修改config.bib还需要修改其他文件吗? config.bib原文件 MEMORY ;#define CHAIN_ADDRESS 81E40000 ; ...… 查看全部问答> |
|
TBsoft-GUI,能支持真正事件驱动程序设计的嵌入式GUI,自己的作品 笔者第一个用于实际项目,并获得成功的的嵌入式系统小作品问世。 TBsoft-GUI,一个很小的,功能一般的GUI,一个结合了某些现代程序设计要素的GUI。 市面上少见的可以支持真正事件驱动程序设计的嵌入式GUI。使用控件,引发事件,能像VB一样,直接 ...… 查看全部问答> |
|
如何将Windows CE 5.0的模拟器集成到VS2005中? 我现在已经安装了Windows CE 5.0的模拟器,但是它是独立运行的,我想将它集成到VS2005中,具体应该怎么做? 我也试过安装了pocket pc的sdk,但是没有ce 的模拟器,那么具体应该安装哪个sdk哪? … 查看全部问答> |
|
刚来报到,给大家传份资料,有用到的可以下载看看,今后多多照顾! 有点不会用,上一个附件没传上来 [local]1[/local]… 查看全部问答> |




