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

原理图:

PCB:

主程序:

#define __MAIN_C
#include <reg52.h>
#include "main.h"//变量定义
bit dispFlag = 1;
bit setFlag = 0;
bit alarmFlag = 0;
unsigned char alarmTimeCnt = 0;
unsigned char setIndex = 0;
unsigned char timeLimit[2] = {0, 1};
int lightValue;
char dispMode = 0;
bit autoFlag = 0;
bit lampASwitch;
unsigned char lampAPWM = 2;
unsigned int time500us = 0;
unsigned char second = 0;
unsigned int minute = 0;void main()
{//初始化LCD_Init();DS1302_Init();Timer0_Init();DelayMs(20);//开机显示LCD_DispStr(0, 0, "    Welcome!    ");DelayS(1);LCD_Clear();DS1302_ReadTime();DispNormal(setIndex);lampASwitch = ON;while(1){// LCD1602液晶显示if (dispFlag == 1){dispFlag = 0;if (lampASwitch == ON) //灯光打开{LampCtr(); //灯光控制}if (alarmFlag == 1) //响铃1s{BUZZER = ON; //蜂鸣器报警alarmTimeCnt++;if (alarmTimeCnt >= 4){alarmTimeCnt = 0;alarmFlag = 0;}}else{BUZZER = OFF; }if (setFlag == 0) //非设置状态{DS1302_ReadTime();if (dispMode == DISP_NORMAL){DispNormal(setIndex);}else if (dispMode == SET_TIME_LIMIT){DispSetLimit(setIndex);}}}if (lampASwitch == ON) //灯光打开状态{if (minute >= 60 * timeLimit[0] + timeLimit[1]) //时间到设定阈值提醒一次{minute = 0;alarmFlag = 1;}if (IRFLAG == 0) //距离太近提醒一次{alarmFlag = 1;}}else{second = 0;minute = 0;alarmFlag = 0;BUZZER = OFF;}KeyProcess(); //按键检测和处理}
}void LampCtr(void)
{lightValue = 99 - 99 * ReadADC1(AIN0_GND) / 255; //读取当前光照强度if (autoFlag){if (lightValue <= 30){lampAPWM = 4;}else if (lightValue > 30 && lightValue <= 60){lampAPWM = 3;}else{lampAPWM = 2;}}
}void Timer0_Init(void)
{TMOD &= 0xF0;TMOD |= 0x01;TL0 = 0x33;       //设置定时初值TH0 = 0xFE;        //设置定时初值 500usTR0 = 1; //启动T0计时ET0 = 1; //打开T0中断EA = 1;  //打开总中断
}void Timer0_Intterupt(void) interrupt 1
{static int cnt = 0;static unsigned char ACount = 0;static unsigned int time500us = 0;TL0 = 0x33;       //设置定时初值TH0 = 0xFE;        //设置定时初值 500uscnt++;if (cnt >= 500) //250ms刷新一次状态{cnt = 0;dispFlag = 1;if (setFlag == 1){LCD_WriteCommand(0x0F, 0);LCD_WriteCommand(0x0F, 0);}else{LCD_WriteCommand(0x0C, 0);LCD_WriteCommand(0x0C, 0);}}if (lampASwitch == ON) //灯光PWM控制{ACount++;if (ACount <= lampAPWM) //占空比调节{LAMPA = ON;}else if ((ACount > lampAPWM) && (ACount <= 4)){LAMPA = OFF;}else{ACount = 0;}}else{LAMPA = OFF;}   if (lampASwitch == ON){//灯开启后计时time500us++;if (time500us >= 2000){time500us = 0;second++;if (second >= 60){second = 0;minute++;}}}
}

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

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

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

  1. 基于51单片机的智能蓝牙路灯街灯控制系统proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.液晶实时显示时间/环境光强/工作模式 2.每隔5s向蓝牙串口发送一次信息 3.支持路灯故障检测 4.工作时间18~24时,两个路灯同时点亮,24时 ...

  2. 基于51单片机的智能饮水机烧水控制系统proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前温度和设定温度 2.当温度到达100℃时,蜂鸣器报警提醒水烧开了 3.按键可更改预设温度值,当温度低于设定温度5 ...

  3. T047基于51单片机全自动智能洗衣机烘干脱水浸泡proteus仿真原理图PCB

    功能: 0.本项目采用STC89C52作为单片机系统的控制MCU 1.系统支持速洗.标准洗.浸泡洗.脱水和烘干五种模式 2.按下开关键显示"FF",此时按下启动键可进入水位设置,再 ...

  4. 基于51单片机的16键电子琴音乐盒设计proteus仿真原理图程序

    功能: 0.本项目采用STC89C52作为单片机系统的控制MCU 1.LCD1602液晶实时显示时间和当前工作模式 2.支持电子琴模式和歌曲模式(内置8首歌曲) 3.短触'设置/切换'键可切换工作模式 ...

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

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前时间/工作模式/灯光亮度 2.具备闹钟功能,到达闹钟时间,蜂鸣器报警 3.自动模式下,有人灯亮,人离开后15s, ...

  6. 基于51单片机声音噪声分贝检测采集显示proteus仿真原理图PCB程序设计

    硬件设计 (末尾附文件) 功能说明: 1.基于STC89C51/52(与AT89S51/52.AT89C51/52通用)单片机作为主控制器 2.采用LCD1602液晶显示屏实时显示分贝值: 3.使用小 ...

  7. 基于51单片机的水温温度PID算法控制系统proteus仿真原理图PCB

    1.本系统采用STC89C52作为单片机 2.采用液晶LCD1602液晶实时显示相关数据 3.采用矩阵键盘可设置PID相关参数 4.采用L298驱动功率电阻模拟加热过程 5.当温度超过设定值的一定范围 ...

  8. 基于51单片机电子秤称重系统10kg量程proteus仿真原理图PCB

    功能: 1.本系统采用STC89C52作为单片机 2.本系统LCD1602液晶实时显示时间和当前重量 3.四个功能按键其中,按'设置'键进入时间设置,按'去皮'键实现去皮功能 4.系统设置有重量阈值, ...

  9. 基于51单片机太阳能风能太阳能风光互补路灯proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.手动模式下,由手动开关控制小灯的亮灭 2.自动模式下,由光强决定小灯的亮灭 3.本系统具备太阳能和风能两种方式给系统的锂电池充电,锂电池再经过升压 ...

