51单片机电子记分牌编程代码 - 基于12MHz晶振
#include <reg51.h>
sbit K1 = P1^0; // 加分按钮 sbit K2 = P1^1; // 减分按钮 sbit K3 = P1^2; // 复位按钮 sbit Buzzer = P2^0; // 蜂鸣器
unsigned char score = 50; // 初始分数
void delay(unsigned int time) { unsigned int i, j; for (i = time; i > 0; i--) for (j = 110; j > 0; j--); // 延时一段时间 }
void display(unsigned char num) { unsigned char unit, ten; unit = num % 10; // 个位数 ten = num / 10; // 十位数
P0 = 0xC0; // 选择第一个数码管
P0 |= unit; // 显示个位数
delay(5); // 延时一段时间
P0 = 0x80; // 选择第二个数码管
P0 |= ten; // 显示十位数
delay(5); // 延时一段时间
}
void main() { K1 = 1; // 设置K1为输入 K2 = 1; // 设置K2为输入 K3 = 1; // 设置K3为输入
while (1) {
if (K1 == 0) { // K1按下
Buzzer = 1; // 蜂鸣器发声
delay(100); // 延时一段时间
Buzzer = 0; // 停止发声
score++; // 加分
if (score > 99) {
score = 99; // 分数上限为99
}
}
if (K2 == 0) { // K2按下
Buzzer = 1; // 蜂鸣器发声
delay(100); // 延时一段时间
Buzzer = 0; // 停止发声
score--; // 减分
if (score < 0) {
score = 0; // 分数下限为0
}
}
if (K3 == 0) { // K3按下
Buzzer = 1; // 蜂鸣器发声
delay(100); // 延时一段时间
Buzzer = 0; // 停止发声
score = 50; // 初始分数为50
}
display(score); // 显示分数
}
}
原文地址: https://www.cveoy.top/t/topic/pAUz 著作权归作者所有。请勿转载和采集!