基于单片机的视力保护仪的设计与实现
2021-12-21周红亚
周红亚
(常州刘国钧高等职业技术学校,江苏常州 213000)
1 引言
根据国家卫生委员会的统计,2020年,中国儿童和青少年的总体近视率为52.7%。其中,6岁儿童为14.3%,小学生为35.6%,初中生为71.1%,高中生为80.5%。其中,将近10%的近视学生为高度近视,且比例随年纪的增长而增加。幼儿园6岁儿童高度近视率为1.5%,高中为17.6%。高度近视的危害不容忽视[1]。近视作为一种常见的现代疾病,几乎没有办法治愈。目前的激光手术,也有可能出现一些并发症,如眩光或眩目等,手术后也可能出现视力反弹的情况。在这种情况下,急需开发一种视力保护仪,从根源上解决青少年近视的问题。本设计采用STC89C51单片机作为该视力保护仪的核心控制芯片,利用超声波测距传感器测出人脸部与书桌桌面的距离,当小于设定距离时发出报警声提醒;通过单片机内部定时器计时,当使用时间达到设定时间时报警器自动发出蜂鸣声提示,提醒使用者注意休息。
2 系统总体结构设计
根据设计要求,本系统主要由单片机最小系统STC89C51,时钟电路中的DS1302芯片,超声波模块中的HC-SR04,LCD1602这四大芯片构成(图1)。其余部分通过按键电路,蜂鸣器电路,LED电路,电源接口来实现其功能。DS1302时钟电路主要是当按键电路设置时间时修改DS1302时钟芯片内的时间,当读取时间时DS1302将时间传递给51单片机。超声波模块将测出的距离信号传递给单片机。LCD1602主要负责信息在屏幕上的显示。按键电路主要负责与单片机进行通信,设置各项参数。蜂鸣器与LED灯电路主要由单片机进行控制输出提醒信号。
图1 系统总体结构
3 系统硬件设计
3.1 单片机最小系统
51单片机最小系统是以最少的元器件组成能够让单片机正常工作的系统电路。它由三部分组成:复位电路,晶振电路,以及供电电源4.5V~5.5V之间(图2)。这三个部分是必不可少的,缺少一个单片机就不能工作。复位电路是手动复位,按下按键,它会提供信号给单片机,让单片机从头开始执行。上电复位指的是每当我们打开电源的时候,它会自动提供复位信号,让程序从头开始执行。晶振电路给单片机提供时钟信号,一般采用11.0592MHZ或者12MHZ。两个瓷片电容,值在10PF-40PF之间,两个设定的值要一样,协助晶振进行起振。
图2 单片机电路
3.2 时钟电路
时钟电路采用的DS1302时钟芯片,它能够对年月日,时分秒进行计时,并且有闰年补偿的功能。当电源接口没有插电,或者电源接口的开关没打开,会自动使用3V的电池进行供电。当电源接通时,会自动切换到主电源进行供电,当电源接口断开,DS1302时钟芯片仍能继续工作。若没有外电直流电源,当电源接口断开,DS1302时钟芯片就停止工作,再次接通电源时,将出现错误时间,所以需要外接一个直流电源供电(图3)。
图3 时钟电路
3.3 超声波测距电路
超声波测距电路采用HC-SR04超声波传感器,它可以提供2cm~4m的距离测量,该模块主要包括发射器、接收器以及控制电路。发射器向某一方向发送超声波,同时开始计时,超声波遇到障碍物就立即返回,当接收器接收到反射波时立即停止计时,并通过Echo端输出高电平,超声波从发送到接收的时间就是Echo端持续输出高电平的时间[2]。根据计时器获得的时间以及超声波在空气中传播的速度就可以计算出相应的距离。超声波模块1号引脚为VCC接5V电源;2号引脚Trig为触发控制信号输入,接单片机P2.7引脚;3号引脚Echo为回响信号输出,接P2.6引脚;4号引脚GND为接地(图4)。
图4 超声波测距电路
3.4 LCD显示电路
LCD显示电路采用LCD1602液晶屏对时间、距离等信息进行显示。将LCD上的D0到D7引脚接至单片机的P0口,RS、R/W及E引脚分别接单片机P1.4、P1.5及P1.6,VL端接可变电阻进行对比度调节(图5)。
图5 LCD显示电路
3.5 按键电路
按键电路主要由四个按键组成,单片机引脚P1.0接设置键,在系统初始化时进入设置模式,可以设置学习时间、看书距离等;P1.1接加值键,每按一下数据加一;P1.2接减值键,每按一下数据减一;P1.3接退出键,按下此键,退出设置模式(图6)。
图6 按键电路
3.6 报警电路
报警电路主要由蜂鸣器和发光二极管构成(图7)。当到达设定时间,它会发出声光提醒。比如读书时间设置成50分钟,当到达50分钟,单片机通过P2.0引脚输出低电平,发光二极管发光,通过P2.1引脚输出一定频率的方波信号经三极管驱动实现声音报警;超声波模块检测的距离小于所设置的距离时,单片机同样驱动声光报警。
图7 报警电路
4 系统软件设计
4.1 整体设计
系统上电初始化之后,显示初始化界面,包括当前年月日参数、超声波测距参数、时间参数和倒计时参数。第一次按下设置按钮,通过加值和减值键校准当前的年月日时间,若无需设置其他,可按退出按钮直接退出。第二次按下设置按钮可以设置阅读报警距离,第三次按下设置键设置阅读最长时间。设置完成后通过调用测距子程序以及倒计时子程序,传入相应的设置参数,通过与检测到的数据进行比对判断,当读书距离小于设定距离或倒计时结束时,调用报警子程序。程序流程图如图8所示。
图8 整体设计流程图
4.2 按键、LED灯、蜂鸣器处理程序
首先定义按键、灯、蜂鸣器、继电器等的引脚,调用按键检测函数,当设置按键按下时,通过调用延时函数来进行延时消抖再次确认按键按下,执行相应的灯亮灭、蜂鸣器响停操作。
4.3 HC-SR04超声波测距程序
首先定义HC-SR04传感器的Echo和Tring两个引脚分别为Rx和Tx,因需要调用单片机内部定时器0进行定时,所以对定时器0进行初始化。然后调用HC_Start()方法启动超声波模块,通过将Tx置1发出超声波,当接收端Rx接收到数据不为0时开启定时计数,等待超声波结束,关闭定时器,并通过s=v*t计算出双程距离,再除以2得到阅读距离。
图9 超声波测距程序
4.4 DS1302时钟控制
定义一个数组变量time用于存储秒、分、时、日、月、星期、年,调用Writedata,通过循环按位进行数据写入,调用Readdata,通过循环按位读取数据并将其转换为十进制数,调用Read_time函数,读取相应地址的数据将其转换为秒、分等数据存入数组。
5 仿真调试与系统测试
5.1 仿真调试
本系统采用在Keil环境下编写程序并编译调试,生成Hex目标文件,同时在Proteus仿真软件中绘制电路仿真图,导入生成的hex文件,进行仿真调试,如图10所示。当对其上电后,LCD显示屏将显示默认参数,通过设置按钮、加值键、减值键进行配合设置相应日期、时间以及距离高度和学习时间。设置完成后退出设置界面,系统开始正常工作,当实际距离小于设定值或者学习时间达到设定值,发光二极管发光以及蜂鸣器响。在仿真运行过程中由于超声波测距无法模拟,因此通过模拟数据进行调试。
图10 仿真电路
5.2 系统测试
根据硬件原理图,进行元器件购买、组装、焊接完成硬件电路的制作,并烧入软件程序,在真实环境中进行测试。根据统计,青少年看书时眼睛距离书本不低于30cm,每次看书时间不超过20min,因此本次阅读距离设置为33cm,阅读时间设置为20min。当距离小于33cm时蜂鸣器发出提醒。在实际测试过程中,当超声波传感器检测到距离小于33cm时,蜂鸣器响一声进行提醒,当阅读时间到20min时,蜂鸣器发出持续声响,当按下退出按钮,蜂鸣器停止。
6 结语
本设计以STC89C51单片机为核心,通过超声波传感器监测距离以及定时提醒,为青少年纠正坐姿、保护视力提供了有效的提醒。本系统结构简单、性价比高、维护方便,具有良好的实用价值。