51单片机电子记分牌编程代码 - 12MHz晶振,加减分功能,蜂鸣器提示
{"title":"51单片机电子记分牌编程代码 - 12MHz晶振,加减分功能,蜂鸣器提示","description":"基于51单片机实现电子记分牌,使用12MHz晶振,初始分数为50,可以通过加减分按钮进行计分,并使用蜂鸣器进行提示。分数范围为00-99,可通过复位按钮恢复初始分数。","keywords":"51单片机, 电子记分牌, 编程代码, 12MHz晶振, 加分, 减分, 蜂鸣器, 提示音, 复位","content":"#include "reg51.h"
sbit K1 = P1^0; // 加分按钮 sbit K2 = P1^1; // 减分按钮 sbit K3 = P1^2; // 复位按钮 sbit Buzzer = P2^0; // 蜂鸣器
unsigned char score = 50; // 初始分数为50
void delay(unsigned int time) // 延时函数 { unsigned int i, j; for(i = time; i > 0; i--) for(j = 110; j > 0; j--); }
void displayScore(unsigned char num) // 显示分数函数 { unsigned char ten, unit; ten = num / 10; // 十位数 unit = num % 10; // 个位数 P2 = (P2 & 0xF0) | ten; // 显示十位数 P0 = 0x7F; // 打开第一位数码管 delay(5); // 延时一段时间,使其显示 P0 = 0xFF; // 关闭数码管 P2 = (P2 & 0xF0) | unit; // 显示个位数 P0 = 0xBF; // 打开第二位数码管 delay(5); // 延时一段时间,使其显示 P0 = 0xFF; // 关闭数码管 }
void main() { K1 = 1; // 设置K1为输入 K2 = 1; // 设置K2为输入 K3 = 1; // 设置K3为输入 Buzzer = 0; // 设置Buzzer为输出 P2 = 0xF0; // 设置P2的高4位为输出,用于控制数码管的十位数显示 P0 = 0xFF; // 设置P0为输入,用于控制数码管的个位数显示
displayScore(score); // 显示初始分数
while(1)
{
if(K1 == 0) // 按下加分按钮
{
Buzzer = 1; // 开启蜂鸣器
delay(50); // 延时一段时间,播放提示音
Buzzer = 0; // 关闭蜂鸣器
score++; // 分数加1
if(score > 99) // 分数范围限制在00~99
score = 99;
displayScore(score); // 显示更新后的分数
while(K1 == 0); // 等待按键释放
}
if(K2 == 0) // 按下减分按钮
{
Buzzer = 1; // 开启蜂鸣器
delay(50); // 延时一段时间,播放提示音
Buzzer = 0; // 关闭蜂鸣器
score--; // 分数减1
if(score > 99) // 分数范围限制在00~99
score = 0;
displayScore(score); // 显示更新后的分数
while(K2 == 0); // 等待按键释放
}
if(K3 == 0) // 按下复位按钮
{
Buzzer = 1; // 开启蜂鸣器
delay(50); // 延时一段时间,播放提示音
Buzzer = 0; // 关闭蜂鸣器
score = 50; // 复位分数为50
displayScore(score); // 显示初始分数
while(K3 == 0); // 等待按键释放
}
}
}
原文地址: https://www.cveoy.top/t/topic/pAUt 著作权归作者所有。请勿转载和采集!