一.硬件方案
本设计通过光敏电阻检测光照强度,然后A/D模块PCF8591处理后,将光照强度值实时显示在液晶上,并且可以按键控制光照的强度值,当光照低于设定的阈值,1颗白色高亮LED灯亮进行补光,光照高于设定的阈值,就不用管。通过DS18B20检测温度值,并且实时显示在1602液晶上,并且可以通过按键设定温度值,当温度低于设定值时,通过一颗黄色高亮LED灯模拟。
主要由STC89C52单片机、LCD1602液晶显示、光照检测、土壤湿度传感器、A/D采样PCF8591、风扇控制、继电器控制、补光灯、补温灯、按键及电源组成;如图:
二.设计功能
(1)通过光敏电阻检测光照强度,然后A/D模块PCF8591处理后,将光照值实时显示在液晶上,按键可以设置光照阈值。当光照低于设定的阈值,高亮LED灯亮进行补光,否则关闭。
(2)通过DS18B20检测温度值,实时显示在1602液晶上,可以通过按键设定温度阈值,当温度低于设定值时,补温灯打开,否则关闭;当温度超过设定值时,风扇旋转。
(3)通过土壤湿度传感器检测土壤的湿度,将湿度值显示在液晶上,按键设置湿度阈值,当土壤湿度小于设定的阈值,继电器打开,继电器可以外接水泵;否则继电器不动作。
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:
(2)PCB图如下:
四.软件设计
(1)程序流程图
(2)主程序源码
void main (void)
{
unsigned char midval;
Init_Timer0();
LCD_Init(); //初始化液晶
DelayMs(20); //延时有助于稳定
LCD_Clear(); //清屏
led_l = 0;relay = 0;led_b = 0;fan = 0; //上电检测下 方便检测硬件
DelayMs(200);
led_l = 1;relay = 1;led_b = 1;fan = 1;
sprintf(disdat,"L:%2d R:%2d T:%2d C",Lval,Rval,distem);//打印电压电流值
LCD_Write_String(0,0,disdat);//显示
sprintf(disset," L:%2d R:%2d T:%2d",(unsigned int)setLval,(unsigned int)setRval,(unsigned int)setTval);//打印电压电流值
LCD_Write_String(0,1,disset);
while (1) //主循环
{
key(); //按键处理程序
if(readADCFlag == 1) //定时读取adc
{
midval=ReadADC(1); //转换的结果,在下次,才能读出
Lv=5.15-(float)midval*5.15/255; //光照
Lval = (unsigned int )(Lv * 100 )/5.16;
DelayMs(10); //延时有助于稳定
midval=ReadADC(0); //读取AD检测到的 光敏地值
Tv=5.15-(float)midval*5.15/255; //光照
Rval = (unsigned int )(Tv * 100 )/5.16;
sprintf(disdat,"L:%2d R:%2d T:%2d C",Lval,Rval,distem);//打印电压电流值
LCD_Write_String(0,0,disdat);//显示
LCD_Write_Char(14,0,0XDF) ;
readADCFlag = 0 ;
sprintf(disset," L:%2d R:%2d T:%2d ",(unsigned int)setLval,(unsigned int)setRval,(unsigned int)setTval);//打印电压电流值
LCD_Write_String(0,1,disset);
if(SetFlag == 1) //进入设置
{
LCD_Write_Char(0,1,'S') ; //显示S
LCD_Write_Char(5,1,' ') ;
LCD_Write_Char(10,1,' ') ;
}
else if(SetFlag == 2)
{
LCD_Write_Char(0,1,' ') ;
LCD_Write_Char(5,1,'S') ; //显示S
LCD_Write_Char(10,1,' ') ;
}
else if(SetFlag == 3)
{
LCD_Write_Char(0,1,' ') ;
LCD_Write_Char(5,1,' ') ; //显示S
LCD_Write_Char(10,1,'S') ;
}
else
{
LCD_Write_Char(0,1,' ') ;
LCD_Write_Char(5,1,' ') ; //显示S
LCD_Write_Char(10,1,' ') ;
}
if(Lval <= setLval) //光照对比
{
led_l = 0; //打开led
}
else
{
led_l = 1; //关闭led
}
if(Rval <= setRval) //土壤对比
{
relay = 0; //打开继电器
}
else
{
relay = 1; //关闭继电器
}
if(distem <= setTval) //温度对比
{
led_b = 0; //led及风扇处理
fan = 1;
}
else
{
led_b = 1; //led及风扇处理
fan = 0;
}
}
if(readTem==1) //定时温度读取
{
temp=ReadTemperature(); //温度读取
temperature=(float)temp*0.0625; //温度处理
if(temperature >1) //防止温度读错
{distem = (unsigned int )temperature;} //温度处理
readTem=0;
}
}
}
上一篇:基于51单片机的全自动洗衣机设计
下一篇:基于51单片机的红外点滴输液检测系统
推荐阅读最新更新时间:2024-11-20 14:25
设计资源 培训 开发板 精华推荐
- 课设图5
- 使用 Microchip Technology 的 SY89530L 的参考设计
- RoenDi: 1.27" TFT 可定制显示屏的开源旋转编码器
- 数字舵机驱动板
- LT8607EMSE 3.3V、2MHz 降压型稳压器的典型应用电路
- 12864显示屏连接32最小版集合的串口显示屏电路板
- kb84 QMK 键盘
- MPC86XADS、MPC8xx 参考板,基于 MPC860DP MPU PowerQUICC MPC8xx 处理器
- AKD4637-B,AK4637 24 位音频编解码器评估板
- 使用 Asahi Kasei Microdevices Corporation 的 AK4101AVQ 的参考设计