失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 基于wifi控制的51单片机智能照明控制系统设计

基于wifi控制的51单片机智能照明控制系统设计

时间:2019-01-17 02:04:34

相关推荐

基于wifi控制的51单片机智能照明控制系统设计

一.硬件方案

本设计主要由51单片机+最小系统+LCD1602液晶显示模块+GY-30亮度传感器模块+ESP-M1 wifi模块+LED照明灯电路++DS1302时钟电路+按键模块;如图:

二.设计功能

(1)本设计主要涉及了环境光强度的测量、显示,对LED亮度的PWM控制以及通过WIFI实现APP软件开关控制。

(2)本设计带有日期及时间的显示,可通过按键调整当前的时间及日期,带有纽扣电池,掉电后重新上电不需要重新调整时间;

(3)主要分为自动和手动两种控制模式,自动模式下可根据对比当前的环境亮度与设定的亮度值,通过PWM来调整当前的LED灯光强;

(4)本设计共有5个按键,独立的按键为复位按键;并排的四个按键,一为手动/自动模式切换键,二为设置键,三为加一键(手动模式下为LED亮度增大键),四为减一键(手动模式下为LED亮度减小键);

(5)本系统可以通过wifi,实现app软件远程查看当前系统的状态及控制系统的工作;

三.设计原理图

原理图主要采用AD软件进行设计,如图:

四.软件设计

主程序源码

void main(){u8 t = 0;//用于判断秒数u8 cnt = 0; //计数秒的闪烁u16 send_cnt = 0;//串口打印间隔u16 def = 0;u8 pwm;delay_ms(500);lcd_init();//LCD1602初始化Initial_DS1302();display_init();//显示初始化UartInit();time_init(); //初始化定时器my_set_time(&initail_time);DS1302_GetTime(&current_time);LED=1;while(1){key_scan();//按键扫描 时间设置delay_ms(10);if(set==0)//不是时间设置模式,显示时间{if(t!=current_time.Second){t = current_time.Second;cnt++;GetBH1750();}DS1302_GetTime(&current_time);setting_time.Year = current_time.Year;//显示当前年份setting_time.Month = current_time.Month; //显示当前月份setting_time.Day = current_time.Day; //显示当前日期setting_time.Hour = current_time.Hour;//显示当前小时setting_time.Minute = current_time.Minute; //显示当前分钟setting_time.Second = current_time.Second; //显示当前秒钟if(set==0)Time_display();//时间刷新}if(handMode==1) //是否为自动模式{if(setLight>curLight){def= setLight/8;duty=(setLight-curLight)/def;if((setLight-curLight)%def>0)duty=duty+1;}elseduty=0;}if(t_2ms>=800){t_2ms=0;if(light_refresh==1) //APP刷新当前数据{GetBH1750();Send_string("The current light intensity is: "); //APP刷新当前设置光强度Send_string(light);Send_string(" xL\r\n");Send_string("The Setting light is: ");Send_Data(settingLight[0]+0x30);Send_Data(settingLight[1]+0x30);Send_Data(settingLight[2]+0x30);Send_Data(settingLight[3]+0x30);Send_Data(settingLight[4]+0x30);Send_string(" xL\r\n");Send_string("PWM Duty is: "); //APP刷新当前PWM占空比pwm=((u8)duty*12.5);Send_Data(pwm/100+0x30);Send_Data(pwm%100/10+0x30);Send_Data(pwm%10+0x30);Send_string("%\r\n");Send_string("Control Mode is: ");if(handMode==0)Send_string("Manual Mode\r\n");elseSend_string("AUTO Mode\r\n");Send_string("%\r\n");}}//串口接收信息if(revFlag == 1){switch(Rx_Data){case 'A': //APP自动刷新状态使能light_refresh^=1;if(light_refresh==0)Send_string("Stop refresh!\r\n");break;case 'B': //手/自动模式切换{handMode ^=1;if(handMode==0)Send_string("Manual Mode\r\n");elseSend_string("AUTO Mode\r\n");}break;case 'C': //提高当前LED光强度{if(handMode==0){duty++;if(duty>=8)duty=8;Send_string("PWM Duty is: ");pwm=((u8)duty*12.5);Send_Data(pwm/100+0x30);Send_Data(pwm%100/10+0x30);Send_Data(pwm%10+0x30);Send_string("%\r\n");}elseSend_string("Please operate in manual mode!!\r\n");}break;case 'D': //降低当前LED光强度if(handMode==0){if(duty<=0)duty=0;elseduty--;Send_string("PWM Duty is: ");pwm=((u8)duty*12.5);Send_Data(pwm/100+0x30);Send_Data(pwm%100/10+0x30);Send_Data(pwm%10+0x30);Send_string("%\r\n");}elseSend_string("Please operate in manual mode!!\r\n");break;case 'E': //获取设置值{//auto_Flag ^= 1;//if(auto_Flag == 1)//{//Uart_SendString("Now is AutoMode!\r\n");//write_1602com(0xc0);//write_1602dat('A');//}//else//{//Uart_SendString("Now is TimeMode!\r\n");//write_1602com(0xc0);//write_1602dat('T');//}}break;default:revFlag = 0;break;}revFlag = 0;}//}}

资料

如果觉得《基于wifi控制的51单片机智能照明控制系统设计》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。