内容发布更新时间 : 2024/12/23 5:21:01星期一 下面是文章的全部内容请认真阅读。
3.3程序模块
整个控制程序可以分为测光照、测距以及定时三个子模块。
光照检测模块程序在可以在主程序中完成,因此在此主要阐述测距模块和定时模块。因为在定时这个模块中,需要用到中断这个概念,故而需要对中断流程有一定的了解。
3.3.1超声波测距模块
在测距模块的功能开始启动后,在这里需要一个位置标志位,故而选择了定时计数达到1s的位置,在达到这个位置的时间时,开始发射超声波,同时也要开启定时器(T1)和外部中断(0)。如果时间没有到1s。就返回继续计数定时。如果外部中断被触发,表示发出的超声波返回了,定时器(T1)停止,计算所测距离。反之,若没有外部中断触发,则需返回,继续发射超声波。在计算所测距离时,若距离小于25cm,报警发声电路发出提示音。反之,距离若大于25cm,返回主程序,进行下一个功能。超声波测距模块流程图如下图所示。
图3-2 测距模块流程图
18
3.3.2 定时模块
定时子模块可提供定时功能,在单片机控制系统中实现定时,通常有以下几种方法可供选择:
(1)软件定时。软件定时也就是累加单片机中的软件运行指令所需要耗费的时间,从而达到所需的定时效果。这种方法一般是运用循环程序嵌套来实现的,也可以是循环一个程序。该办法优缺点并存。优点主要有定时时间较精确,也不需要附加新的一个电路。缺点是需要占用CPU内存,故而在定时时间长度较长的情况下不能采用。
(2)硬件定时。硬件定时主要是附加一个硬件电路来完成所需的定时,该方法不占用CPU运行时间,故而可以用来完成较长时间的定时。但是需要调节电路元件参数,在实际的运用中不够灵活。
(3)可编程定时器定时。通过单片机内部时钟脉冲的计数是该方法的主要手段。本定时方法可以修改计数值从而改变定时时间,使用方便灵活。
本设计主要是通过定时器(T0),工作方式为方式1,来实现视力保护器的定时模块的。先设置两个变量,秒变量S,分钟变量M。单片机的初始定时时间为45分钟,使用定时器T0定时3ms,然后通过变量递增。20次后中断为1s,然后秒变量S递增。递增60次后,分钟变量递增。直至递增45次,然后设置标志位。报警发声电路发出提示音,提示学习时间已达45分钟,可以休息了。使用者关闭电源,休息片刻。若再次使用视力保护器时,就开启电源。T0流程图如图3-3所示。
19
图3-3 定时模块流程图
3.3.3外部中断模块定时模块
当中断开启后,检测的超声波的个数加1。如果超声波的个数到2,则允许定时器1中断,同时开启定时器1并且允许中断0。此时回波的标志位置1,超声波的个数赋值为0,然后返回主程序;若超声波的个数不到2,则直接返回主程序以进行其他功能的检测。中断流程图如图3-4所示。
20
图3-4 外部中断模块流程图
21