51单片机设计篮球计分器计分部分的程序
时间: 2023-08-31 08:05:15 浏览: 78
基于51单片机篮球计分系统
5星 · 资源好评率100%
以下是一个简单的51单片机设计的篮球计分器计分部分的程序:
```c
#include <reg51.h>
// 定义端口
sbit led1 = P2^0; // 第一位得分灯
sbit led2 = P2^1; // 第二位得分灯
sbit key1 = P1^0; // 得分键1
sbit key2 = P1^1; // 得分键2
// 定义变量
unsigned int score1 = 0; // 第一位得分
unsigned int score2 = 0; // 第二位得分
// 延时函数
void delay(unsigned int t) {
unsigned int i, j;
for (i = t; i > 0; i--) {
for (j = 110; j > 0; j--);
}
}
// 显示得分
void display(unsigned int score) {
switch (score) {
case 0: led1 = 0; led2 = 0; break; // 显示0分
case 1: led1 = 1; led2 = 0; break; // 显示1分
case 2: led1 = 0; led2 = 1; break; // 显示2分
default: break;
}
}
// 得分处理
void score(unsigned char key) {
switch (key) {
case 1: // 得分键1
score1++; // 得分
display(score1); // 显示得分
break;
case 2: // 得分键2
score2++; // 得分
display(score2); // 显示得分
break;
default: break;
}
}
// 主函数
void main(void) {
while (1) {
if (!key1) { // 检测得分键1是否按下
delay(10); // 延时去抖动
if (!key1) { // 再次检测得分键1是否按下
score(1); // 处理得分
while (!key1); // 等待得分键1松开
}
}
if (!key2) { // 检测得分键2是否按下
delay(10); // 延时去抖动
if (!key2) { // 再次检测得分键2是否按下
score(2); // 处理得分
while (!key2); // 等待得分键2松开
}
}
}
}
```
这个程序使用P1口的两个按键作为得分键,P2口的两个LED灯作为得分显示。每次按下得分键后,得分会加1并显示出来。程序中还加入了延时去抖动的代码,以避免按键产生的抖动干扰计分器的正常运行。
阅读全文