功能介绍:
0.本系统采用STC89C52作为单片机
1.LCD1602液晶实时显示当前时间/灯光亮度/姿势检测
2.姿势不正确时,蜂鸣器报警,同时语音提醒
3.具备久坐提醒功能,到达提醒时间,蜂鸣器报警,同时语音提醒
4.有人时根据环境光强调整台灯亮度,人离开后,灯光调到最暗,当回到座位自动变亮,以节约用电
5.可通过按键更改当前时间
6.采用DC002作为电源接口可直接输入5V给整个系统供电

原理图:

PCB :

主程序:

#define __MAIN_C
#include <reg52.h>
#include "main.h"#define ALARM_TIME 1 //定时提醒时间,最大59分钟bit dispFlag = 1;
bit setFlag = 0;
unsigned char setIndex = 0;
unsigned char lightValue;
char dispMode = NORMAL;
bit bodyFlag = 0;
bit postureRightFlag = 0;unsigned char lampAPWM = 1;
unsigned int time500us = 0;
unsigned char timeMinuteBuf = 0;
unsigned char timeSecondBuf = 0;unsigned char alarmDelay = 0;void main()
{//初始化UART_Init(); //初始化串口Timer0_Init(); //初始化定时器LCD_Init();DS1302_Init();DelayMs(20);//开机显示LCD_DispStr(0, 0, "    Welcome!    ");DelayS(2);LCD_Clear();DS1302_ReadTime();timeMinuteBuf = timeBufDec[5]; //重置计时timeSecondBuf = timeBufDec[6]; //重置计时while(1){// LCD1602液晶显示if (dispFlag == 1 && setFlag == 0){dispFlag = 0;DS1302_ReadTime();if (BODY_PIN == 0) //有人{bodyFlag = 1; //有人标志LampCtr();if (POSTURE_PIN == 0) //姿势正确{postureRightFlag = 1; //姿势正确标志}else{postureRightFlag = 0; //姿势不正确标志UART_SendStr("请注意坐姿\r\n", 12); //发送数据DelayS(3);}if (timeMinuteBuf >= (60 - ALARM_TIME)) //分钟大于(60 - ALARM_TIME)的处理{if (timeBufDec[5] == (timeMinuteBuf + ALARM_TIME - 60)) //ALARM_TIME分钟到{if (timeBufDec[6] == timeSecondBuf){alarmDelay = 10;               //蜂鸣器报警UART_SendStr("请注意休息\r\n", 12); //发送数据timeMinuteBuf = timeBufDec[5]; //重置计时timeSecondBuf = timeBufDec[6]; //重置计时}}}else{if (timeBufDec[5] == timeMinuteBuf + ALARM_TIME) //ALARM_TIME分钟到{if (timeBufDec[6] == timeSecondBuf){alarmDelay = 10;               //蜂鸣器报警UART_SendStr("请注意休息\r\n", 12); //发送数据timeMinuteBuf = timeBufDec[5]; //重置计时timeSecondBuf = timeBufDec[6]; //重置计时}}}}else{bodyFlag = 0; //没人lampAPWM = 1; //将台灯亮度调到最暗timeMinuteBuf = timeBufDec[5]; //重置计时timeSecondBuf = timeBufDec[6]; //重置计时}if (dispMode == NORMAL){DispNormal(setIndex);}Alarm();}KeyProcess();}
}void LampCtr()
{lightValue = 99 - 99 * ReadADC1(AIN0_GND) / 255; //读取当前光照强度if (lightValue <= 30){lampAPWM = 3;}else if (lightValue > 30 && lightValue <= 60){lampAPWM = 2;}else if (lightValue > 60){lampAPWM = 1;}}void Alarm(void)
{if (alarmDelay > 0) //蜂鸣器响{alarmDelay--;BUZZER = 0;}else{BUZZER = 1;}
}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 unsigned char ACount = 0;static unsigned int cnt;TL0 = 0x33;      //设置定时初值TH0 = 0xFE;        //设置定时初值 500uscnt++;if (cnt >= 500) //250ms刷新一次状态{cnt = 0;dispFlag = 1;}ACount++;if (ACount <= lampAPWM) //占空比调节{LAMPA = LAMP_ON;}else if ((ACount > lampAPWM) && (ACount <= 3)){LAMPA = LAMP_OFF;}else{ACount = 0;}}/************************* 串口配置 *************************/
void UART_Init(void)
{SCON = 0x50;TH2 = 0xFF;TL2 = 0xDB;RCAP2H = 0xFF;  //(65536-(FOSC/32/BAUD))   BAUD = 9600 FOSC = 11059200RCAP2L = 0xDB;/*****************/TCLK = 1;RCLK = 1;C_T2 = 0;EXEN2 = 0;/*****************/TR2 = 1;ES   = 0; //打开串口中断EA   = 1; //打开总中断}/************************* 串口发送字节 *************************/
void UART_SendByte(unsigned char dat) //串口发送单字节数据
{unsigned char time_out;time_out = 0;SBUF = dat;                        //将数据放入SBUF中while ((!TI) && (time_out < 100)) //检测是否发送出去{time_out++;DelayUs10x(2);}      //未发送出去 进行短暂延时TI = 0; //清除ti标志
}/************************* 串口发送字符串 *************************/
void UART_SendStr(unsigned char *s, unsigned char length)
{unsigned char num;num = 0x00;while (num < length) //发送长度对比{UART_SendByte(*s); //放松单字节数据s++;            //指针++num++;            //下一个++}
}

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

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

基于51单片机的带坐姿检测语音提醒智能护眼台灯proteus仿真原理图PCB相关推荐

  1. 基于51单片机红外遥控人体感应自动车库门控制设计(程序+Proteus仿真+原理图+PCB图+参考论文+开题报告+任务书等)

    一.硬件方案 单片机的红外遥控人体感应自动门控制系统设计的实现主要有电源5V供电.单片机最小系统.红外感应遥控模块,红外一体接收头,按键电路,步进电机驱动电路,指示灯电路组成.. 二.设计功能 1.如 ...

  2. 基于51单片机的高速汽车列车汽车速度测量及报警装置proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶显示测量车速,同时蓝牙串口上报速度测量结果 2.红外避障模块1触发,启动测速定时器,红外避障模块2触发,停止定时器,完成测速 ...

  3. 基于51单片机霍尔转速测量温度电机保护PWM调速设计proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示温度,PWM档位值和当前转速 2.可通过按键控制电机启动,停止,正转,反转,加速,减速 3.温度超过50℃蜂鸣器报警,且 ...

  4. 54、基于51单片机饮水机温度水位控制无线蓝牙APP控制报警系统设计(程序+原理图+PCB源文件+Proteus仿真+参考论文+开题报告+元器件清单等)

    方案的选择 方案一:采用51单片机作为控制核心,配合无线蓝牙模块.水温加热模块继电器开关.基于Dallas单线数字式的DS18B20温度传感器模块.蜂鸣器报警模块.按键模块.LCD1602液晶显示器模 ...

  5. T027基于51单片机的智能窗帘窗户控制系统proteus仿真原理图PCB

    功能: 0.本系统采用单片机STC89C52作为系统的主控芯片 1.系统采用LCD1602液晶实时显示当前时间/窗帘状态/光照强度 2.系统具有四个功能按键,支持手动按键/定时/遥控三种模式控制窗帘 ...

  6. 基于51单片机的6位毫秒百分秒级秒表倒计时器proteus仿真

    #include <AT89X52.H> #define uint unsigned int //宏定义无符号整型数据 #define uchar unsigned char //宏定义无 ...

  7. 51单片机计算器_基于51单片机的倒计时温度检测报警器

    基于51单片机的倒计时温度检测报警器 学习单片机断断续续半年了,在学长学姐的教学帮助下,完成了51单片机的入门学习,开始实践做项目,在一周时间内设计和制作出个人项目.起初,我设计和选择的是12864显 ...

  8. 基于51单片机的倒计时温度检测报警器

    广西河池学院 广西高校重点实验室培训基地 系统控制与信息处理重点实验室 本篇博客来自河池学院:OpenWRT无线路由组 写作时间:2020年8月12日16:00:03   基于51单片机的倒计时温度检 ...

  9. 基于51单片机的多路温度检测调节串口传输系统

    本设计基于51单片机的多路温度检测调节串口传输系统(仿真+源码+视频讲解) 仿真:proteus8.9 程序编译器:keil 4 编程语言:C语言 编号C0009 [腾讯文档]C0009 网盘链接 资 ...

  10. 基于51单片机的SHT11温湿度检测调节系统(LCD12864显示)

    目录 具体实现功能 设计介绍 51单片机简介 资料内容 仿真实现(protues8.7) 程序(Keil5) 全部资料(压缩文件) 具体实现功能 (1)实时检测温湿度值,LCD12864分别显示温度值 ...

最新文章

  1. 对 Thinking in java 4th Edition I/O DirList.java的疑问
  2. MyEclipse2014安装svn插件
  3. 单链表按顺序插入节点
  4. java垃圾回收到老年代次数,Java垃圾回收之回收算法
  5. 用Vue来实现购物车功能(二)
  6. 不实例化图片,获取图片宽高的方法(vb.net)
  7. while求和java,while语句基本练习(求和思想,统计思想)
  8. 离职 Oracle 首席工程师怒喷:MySQL 是“超烂的数据库”,建议考虑 PostgreSQL
  9. SQL数据库面试题以及答案(50例题)
  10. 知道创宇获CNNVD年度优秀技术支撑单位及漏洞预警报送专项奖
  11. 随机森林python反欺诈_携程金融自动化迭代反欺诈模型体系
  12. UVA-816 Abbott's Revenge (bfs)
  13. JVM 垃圾回收机制主要原理
  14. python交集和补集的符号_python数组并集交集补集
  15. FIL是否值得长期持有以及未来评估
  16. 微信小程序实现圆形菜单弹出选中动画
  17. PMI推出新认证:PgMP 项目集管理
  18. 哪个ppt模板网站好
  19. Linux——vi/vim文本编辑器、用户管理、关机重启的相关命令
  20. 2022年最新浙江道路运输安全员真题题库及答案

热门文章

  1. 设计模式快速入门——结构型模式之装饰者模式(Java)
  2. 修复 WordPress 的 is_dir(): open_basedir restriction in effect. 错误
  3. 2021年税收优惠政策,如何解决高额的税负压力?
  4. 【三维重建】特征检测与匹配
  5. python中奇奇怪怪的注释方式
  6. [工业自动化-1]:PLC架构与工作原理
  7. 钟表,可以回到起点,却已不是昨天。使人成熟的是经历,而不是岁月
  8. 家具协会理事长称达芬奇合法
  9. 安捷伦Agilent B1500A半导体测试仪
  10. 【NOIP普及组】1961:【13NOIP普及组】计数问题