基于51单片机的智能窗口控制系统(protues仿真+程序+论文+PPT+PCB)
1、设计功能
自动窗帘控制系统具有以下几个基本功能:
①、手动控制:该功能是根据用户的需求通过按键进行窗帘的开关,此功能可以使窗帘的开闭处于任何一种状态;
②、光照自动控制:系统可以根据用户设定的光照强度值通过感光器采集光照自动开光窗帘;
③、时间控制:此功能是根据用户设定的时间一次性开关窗帘,并显示当前温度。
④、温度报警系统:可以自行设置温度报警温度。
⑤、时间显示及闹钟系统:可以自行设置闹钟时间。
⑥、手动自动控制按键随时切换。
2、prostues仿真
仿真软件使用protues7.8
版本
3、程序
main.c
void main (void)
{
u8 key;
cg = 1;
c1_k = 0;
c2_k = 0;
speaker = 1;
Led_Yellow = 1;
wendu=check_wendu(); //初始化时调用温度读取函数 防止开机85°C
time_init();
Init1602(); //调用初始化显示函数
yanwu=Adc0832(0); //读取光照值
tianranqi=Adc0832(1); //读取天然气值
wendu=check_wendu(); //读取温度值
while (1) //主循环
{
key=Key_Scan(); //按键扫描
if(key==KEY_SET)
{
Mode++;
}
switch(Mode) //判断模式的值
{
case 0: //监控模式
{
times++; //计数
if( times >= 500 ) //大于500,清零
{
times = 0;
}
if( times <= 300 ) //小于300,显示光强、温度信息
{
if( times == 1 )
{
LCD_Write_String(0,0,"SET T:00 L:000"); //开机界面
LCD_Write_String(1,0,"NOW T:00.0 L:000");
}
Display_1602(yushe_wendu,yushe_yanwu,wendu,yanwu); //显示预设温度,预设光照,温度值,光照值
break;
}
else //大于300,显示天然气信息
{
if( times == 301 )
{
LCD_Write_String(0,0,"SET yanwu:00 "); //开机界面
LCD_Write_String(1,0,"NOW yanwu:00.0 ");
}
// Display_1602(yushe_wendu,yushe_yanwu,wendu,yanwu); //显示预设温度,预设光照,温度值,光照值
LCD_Write_Char(0,10,yushe_tianranqi,3) ;//显示预设光照
LCD_Write_Char(1,10,tianranqi,3) ;//显示预设光照
write_com( 0x80+0x40+10);
write_data( tianranqi/100+0x30);
write_data( tianranqi%100/10+0x30);
write_data( tianranqi%10+0x30);
write_data( ' ');
break;
}
}
case 1://预设温度模式
{
SelectPosition(0,5) ; //指定位置
write_com(0x0d); //阴影闪烁
if(key==KEY_ADD) //加键按下
{
yushe_wendu++; //预设温度值(阀值)加1
if(yushe_wendu>=99) //当阀值加到大于等于99时
yushe_wendu=99; //阀值固定为99
LCD_Write_Char(0,6,yushe_wendu,2) ;//显示预设温度
}
if(key==KEY_MINUS) //减键按下
{
if(yushe_wendu<=1) //当温度上限值减小到1时
yushe_wendu=1; //固定为1
yushe_wendu--; //预设温度值减一,最小为0
LCD_Write_Char(0,6,yushe_wendu,2) ;//显示预设温度
}
break; //执行后跳出switch
}
case 2: //预设光照模式
{
SelectPosition(0,12) ; //指定位置
write_com(0x0d); //打开显示 无光标 光标闪烁
if(key==KEY_ADD) //加键按下
{
if(yushe_yanwu>=255) //当阀值加到大于等于255时
yushe_yanwu=254; //阀值固定为254
yushe_yanwu++; //预设光照值(阀值)加1,最大为255
LCD_Write_Char(0,13,yushe_yanwu,3) ;//显示预设光照
}
if(key==KEY_MINUS) //减键按下
{
if(yushe_yanwu<=1) //当光照上限值减小到1时
yushe_yanwu=1; //固定为1
yushe_yanwu--; //预设温度值减一,最小为0
LCD_Write_Char(0,13,yushe_yanwu,3) ;//显示预设光照
}
break;
}
case 3: //预设天然气设置
{
if( shezhi_flag == 0 )
{
LCD_Write_String(0,0,"SET yanwu: "); //界面
LCD_Write_String(1,0,"NOW yanwu: ");
shezhi_flag = 1;
LCD_Write_Char(0,10,yushe_tianranqi,3) ;//显示天然气设置
LCD_Write_Char(1,10,tianranqi,3) ;//显示预设天然气设置
write_com( 0x80+0x40+10);
write_data( tianranqi/100+0x30);
write_data( tianranqi%100/10+0x30);
write_data( tianranqi%10+0x30);
write_data( ' ');
}
SelectPosition(0,9) ; //指定位置
write_com(0x0d); //打开显示 无光标 光标闪烁
if(key==KEY_ADD) //加键按下
{
if(yushe_tianranqi>=255) //当阀值加到大于等于255时
yushe_tianranqi=254; //阀值固定为254
yushe_tianranqi++; //预设天然气设置(阀值)加1,最大为255
LCD_Write_Char(0,10,yushe_tianranqi,3) ;//显示预设天然气设置
}
if(key==KEY_MINUS) //减键按下
{
if(yushe_tianranqi<=1) //当天然气设置上限值减小到1时
yushe_tianranqi=1; //固定为1
yushe_tianranqi--; //预设温度值减一,最小为0
LCD_Write_Char(0,10,yushe_tianranqi,3) ;//显示预设天然气设置
}
break;
}
default :
{
write_com(0x38);//屏幕初始化
write_com(0x0c);//打开显示 无光标 无光标闪烁
Mode=0; //恢复正常模式
shezhi_flag = 0;
times = 0;
break;
}
}
}
}
4、论文
5、资源整体
链接:https://pan.baidu.com/s/1tfKsM--b_sWE_ScKnVYaSw 提取码:gmff