功能介绍:
0.本系统采用STC89C52作为单片机
1.LCD1602液晶实时显示当前时间/工作模式/灯光亮度
2.具备闹钟功能,到达闹钟时间,蜂鸣器报警
3.自动模式下,有人灯亮,人离开后15s,灯光熄灭,并且可根据环境光亮度,自动调整灯光亮度
4.手动模式下,可手动调试灯光亮度
5.可通过蓝牙发送命令分别控制台灯状态
发送命令格式:*Ax#,x表示灯光等级,1~3有效,C表示关闭
*MM# 切换为手动模式 *MA#切换为自动模式
6.可通过按键更改当前时间/工作模式/闹钟开关/闹钟时间
7.采用DC002作为电源接口可直接输入5V给整个系统供电

原理图:

PCB:

主程序:

#define __MAIN_C
#include <reg52.h>
#include "main.h"bit dispFlag = 1;
bit setFlag = 0;
unsigned char setIndex = 0;
unsigned char lightValue;
unsigned char timeLimit[2] = {22, 11};
char dispMode = NORMAL;
bit autoFlag = 0;
bit lampASwitch = 0;
unsigned char lampAPWM = 0;
int cnt = 0;
unsigned int time500us = 0;
unsigned char i = 0;
unsigned char R_buf[4];
unsigned char timeDelay = 0;
unsigned char alarmDelay = 0;
bit alarmSwitch = 0;void main()
{//初始化lampASwitch = LAMP_OFF;Timer0_Init();UART0_Init();LCD_Init();DS1302_Init();DelayMs(20);//开机显示LCD_DispStr(0, 0, "    Welcome!    ");DelayS(2);LCD_Clear();while(1){// LCD1602液晶显示if (dispFlag == 1 && setFlag == 0){dispFlag = 0;Alarm(); //闹钟控制LampCtr(); //灯光自动控制DS1302_ReadTime(); //读取时间if (dispMode == NORMAL) //正常显示模式{DispNormal(setIndex);}else if (dispMode == SET_ALARM_CLOCK) //设定闹钟模式{DispSetLimit(setIndex);}}KeyProcess(); //按键处理}
}//灯光自动控制
void LampCtr()
{if (autoFlag) //自动模式下{lightValue = 99 - 99 * ReadADC1(AIN0_GND) / 255; //读取当前光照强度if (IRFLAG == 0) //有人{timeDelay = 50;}if (timeDelay > 0){timeDelay--;lampASwitch = LAMP_ON; //有人灯亮}else{lampASwitch = LAMP_OFF;}if (lampASwitch == LAMP_ON) //灯光打开时根据光强控制亮度{if (lightValue <= 30){lampAPWM = 3;}else if (lightValue > 30 && lightValue <= 60){lampAPWM = 2;}else if (lightValue > 60){lampAPWM = 1;}}}
}//闹钟控制
void Alarm(void)
{if (alarmSwitch == 1) //闹钟打开{if (timeBufDec[4] == timeLimit[0] && timeBufDec[5] == timeLimit[1] && timeBufDec[6] == 0) //闹钟时间到{alarmDelay = 50;}if (alarmDelay > 0) //蜂鸣器响{alarmDelay--;BUZZER = 0;}else{BUZZER = 1;}}
}//定时器0初始化
void Timer0_Init(void)
{TMOD &= 0xF0;TMOD |= 0x01;TL0 = 0x33;       //设置定时初值TH0 = 0xFE;        //设置定时初值 500usTR0 = 1; //启动T0计时ET0 = 1; //打开T0中断EA = 1;  //打开总中断
}//定时器0中断
void Timer0_Intterupt(void) interrupt 1
{static unsigned char ACount = 0;TL0 = 0x33;      //设置定时初值TH0 = 0xFE;        //设置定时初值 500uscnt++;if (cnt >= 500) //250ms刷新一次状态{cnt = 0;dispFlag = 1;}if (lampASwitch == LAMP_ON){ACount++;if (ACount <= lampAPWM) //占空比调节{LAMPA = LAMP_ON;}else if ((ACount > lampAPWM) && (ACount <= 3)){LAMPA = LAMP_OFF;}else{ACount = 0;}}else{LAMPA = LAMP_OFF;}   }//串口初始化
void UART0_Init()
{SCON = 0x50;TMOD &= 0x0F;TMOD |= 0x20; //8位自动重装TH1  = RH_UART;TL1  = TH1;ET1  = 0; //禁止T1中断TR1  = 1; //启动T1计时ES   = 1; //打开串口中断EA   = 1; //打开总中断
}void UART0_SendByte(unsigned char dat) //串口发送单字节数据
{unsigned char time_out;time_out = 0x00;SBUF = dat;                         //将数据放入SBUF中while ((!TI) && (time_out < 100)) //检测是否发送出去{time_out++;DelayUs10x(2);}      //未发送出去 进行短暂延时TI = 0; //清除ti标志
}void UART0_SendStr(unsigned char *str, unsigned char length) //发送定长度字符串
{//  unsigned char *tmp;unsigned char cnt = 0;
//    unsigned char length = 0;//    tmp = str;
//    while (*(tmp++) != '\0')
//    {//        length++;
//    }while (cnt < length) //发送长度对比{UART0_SendByte(*str); //发送单字节数据str++;       //指针++cnt++;        //下一个++}
}//串口中断
void UART0_Interrupt() interrupt 4
{if (TI){TI = 0;}if (RI){RI = 0;if (SBUF == '*'){i = 0;}R_buf[i] = SBUF;SBUF = SBUF;i++;if (i == 4){i = 0;if (R_buf[0] == '*' && R_buf[3] == '#'){if (R_buf[1] == 'A'){if (R_buf[2] == 'C'){lampASwitch = LAMP_OFF;lampAPWM = 0;}else if (R_buf[2] == '1'){lampASwitch = LAMP_ON;lampAPWM = 1;}else if (R_buf[2] == '2'){lampASwitch = LAMP_ON;lampAPWM = 2;}else if (R_buf[2] == '3'){lampASwitch = LAMP_ON;lampAPWM = 3;}autoFlag = 0;}else if (R_buf[1] == 'M'){if (R_buf[2] == 'A'){autoFlag = 1;}else if (R_buf[2] == 'M'){autoFlag = 0;}}}}}
}

仿真演示视频:
https://www.bilibili.com/video/BV1ug411o7k4/

实物演示视频:
https://www.bilibili.com/video/BV1aG411g7yG/

基于51单片机的智能护眼台灯带闹钟功能proteus仿真原理图PCB相关推荐

  1. 基于51单片机的智能遥控晾衣架温度湿度光强检测proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前温度/湿度/光强/晾衣架状态 2.支持手动/自动两种模式 3.自动模式下,当温度>10/湿度<90/光强 ...

  2. 基于51单片机的智能环境监测光强火焰有害气体检测proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.系统实时监测当前的有害气体状态/光强信息/火焰状态 2.当有害气体浓度超过阈值或检测到火焰时,蜂鸣器报警,并启动风扇进行通风 3.按键可设定阈 ...

  3. 基于51单片机的智能停车场泊车车位系统LCD12864显示proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD12864液晶实时显示当前车位状态 2.蓝牙串口间隔5秒发送一次当前车位状态 3.系统通过LCD12864大屏显示车位的状态 4.采用D ...

  4. 基于51单片机的智能护眼台灯设计proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前时间/环境光强/工作模式 2.当检测到人体距离灯光太近时,蜂鸣器报警提醒 3.当使用时间超过设定阈值时,蜂鸣器报 ...

  5. 基于STM32单片机的智能家居窗户窗帘控制系统红外遥控proteus仿真原理图PCB

    功能: 0.本系统采用STM32F103RCT6作为单片机 1.LCD1602液晶实时显示当前时间/窗帘状态/光照强度 2.支持手动按键/定时/光强检测三种模式控制窗帘 3.'设置'键进入设置界面 4 ...

  6. 基于51单片机的万年历(带温湿度)带闹钟功能proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶显示当前时间和温湿度 2.按键可切换页面,显示农历,显示闹钟设置 3.当时间到达设定闹钟时间时,蜂鸣器报警 原理图: PCB ...

  7. 基于51单片机的宠物自动猫粮狗粮喂养机proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 功能简介: 1.LCD1602实时显示当前时间/温湿度/食物重量 2.当时间到达设定喂食时间,启动步进电机进行投喂,投喂量达到预先设定好的重量后停 ...

  8. 基于51单片机煤气天然气有毒气体检测系统蓝牙手机通信proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.系统采用LCD1602作为显示液晶,可以实时显示气体的检测情况以及其他功能设置信息 2.检测有毒气体传感器用的是MQ-4系列传感器 3.蜂鸣器和L ...

  9. 基于51单片机的语音控制GSM短信报警密码锁proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.输入密码正确,屏幕提示OK:输入密码错误,蜂鸣器LED声光报警 2.连续三次输入密码错误,屏幕提示LOCK锁住,并通过GSM发送报警短信 3. ...

最新文章

  1. Oracle数据库名与Oracle实例名的关系
  2. python默认参数惹得祸
  3. wilkinson--生成Wilkinson特征值测试矩阵
  4. DCOM 示例:演示如何远程调用 COM 对象
  5. config之安全(用户认证)
  6. cmmi文档_实施CMMI过程改进的框架介绍
  7. python编写表白程序_python如何写出表白程序
  8. 我的C++开发工具链
  9. mysql ef 一对多 更新数据库_Entity Framework_成功针对多种数据库使用实体框架(EF)...
  10. a href=javascript:;/a
  11. 752. [BJOI2006] 狼抓兔子
  12. mysql 查询一年中每个月份的数据量
  13. 学写网站(二)前端配置之glup
  14. TMS320F280049C 串行通信接口Serial Communications Interface (SCI)之RS485通信(多摩川编码器)
  15. NLP实战 | BERT文本分类及其魔改(附代码)
  16. 笔记本cpu降压 XTU
  17. Win10在BIOS中如何启用虚拟化(VT)
  18. PHP开发环境phpnow的详细安装步骤
  19. 学习Pandas(Kaggle)
  20. 12306html布局,12306无法登陆怎么办

热门文章

  1. matlab根据数值画等高线,关于matlab画等高线图
  2. zigbee组网过程浅析
  3. 如何从零到一掌控习惯?
  4. C语言中中bool类型报错解决
  5. 柔性电子拥有改变地球的能力吗?
  6. 注塑模具的五大特点,你知道吗?
  7. idea打包生成generated文件,强迫症就很烦
  8. 循环赛日程安排(C语言)
  9. ZLMediaKit + wvp-GB28181-pro部署(windows64位)
  10. 网易微专业python实用技能_网易云课堂微专业大促 抄底价学习职业技能