最新文章

  1. Python 比特币 教程 之一:创建机器人
  2. 了解CUDA计算(一)
  3. shell 调试 2例
  4. 一名即将大三的小伙子在疫情期间的思考与总结
  5. ANTLR入门:构建一种简单的表达语言
  6. python网站框架下载_最受欢迎的7款Python开源框架总结,忍不住收藏了~
  7. iOS 警告收录及科学快速的消除方法
  8. ssh登录很慢,登录上去后速度正常问题的解决方法
  9. android大智慧安装目录,大智慧的文件目录结构
  10. 亮度对比度色调饱和度最佳_色彩三要素之—— “饱和度”
  11. 面向对象方法及软件工程实验二
  12. 我的世界服务器如何修改权限设置,我的世界设置成员权限 | 手游网游页游攻略大全...
  13. matlab xcorr lags,[转载]matlab中xcorr的用法
  14. 删除的备忘录怎么恢复
  15. 【自建NAS】Ubuntu Server 配置 WIFI 连接
  16. ECS7天训练营(新人路线)Day4----笔记
  17. 中国移动支付报告:领跑全球 前景广阔
  18. 【zephyr】 设备驱动和设备模型_apds9660 接近(Proximity)传感器(二)
  19. 移植一个抖音贴纸组件到Flutter
  20. 将物流行业送往智能时代,菜鸟网络的配送车已经上路了

热门文章

  1. mysql 连续七天不登录_使用MySQL窗口函数巧妙的解决用户连续登录天数等问题
  2. Python如何把图片转为Base64字符串
  3. 在vsc中运行html
  4. 求2个数的最小公倍数
  5. Android 应用链接详解
  6. springboot中controller层代码优雅写法
  7. 关于 Web 可访问性的神话
  8. 一文读懂resource.arsc文件结构
  9. Flask框架之 g是什么
  10. DDM(Drift Detection Method)