1. 设计要求
基于 51 开发板,利用键盘作为按键输入,将数码管作为显示输出,实现电子秒表。
功能要求:
(1)计时精度达到百分之一秒;
(2)能按键记录下5次时间并通过按键回看
(3)设置时间,实现倒计时,时间到,数码管闪烁 10 次,并激发蜂鸣器,可通过按键解除。
2. 设计思路
实现过程:
代码实现了一个简单的单片机程序,其中包含了数字显示、按键检测、正/反倒计时、数据存储、按键判断、复位功能、显示控制和延时等基础功能。通过设置程序结构、定义变量和寄存器、使用标签以及相关指令,实现了LED灯阵列的数字显示、按键状态的检测、倒计时功能、数据存储、按键判断和跳转、系统复位、LED灯的显示控制以及延时等功能。整体而言,该代码是一个综合性的单片机程序,展现了在嵌入式系统中常见的基础操作和功能。
程序结构:
ORG 0000H: 设置程序的起始地址为0000H。
LJMP MAIN: 无条件跳转到MAIN标签,即程序的主入口。
ORG 0100H: 设置程序的代码段起始地址为0100H。
主要变量和寄存器说明:
R0, R1, R2, R3, R4, R5, R6, R7: 寄存器,用于临时存储数据。
A, B: 通用寄存器。
P0, P1, P2: 用于控制端口的寄存器。
SRC、DPTR: 数据指针寄存器。
数字显示:
使用SHOW和LLSHOW等标签,通过LED灯阵列实现数字的显示。
按键检测:
使用KEY2标签,通过检测键盘输入状态实现按键的检测,按键状态保存在A寄存器中。
倒计时功能:
使用COUNT和COUNT1等标签,实现了一个简单的倒计时功能。
使用LLLSHOW和LLLDARKSHOW标签,通过LED灯阵列实现了倒计时数字的显示和清除。
数据存储和保存:
使用SAVE和SAVE1等标签,实现了将数据存储到指定的内存位置。
数据存储的起始位置是由R1寄存器表示。
按键判断和跳转:
使用CHECK、CHECK1、WAIT等标签,根据按键的状态进行条件判断和跳转。
复位功能:
使用RESET标签,实现了系统的复位功能。
显示控制和延时:
使用SHOW、DARKSHOW、DELAY等标签,控制LED灯的显示和延时。
其他功能:
包括了一些与LED灯和按键相关的功能实现,如LED灯的控制、显示、清除等。
拓展功能——正计时和LED8x8点阵显示:
正计时:
基于倒计时的原理,拓展了一个功能上与之相反的正计时功能,从零开始计时,直到用户的设定值。
LED8x8点阵显示:
图 1 LED8x8点阵屏
使用LED8x8点阵屏显示个位数字和一些用户交互图形和动画(注意使用时需把黄色帽子扣在另外一边)
图 2 操作流程图
3. 实现效果
图 1开始界面
按下K4选择模式(正计时/倒计时)
图 2选择正计时模式
图 3选择倒计