51单片机做出电子记分牌的编程代码
以下是一种基于51单片机的电子记分牌的编程代码示例:
#include <reg51.h>
// 定义数码管显示的数字编码
unsigned char code digitCode[] = {
0x3F, // 0
0x06, // 1
0x5B, // 2
0x4F, // 3
0x66, // 4
0x6D, // 5
0x7D, // 6
0x07, // 7
0x7F, // 8
0x6F // 9
};
// 定义记分板的初始得分
unsigned char score1 = 0;
unsigned char score2 = 0;
// 数码管位选控制函数
void selectDigit(unsigned char digit) {
P2 &= 0xF8; // 清除位选控制位
P2 |= digit; // 设置位选控制位
}
// 数码管段选控制函数
void displayDigit(unsigned char digit, unsigned char value) {
P0 = digitCode[value]; // 设置段选控制位
}
// 数码管显示函数
void displayScore(unsigned char score) {
unsigned char units = score % 10; // 个位数
unsigned char tens = score / 10; // 十位数
selectDigit(0x01); // 显示个位数
displayDigit(0xFE, units); // 设置段选控制位
selectDigit(0x02); // 显示十位数
displayDigit(0xFD, tens); // 设置段选控制位
}
// 得分增加函数
void increaseScore(unsigned char player) {
if (player == 1) {
score1++;
if (score1 > 99) {
score1 = 99; // 最大得分为99
}
} else if (player == 2) {
score2++;
if (score2 > 99) {
score2 = 99; // 最大得分为99
}
}
}
// 主函数
void main() {
while(1) {
displayScore(score1); // 显示第一个玩家的得分
delay(1000); // 延时1秒
displayScore(score2); // 显示第二个玩家的得分
delay(1000); // 延时1秒
increaseScore(1); // 第一个玩家得分增加
increaseScore(2); // 第二个玩家得分增加
}
}
此代码使用了51单片机的基本功能来实现电子记分牌的功能。其中,digitCode数组存储了数码管显示每个数字的编码。selectDigit函数用于选择要显示的数码管位,displayDigit函数用于设置段选控制位以显示相应的数字。displayScore函数用于显示得分,increaseScore函数用于增加得分。在主函数中,通过循环不断更新并显示得分
原文地址: http://www.cveoy.top/t/topic/hQ5o 著作权归作者所有。请勿转载和采集!