其基本要求:(1)两位LED显示,可以显示00 ~ 99秒。(2)两个按键,分别为启动/暂停键、清0键。动态显示方式要求用4位数码管,从左往右,第1位显示按键编号(1-启动,2-暂停,3-清零),第2位空,第3位显示秒值的十位数,第4位显示秒值的个位。


其基本要求:(1)两位LED显示,可以显示00 ~ 99秒。(2)两个按键,分别为启动/暂停键、清0键。动态显示方式要求用4位数码管,从左往右,第1位显示按键编号(1-启动,2-暂停,3-清零),第2位空,第3位显示秒值的十位数,第4位显示秒值的个位。


关注让 “紫雾凌寒” 来帮你回答,本回答结合 DeepSeek
如果还有问题,请评论或点击头像私信,如果有帮助到您, 请关注、采纳、点赞
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit start_pause = P3^0; // 启动/暂停键
sbit clear = P3^1; // 清0键
uchar code segCode[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; // 数码管段码
uchar time = 0;
uchar pauseFlag = 0;
uchar keyNumber = 0;
void delay(uint ms) // 延时函数
{
uint i, j;
for(i = ms; i > 0; i--)
for(j = 110; j > 0; j--);
}
void display()
{
uchar digit1, digit2;
digit1 = time / 10;
digit2 = time % 10;
if(pauseFlag)
{
digit1 = 2; // 按下暂停键,最左边显示2
}
P0 = segCode[digit1];
P2 = 0xfe; // 选通最左边数码管
delay(5);
P2 = 0xff;
P0 = segCode[digit2];
P2 = 0xfd; // 选通第二个数码管
delay(5);
P2 = 0xff;
}
void main()
{
while(1)
{
if(start_pause == 0) // 检测启动/暂停键
{
delay(20); // 消抖
if(start_pause == 0)
{
while(!start_pause); // 等待按键释放
pauseFlag = ~pauseFlag; // 切换暂停状态
}
}
if(clear == 0) // 检测清0键
{
delay(20); // 消抖
if(clear == 0)
{
while(!clear); // 等待按键释放
time = 0;
pauseFlag = 0;
}
}
if(!pauseFlag)
{
time++;
if(time == 100)
{
time = 0;
}
}
display();
}
}
希望以上解答对您有所帮助。如果您有任何疑问,欢迎在评论区提出。