利用单片机设计秒表(设计一个2位的LED数码秒表。显示格式为xx.显示时间为00-99秒,每秒自加1,另外设计一个开始键和一个复位键)
时间: 2024-02-19 07:03:07 浏览: 67
以下是基于C51单片机的2位LED数码秒表设计程序示例:
```
#include <reg51.h>
sbit start = P3^0; //开始键
sbit reset = P3^1; //复位键
sbit led1 = P2^0; //十位数码管的LED引脚
sbit led2 = P2^1; //个位数码管的LED引脚
void delay(unsigned int time)
{
unsigned int i,j;
for(i=0;i<time;i++)
for(j=0;j<1275;j++);
}
void display(unsigned char num)
{
switch(num) //根据数字显示相应的LED
{
case 0:
led1 = 0; led2 = 0; break;
case 1:
led1 = 1; led2 = 0; break;
case 2:
led1 = 0; led2 = 1; break;
case 3:
led1 = 1; led2 = 1; break;
default:
led1 = 0; led2 = 0; break;
}
}
void main()
{
unsigned char sec = 0; //秒数
unsigned char flag = 0; //计时标志
while(1)
{
if(start == 0) //如果按下开始键
{
flag = 1; //计时标志置1
}
if(reset == 0) //如果按下复位键
{
sec = 0; //秒数清零
flag = 0; //计时标志置0
}
if(flag == 1) //如果计时标志为1
{
display(sec / 10); //显示十位数码管
delay(5); //延时5毫秒
display(sec % 10); //显示个位数码管
delay(5); //延时5毫秒
sec++; //秒数加1
if(sec == 100) //如果秒数达到100
{
sec = 0; //秒数清零
}
}
else //如果计时标志为0
{
display(0); //显示0
delay(5); //延时5毫秒
display(0); //显示0
delay(5); //延时5毫秒
}
}
}
```
该程序使用了两个LED来显示秒数,按下开始键后开始计时,按下复位键后秒数清零。为了使显示更加平滑,延时设为5毫秒。在显示函数中,根据数字选择相应的LED亮灭,从而显示出对应的数字。