用51单片机做体育竞赛计时计分系统设计的代码
时间: 2023-12-10 08:06:19 浏览: 37
以下是一个基本的51单片机体育竞赛计时计分系统设计的代码,可以根据需要进行修改:
```
#include <reg51.h> // 引入51单片机头文件
sbit led1 = P1^0; // 显示LED1控制引脚
sbit led2 = P1^1; // 显示LED2控制引脚
sbit led3 = P1^2; // 显示LED3控制引脚
sbit led4 = P1^3; // 显示LED4控制引脚
sbit start_stop = P3^0; // 开始/停止按钮控制引脚
sbit reset = P3^1; // 复位按钮控制引脚
unsigned int time_count = 0; // 时间计数器
unsigned char score1 = 0; // 球队1得分
unsigned char score2 = 0; // 球队2得分
void delay(int time) // 延时函数,单位为毫秒
{
int i, j;
for(i = time; i > 0; i--)
for(j = 110; j > 0; j--); // 使用循环进行延时
}
void display_time() // 显示时间函数
{
unsigned char hour, minute, second;
hour = time_count / 3600;
minute = (time_count % 3600) / 60;
second = time_count % 60;
led1 = hour / 10; // 将小时数的十位数显示在LED1
led2 = hour % 10; // 将小时数的个位数显示在LED2
led3 = minute / 10; // 将分钟数的十位数显示在LED3
led4 = minute % 10; // 将分钟数的个位数显示在LED4
}
void display_score() // 显示得分函数
{
led1 = score1 / 10; // 将球队1得分的十位数显示在LED1
led2 = score1 % 10; // 将球队1得分的个位数显示在LED2
led3 = score2 / 10; // 将球队2得分的十位数显示在LED3
led4 = score2 % 10; // 将球队2得分的个位数显示在LED4
}
void main()
{
while(1) // 无限循环
{
if(start_stop == 0) // 如果开始/停止按钮被按下
{
delay(10); // 延时10毫秒,防止抖动
if(start_stop == 0) // 再次检测按钮是否被按下
{
while(start_stop == 0) // 等待按钮释放
{
delay(10);
}
while(1) // 进入计时模式
{
delay(1000); // 每隔1秒钟计数器加1
time_count++;
display_time(); // 显示时间
if(reset == 0) // 如果复位按钮被按下
{
delay(10); // 延时10毫秒,防止抖动
if(reset == 0) // 再次检测按钮是否被按下
{
while(reset == 0) // 等待按钮释放
{
delay(10);
}
time_count = 0; // 时间计数器清零
score1 = 0; // 球队1得分清零
score2 = 0; // 球队2得分清零
display_time(); // 显示时间清零
display_score(); // 显示得分清零
break; // 退出计时模式
}
}
}
}
}
if(score1 >= 10 || score2 >= 10) // 如果有球队得分达到10分
{
time_count = 0; // 时间计数器清零
score1 = 0; // 球队1得分清零
score2 = 0; // 球队2得分清零
display_time(); // 显示时间清零
display_score(); // 显示得分清零
}
if(P2 == 0x01) // 如果球队1得分按钮被按下
{
delay(10); // 延时10毫秒,防止抖动
if(P2 == 0x01) // 再次检测按钮是否被按下
{
while(P2 == 0x01) // 等待按钮释放
{
delay(10);
}
score1++; // 球队1得分加1
display_score(); // 显示得分
}
}
if(P2 == 0x02) // 如果球队2得分按钮被按下
{
delay(10); // 延时10毫秒,防止抖动
if(P2 == 0x02) // 再次检测按钮是否被按下
{
while(P2 == 0x02) // 等待按钮释放
{
delay(10);
}
score2++; // 球队2得分加1
display_score(); // 显示得分
}
}
}
}
```
以上代码实现了一个基本的体育竞赛计时计分系统,可以通过按下开始/停止按钮开始/停止计时,通过按下得分按钮实现计分,支持复位操作。可以根据实际需要进行调整和改进。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)