单片机是一种微型计算机。单片机体积小功能强。单片机价格便宜。单片机使用广泛。秒表是测量时间的工具。秒表在体育比赛中使用。秒表在科学实验中使用。秒表在生产活动中使用。本文介绍基于单片机的秒表设计。这个秒表可以测量时间。这个秒表可以显示时间。这个秒表可以记录多个时间。
秒表设计需要硬件。硬件是看得见摸得着的东西。单片机是硬件核心。我们选择一种常见的单片机。这种单片机叫做AT89C51。这种单片机容易买到。这种单片机价格便宜。这种单片机资料很多。单片机内部有CPU。CPU是单片机的大脑。CPU执行各种指令。单片机内部有存储器。存储器存放程序和数据。单片机内部有定时器。定时器用来计数。定时器产生时间基准。
秒表需要显示时间。我们使用数码管显示时间。数码管是一种显示器件。数码管可以显示数字。数码管价格便宜。数码管使用简单。我们使用四位数码管。四位数码管显示四位数字。前两位显示分钟。后两位显示秒钟。例如显示1234表示12分34秒。数码管需要驱动电路。驱动电路提供电流。驱动电路保护数码管。我们使用三极管驱动数码管。三极管是一种半导体器件。三极管可以放大电流。
秒表需要输入按键。按键是控制开关。我们使用三个按键。第一个按键是开始键。按下开始键秒表开始计时。第二个按键是停止键。按下停止键秒表停止计时。第三个按键是复位键。按下复位键秒表归零。按键需要连接单片机。单片机检测按键状态。单片机知道哪个按键被按下。
秒表需要振荡电路。振荡电路产生时钟信号。时钟信号是单片机工作的节拍。我们使用石英晶体。石英晶体频率稳定。石英晶体连接单片机。单片机内部产生时钟脉冲。
秒表需要复位电路。复位电路让单片机从头开始。复位电路连接单片机。上电时单片机自动复位。按下复位键单片机也复位。
现在介绍硬件连接方法。单片机有40个引脚。这些引脚有不同功能。电源引脚接电源。电源提供5伏电压。接地引脚接地。石英晶体接两个引脚。复位电路接复位引脚。按键接三个输入引脚。数码管接八个输出引脚。这八个引脚控制段显示。还有四个引脚控制位显示。三极管连接数码管。三极管基极连接单片机。三极管集电极连接数码管。三极管发射极接地。
硬件设计完成。现在介绍软件设计。软件是程序。程序是一系列指令。单片机执行程序。程序控制单片机工作。我们使用C语言编写程序。C语言容易理解。C语言功能强大。
程序需要初始化。初始化设置单片机状态。设置定时器工作方式。设置中断允许。设置变量初始值。变量是存储数据的地方。时间变量存储当前时间。标志变量存储秒表状态。
程序需要定时器中断服务程序。定时器每隔一定时间产生中断。中断是特殊信号。单片机收到中断信号暂停当前工作。执行中断服务程序。执行完毕返回原来工作。我们设置定时器每10毫秒中断一次。中断服务程序更新计时。计数100次得到1秒钟。时间变量增加1。时间变量达到60秒归零。分钟变量增加1。
程序需要按键检测程序。单片机不断检测按键状态。开始键按下启动计时。停止键按下暂停计时。复位键按下时间归零。按键需要消抖。消抖防止误动作。按键按下时触点会抖动。程序延时一段时间再检测。
程序需要显示程序。显示程序将时间送到数码管。时间变量是二进制数。需要转换成十进制数。十进制数分成四位。每一位对应一个数字。数字转换成段码。段码控制数码管显示。单片机依次显示四位数字。利用视觉暂留效应。看起来四位数字同时显示。
程序需要主循环。主循环不断重复执行。主循环调用按键检测程序。主循环调用显示程序。主循环保持单片机忙碌。
现在介绍程序流程图。程序开始先初始化。初始化定时器。初始化变量。初始化显示。然后进入主循环。主循环检测开始键是否按下。如果按下启动定时器。主循环检测停止键是否按下。如果按下停止定时器。主循环检测复位键是否按下。如果按下时间变量归零。主循环调用显示子程序。显示当前时间。
定时器中断服务程序独立运行。中断发生时自动执行。中断程序保护现场。现场是当前寄存器值。中断程序判断中断来源。如果是定时器中断。中断程序增加计数变量。计数变量达到设定值。时间变量增加1。中断程序恢复现场。中断程序返回。
按键处理需要消抖。检测到按键按下后。程序延时10毫秒。再次检测按键状态。如果仍然按下确认有效。执行相应功能。如果已经弹起忽略这次按键。
显示程序采用动态扫描。四位数码管不能同时点亮。单片机依次点亮每位数码管。每次点亮一位。点亮时间很短。循环速度很快。人眼看到四位数字同时亮。显示程序从时间变量提取各位数字。个位数字是时间除以10的余数。十位数字是时间除以100的余数再除以10。百位数字是时间除以1000的余数再除以100。千位数字是时间除以10000的商。每个数字查表得到段码。段码送到数码管。位选信号选择哪位数码管亮。
秒表精度是一个重要指标。精度表示测量准确程度。单片机时钟频率影响精度。我们选择12兆赫兹晶振。定时器工作方式1。定时器初值计算得到。每10毫秒中断一次。中断响应需要时间。这段时问会产生误差。误差很小可以接受。如果需要更高精度。可以选择更高频率晶振。可以改进程序设计。
秒表功能可以扩展。可以增加计次功能。每次按下计次键记录当前时间。可以存储多个时间值。可以增加报警功能。达到设定时间发出声音。可以连接计算机传输数据。这些需要更多硬件。需要更复杂程序。
本文设计实现了基本秒表。秒表能够开始计时。秒表能够停止计时。秒表能够复位归零。秒表能够显示时间。秒表精度满足一般要求。硬件成本很低。软件稳定可靠。这个设计可以实际使用。这个设计可以作为学习参考。