51 单片机电子记分牌编程代码:实现分数加减和复位功能
#include <reg51.h> sbit addBtn = P1^0; // 加分按钮 sbit subBtn = P1^1; // 减分按钮 sbit resetBtn = P1^2; // 复位按钮 sbit buzzer = P2^0; // 蜂鸣器 sbit segA = P2^1; // 数码管段A sbit segB = P2^2; // 数码管段B sbit segC = P2^3; // 数码管段C sbit segD = P2^4; // 数码管段D sbit segE = P2^5; // 数码管段E sbit segF = P2^6; // 数码管段F sbit segG = P2^7; // 数码管段G unsigned char score = 50; // 初始分数为50 void delay(unsigned int time) { unsigned int i, j; for(i = 0; i < time; i++) { for(j = 0; j < 1000; j++) { } } } void display(unsigned char num) { switch(num) { case 0: segA = 0; segB = 0; segC = 0; segD = 0; segE = 0; segF = 0; segG = 1; break; case 1: segA = 1; segB = 0; segC = 0; segD = 1; segE = 1; segF = 1; segG = 1; break; case 2: segA = 0; segB = 0; segC = 1; segD = 0; segE = 0; segF = 1; segG = 0; break; case 3: segA = 0; segB = 0; segC = 0; segD = 0; segE = 1; segF = 1; segG = 0; break; case 4: segA = 1; segB = 0; segC = 0; segD = 1; segE = 1; segF = 0; segG = 0; break; case 5: segA = 0; segB = 1; segC = 0; segD = 0; segE = 1; segF = 0; segG = 0; break; case 6: segA = 0; segB = 1; segC = 0; segD = 0; segE = 0; segF = 0; segG = 0; break; case 7: segA = 0; segB = 0; segC = 0; segD = 1; segE = 1; segF = 1; segG = 1; break; case 8: segA = 0; segB = 0; segC = 0; segD = 0; segE = 0; segF = 0; segG = 0; break; case 9: segA = 0; segB = 0; segC = 0; segD = 0; segE = 1; segF = 0; segG = 0; break; } } void main() { addBtn = 1; // 初始化为高电平 subBtn = 1; // 初始化为高电平 resetBtn = 1; // 初始化为高电平
while(1) {
if(addBtn == 0) { // 加分按钮被按下
delay(10); // 延时消抖
if(addBtn == 0) { // 确认按下
score++;
if(score > 99) { // 分数范围限制
score = 99;
}
buzzer = 0; // 发声
delay(50); // 延时一段时间
buzzer = 1; // 停止发声
}
}
if(subBtn == 0) { // 减分按钮被按下
delay(10); // 延时消抖
if(subBtn == 0) { // 确认按下
score--;
if(score < 0) { // 分数范围限制
score = 0;
}
buzzer = 0; // 发声
delay(50); // 延时一段时间
buzzer = 1; // 停止发声
}
}
if(resetBtn == 0) { // 复位按钮被按下
delay(10); // 延时消抖
if(resetBtn == 0) { // 确认按下
score = 50;
buzzer = 0; // 发声
delay(50); // 延时一段时间
buzzer = 1; // 停止发声
}
}
display(score / 10); // 显示十位数
delay(5); // 延时一段时间
display(score % 10); // 显示个位数
delay(5); // 延时一段时间
}
原文地址: https://www.cveoy.top/t/topic/pAUx 著作权归作者所有。请勿转载和采集!