随着社会的进步和工农业生产技术的发展,许多产品对生产和使用环境的要求越来越严。人们对温度、湿度等环境因素的影响越来越重视了。
功能描述
1、采用51单片机作为主控芯片;
2、采用24C02芯片掉电存储设置上下限;
3、采用LCD1602液晶显示:上行显示当前温度和湿度,下行显示相应的冷/热/干/湿状况;
4、采用全数字型DHT11温湿度传感器:温度测量范围0℃--50℃,湿度测量范围20%RH—90%RH;
5、当超过阀值的时候,有蜂鸣器报警提示。并有开关可以关闭或打开报警;
6、当温度或湿度超限后,报警信号灯点亮同时相应的继电器吸合;继电器可以驱动打开或切断通风机、抽湿机、加热器、制冷器、加湿器、报警器等外部设备;
7、可通过按键分别对温度/湿度报警上下限进行设置;

按键说明
KEY1:进入设置菜单;切换设置选项;
KEY2:设置参数值+1;
KEY3:设置参数值-1;
KEY4:退出设置菜单;
整体方案
本设计总体思路为:信息采集→信息处理→信息显示/报警。它的主要模块为单片机模块,温湿度采集模块,显示模块,键盘模块,LED报警模块,电源模块,阈值设置模块,设计方块图如下。

电路设计
采用Altium Designer作为电路设计工具。Altium Designer通过把原理图设计、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。

仿真设计
采用Proteus作为仿真设计工具。Proteus是一款著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

主程序设计
void main()
{
uint i, j, testnum;
EA = 0;
Timer0_Init(); //定时器0初始化
Data_Init();
EA = 1;
L1602_init();
L1602_string(1,1," ^_^ ^_^ ^_^ ");
L1602_string(2,1," welcome to use ");
//延时
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");
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<TL)
{
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<HL)
{
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();
}
}
源文件获取
关注公众号【电子开发圈】,首页发送 “环境” 获取;
530

被折叠的 条评论
为什么被折叠?



