任务实施
更新于 2026年10月10日
版权声明
任务实施
一、任务分析
本任务利用8位共阳数码管,完成时钟显示。为了节约硬件资源采用数码管动态显示和定时器中断形式。
1.定时器中断初始化分析
采用定时器T0、工作方式1,所以TMOD=0x01;
定时器中断1次假设为50 ms,中断20次为1 s,所以实际计数值为46 083。
定时器T0的计数初值为:
TH0=(65 536-46 083)/256; //定时器T0高8位赋初值
TL0=(65 536-46 083)%256; //定时器T0低8位赋初值
2.时钟逻辑分析
变量定义:中断计数n,秒s,分m,时h。
当n等于20次时,时间为1 s;
当s等于60 s时,时间为1 min;
当m等于60 min时,时间为1 h;
当h等于24 h,为1 d。
二、程序设计
程序设计流程图如图4-3-9所示。

图4-3-9 程序流程图
参考程序:
#include <reg51.h>
#define uchar unsigned char(https://www.daowen.com)
#define uint unsigned int


三、电路仿真
1.绘制原理图
打开Proteus软件,创建“电子秒表制作与实现”文件,绘制电路图。元件清单见表4-3-4。绘制完成的电路图如图4-3-10所示。
表4-3-4 元件清单


图4-3-10 绘制电路图
2.编写程序
打开Keil 软件,新建“电子时钟”工程文件,新建“shizhong.c”文件,编写程序并生成hex文件。编写完成的程序如图4-3-11所示。

图4-3-11 编写程序
3.电路仿真
加载“shizhong.hex”文件,单击“仿真”按钮,仿真结果如图4-3-12所示。

图4-3-12 仿真结果

仿真视频
仿真结果显示:在数码管上显示时钟,能正常计时。