以下是51单片机实现电子记分牌的编程代码:

#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/hRNy 著作权归作者所有。请勿转载和采集!

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