#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); // 显示分数
}

}

51单片机电子记分牌编程代码 - 基于12MHz晶振

原文地址: https://www.cveoy.top/t/topic/pAUz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录