历史上的今天
今天是:2024年10月12日(星期六)
2021年10月12日 | 基于51单片机的智能自动窗帘设计
2021-10-12 来源:eefocus
一.硬件方案
自动窗帘系统硬件电路主要由感光检测电路,时钟电路,电机控制电路、按键电路等外围电路构成。该设计则主要讨论了自动窗帘系统的设计过程,硬件电路设计,软件调试过程。通过本系统可以实现通过光照强度实现窗帘开关自动控制、定时控制和手动控制等不同的控制方式。
硬件主要采用51单片机+LCD1602液晶显示+DS18B20+光敏电阻+DS1302+步进电机+ULN2003设计而成;如图:

二.设计功能
(1)液晶实时显示目前的状态,包括温度、模式、光线强度、时间等信息。
(2)智能窗帘可以根据外界光线的强弱来进行自动开关窗户,光线强弱的上下限可以按键调节。
(3)具有手动控制功能,可以手动开/关窗户。
(4)可以通过按键设定窗帘开启的时间和自行关闭的时间。
(5)可以通过按键设定温度值,低于或者高于设定值进行开/关窗户。
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:

(2)Protues仿真图如下:

(3)PCB图如下:

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

(2)主程序源码
/*********************************************************/
// 主函数
/*********************************************************/
void main()
{
uchar light;
LcdInit(); // 执行液晶初始化
DS1302_Init(); // 时钟芯片的初始化
LcdShowInit(); // 液晶显示内容的初始化
if(DS1302_Read_Byte(0x81)>=128) // 判断时钟芯片是否正在运行
{
DS1302_Write_Time(); // 如果没有,则初始化一个时间
}
while(1)
{
DS1302_Read_Time(); // 获取当前时钟芯片的时间,存在数组time_buf中
FlashTime(); // 刷新时间显示
light=Get_ADC0832(); // 读取光照强度
light=light/2.5; // 缩小光照检测结果(在0-99)
if(light>99) // 如果大于99
light=99; // 则依然保持99
LcdGotoXY(1,14); // 光标定位
LcdPrintNum(light); // 显示光照强度
KeyScanf1(); // 按键扫描(时间的设置)
KeyScanf2(); // 按键扫描(阈值的设置)
KeyScanf3(); // 按键扫描(模式切换)
/*手动控制模式*/
if(gMode==1)
{
if(KeyDown_P==0) // 如果关窗帘键按下了
{
if(Led_P==0) // 如果窗帘当前是打开的
{
Close(); // 则光标窗帘
}
}
if(KeyUp_P==0) // 如果开窗帘键按下了
{
if(Led_P==1) // 如果窗帘当前是关闭的
{
Open(); // 则打开窗帘
}
}
}
/*时间控制模式*/
if(gMode==2)
{
if((TimeBuff[4]==CloseHour)&&(TimeBuff[5]==CloseMinute)&&(TimeBuff[6]==0)) // 如果到了关窗帘的时间
{
if(Led_P==0) // 如果窗帘当前是打开的
{
Close(); // 则光标窗帘
}
}
if((TimeBuff[4]==OpenHour)&&(TimeBuff[5]==OpenMinute)&&(TimeBuff[6]==0)) // 如果到了开窗帘的时间
{
if(Led_P==1) // 如果窗帘当前是关闭的
{
Open(); // 则打开窗帘
}
}
}
/*光线控制模式*/
if(gMode==3)
{
if(light if(Led_P==0) // 如果窗帘当前是打开的 { Close(); // 则光标窗帘 } } else // 当前光线大于或等于设置的阈值 { if(Led_P==1) // 如果窗帘当前是关闭的 { Open(); // 则打开窗帘 } } } DelayMs(100); // 延时0.1秒 } }
史海拾趣
|
s7-300模拟量(温度、压力、流量)怎么处理? S7-300中温度、压力及流量的输入值,这样处理为PLC可以处理的数据,并实现数值的显示??? … 查看全部问答> |
|
WINCE下如何输入单引号 \',它的值和VK_RIGHT的值是一样的,每次调用SendString发送它时都是发送向右键消息,请问各位是如何输入单引号 \' 的。 … 查看全部问答> |
|
MAX11040 2片 贴片MAX7221 2片 直插邮费自理 韵达快递 需要的坛友可以跟帖(这个是我当初申请的,后来没有用上,全新的未用,原包装) [ 本帖最后由 wanghongyang 于 2011-6-25 11:00 编辑 ]… 查看全部问答> |
|
PSoC4 Cortex-M0开发板免费申请,分享心得赢惊喜大礼! Cypress联合EEWORLD举行大规模的PSoC 4 ARM Cortex-M0开发板免费试用活动!将通过线上、线下、大学计划等多种渠道发放板子!分享心得,还将有机会获赠5000元RMB外加价值300美金的Oscium混合信号示波器(个税自理)、TP-Link二合一3G路由器!速来!… 查看全部问答> |
|
为什么12864绘直线一个字节只能出现一个点呢 难道论坛都没人做过? 昨天发了个问题 没人理睬 自己解决了 今天遇到了个新的 相信做过12864绘图的也遇到过 当描一个直线时 在一个字节内 连续的点不能描出来 出来的直线是8个断 ...… 查看全部问答> |




