数字时钟是利用数字电子技术实现计时的电子设备, 它可以采用晶振、计数器、译码器、显示器和电源等硬件电路实现。该方法设计的数字时钟电路结构较复杂、稳定性较差、体积较大.
以下为本篇论文正文:
摘 要:本文设计了一款数字时钟, 通过在Keil软件进行程序设计, 在Proteus搭建仿真电路, 系统联调, 最终实现了数字时钟显示、计时、定时、闹铃、设置等功能。本设计具有电路结构简单、成本低廉、精度较高、性能稳定等优点。通过数字时钟的设计, 对虚拟设备的教学展示及应用系统的设计开发、功能扩展具有较大的作用。
关键词:单片机; Proteus; Keil; 虚拟设备; 功能扩展;
Abstract: In this paper, a digital clock is designed. Through the Keil software program design, the simulation circuit is built in Proteus, and the system is jointly adjusted. Finally, the functions of digital clock display, timing, alarm, and setting are realized. This design has the advantages of simple circuit structure, low cost, high precision, and stable performance. The design of the digital clock plays a great role in the teaching display of virtual equipment and the design, development and function expansion of application systems.
Keyword: single chip microcomputer; Proteus; Keil; virtual device; function expansion;
一、 引言
数字时钟是利用数字电子技术实现计时的电子设备, 它可以采用晶振、计数器、译码器、显示器和电源等硬件电路实现。该方法设计的数字时钟电路结构较复杂、稳定性较差、体积较大, 因此逐步被以单片机为核心的数字时钟取代。基于单片机AT89S51的数字时钟具有体积小、精度高、稳定性好、性价比高, 便于功能扩展等优点, 为今后嵌入式数字时钟的智能化发展提供了可行性的参考方案。
二、 系统总体设计
系统设计分为硬件设计及软件设计。硬件设计分为五个部分:单片机最小系统、显示模块、闹钟指示、闹钟闹铃、功能设置。程序设计分为三个部分:时钟显示、时钟调节、闹铃设置。系统组成框图如图1所示。该数字时钟功能包括:显示时间、手动更改时间、手动开启/关闭闹铃功能、手动设置闹钟、时钟闹铃、闹铃状态指示。
图1 系统组成框图
三、 硬件仿真设计
本系统采用Proteus进行硬件仿真, 该软件能够准确展示单片机的仿真效果, 是单片机开发常用而有效的仿真软件。仿真电路如图2所示, 包括如下几个部分:
(1) 单片机最小系统:单片机能够正常工作的最小配置。因最小系统模式固定, 方便查阅学习, 这里不再详述。本设计中的最小系统硬件连接可参看图2中单片机时钟电路 (XTAL1、XTAL2) 、复位电路 (RST) 、存储器选择电路 ( ) 部分, 电源电路是将单片机VCC (40#引脚) 、VSS (20#引脚) 分别接DC+5V, GND.本着嵌入式系统开发适用、够用的原则, 根据系统功能要求, 选用单片机AT89S51作为核心控制芯片, 该款芯片能够满足本系统要求, 运行稳定, 性价比高。
(2) 显示模块:选用八位一体的共阴极数码管构成 (亦可采用八位一体的共阳极数码管) , 用于显示数字时钟当前时间、时间调节和闹铃时间, 显示格式为hh-mm-ss (时-分-秒) .段选信号a~h由单片机P1.0~P1.7控制;位选信号WEI0~WEI7由P2.0~P2.7控制。具体连接方式参看图2中数码管及其对应的网络标号部分。
(3) 闹铃指示灯:采用一个发光二极管作为闹铃指示灯, 灌电流方式。LED亮, 表示闹铃功能开启;LED灭, 表示闹铃功能关闭, 由单片机P3.1引脚控制。其中200Ω电阻起到限流作用, 防止因电流过大烧坏发光二极管。具体连接方式参看图2中的发光二极管部分。
(4) 闹钟闹铃:闹铃采用蜂鸣器装置, 由单片机P3.0引脚控制。当闹钟时间到, 蜂鸣器发出声音。具体连接方式参看图2中的蜂鸣器及其对应的网络标号。
(5) 功能设置:根据系统功能, 本数字时钟需要5个按键, 因此可以采用独立式按键。由五个非自锁按键分别与单片机P3.2~P3.6连接。按键定义及功能如表1所示。
表1 数字时钟按键定义及功能
四、 系统软件设计
本系统选用C语言编写源程序。C语言在功能性、结构性、可读性、可维护性上有明显的优势, 具有较强的可移植性。程序在Keil软件平台进行设计, 编译、调试、运行。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案, 无论用C语言还是汇编语言编程, Keil方便易用的集成环境、强大的软件仿真工具使程序调试运行事半功倍。程序通过主函数调用子函数实现数字时钟的相关功能。
图2 硬件仿真电路
(1) 主函数:主函数将定时/计数器、中断初始化后, 无限循环时间显示函数xianshi () 、时间调节函数tiaojie () 、闹铃函数naoling () .初始化过程中, 外部中断0、1开中断, 采用下降沿触发方式。定时/计数器0选用工作方式1, 定时时间单位为50ms.PT0置1是设置内部定时中断优先级大于外部中断优先级。参考程序如下:
(2) 时间显示函数:考虑单片机I/O口数量有限, 数字时钟显示时间位数较多, 与硬件连接相对应, 显示函数采用动态显示。动态显示是利用人的视觉暂留效应, 按位轮流点亮数码管, 对于八位一体的共阴数码管, 每一位轮流显示, 如果每位LED闪动的频率足够高, 就可以给人一种稳定显示的视觉效果。程序中通过数组zixing[]赋值0~9的字形代码。单片机P1口控制段选信号a~h, P2口控制位选信号, 变量h、m、s分别为时计数、分计数、秒计数。时间显示格式:hh-mm-ss.参考程序如下:
(3) 时间调节函数:判断是否有调节时间的按键按下。按下INC_H的调节小时按键, 小时加1, 当小时等于24时, 显示为0.按下INC_F的调节分钟按键, 分钟加1, 如果分钟等于60时, 显示为0.参考程序如下:
(4) 闹铃函数:当程序判断闹铃时间与时钟时间的分、时一致时, 数字时钟闹铃20秒, 参考程序如下:
五、 运行结果
仿真电路、程序设计完成后, 经过系统联调, 数字时钟具备正确显示当前时间、调整时间、闹钟闹铃功能, 达到了设计指标。系统仿真运行结果见图3.
图3 数字时钟仿真运行结果
六、 总结
通过对数字时钟的总体设计、搭建仿真电路、程序设计、系统联调, 成功设计了基于单片机的数字时钟, 最终的运行结果符合设计要求。该数字时钟具备功能可靠、性价比高、结构简单等优点。本设计适合应用于虚拟仪器的教学演示和实际的应用系统功能设计等方面, 为数字时钟的智能化发展及功能扩展提供了可行性参考方案。
参考文献:
[1]尹毅峰, 刘龙江。单片机原理及应用[M].北京:北京理工大学出版社, 2010.
[2]倪志莲。单片机应用技术[M].北京:北京理工大学出版社, 2010.
[3]彭伟。单片机C语言程序设计实训100例[M].北京:电子工业出版社, 2012.
[4]孙佳玲。基于单片机的多功能数字时钟系统设计分析[J].吉林工程技术师范学院学报, 2009 (10) :25-26.