西安文理学院课程设计报告 图3.5 段码驱动器74LS245
3.2.4 蜂鸣器驱动电路
发音部分是通过三极管放大驱动蜂鸣器工作,再通过软件这时产生等时时间方波驱动蜂鸣器发出间断嘀声,这样就可以省去硬件振荡电路,降低成本。如图3.6所示。
图3.6 蜂鸣器驱动电路
3.3 软件部分的设计 3.3.1 主程序部分的设计
程序部分主要采用了程序结构的模块化设计,避免了一些函数的不必要的重复书写,使程序变得单间易懂。程序在执行时,主程序要须通过调用子函数就可完成相应的功能 。主程序流程图如下图3.7。
第 6 页
西安文理学院课程设计报告
图3.7 主程序流程图
3.3.2 中断定时器的设置
数字电子钟设计中主要使用定时器T0中断ET0,利用ET0中断进行计时时间的自增,从而实现计时功能。
AT89C51有两个通用定时/计数器。两者均可配置为定时器或事件计数器。另外增加了定时器T0/T1,溢出时T0/T1脚自动翻转的功能选项。 用作“定时器”功能时,每经过一个机器周期,寄存器值加1。 用作“计数器”功能时,寄存器在对应的外部输入管脚T0/T1上每发生一次1到0的跳变时加1。使用该功能时,外部输入每个机器周期被采样一次。 如图3.8所示。
图3.8 定时器工作原理[1]
设计中采用了中断方式1作为定时中断,其定时计数初值的设置可由以下公式计算得到,中断服务流程图如下图3.9。
第 7 页
西安文理学院课程设计报告
X?2?t16
TcyX:计数初值 t:定时时间 Tcy:机器周期 [1]
图3.9 中断服务流程图
3.3.3 闹钟子函数
闹钟时间的判别主要是通过设定时间与实时时间对逐位对比确定是否进行闹铃。
其工作流程图如下图3.10。
第 8 页
西安文理学院课程设计报告
图3.10 工作流程图
3.3.4 计时函数
第 9 页
西安文理学院课程设计报告
计时函数部分,主要是通过单片机定时中断来计时,复产生一次中断标志位FLAG加1,当FLAG加满20次为1秒,然后把FLAG清0把秒存储单元加1。然后再依次判断分、时。其流程图如下图3.11。
图3.11 计时流程图
3.3.5 键盘扫描函数
第 10 页