#include <reg51.h>

// 定义端口和引脚 sbit buzzer = P1^0; // 蜂鸣器 sbit buttonAdd = P2^0; // 加分按钮 sbit buttonSubtract = P2^1; // 减分按钮 sbit buttonReset = P2^2; // 复位按钮 sbit digit1 = P2^4; // 数码管第一位 sbit digit2 = P2^5; // 数码管第二位 sbit segA = P2^6; // 数码管段A sbit segB = P2^7; // 数码管段B

// 函数声明 void delay(unsigned int ms); void displayScore(unsigned int score); void addScore(); void subtractScore();

// 主函数 void main() { unsigned int score = 50; // 初始分数为50

while(1) {
    if (buttonAdd == 0) {
        delay(10);  // 延迟10毫秒
        if (buttonAdd == 0) {
            addScore();  // 答对一题加分
            delay(1000);  // 延迟1秒
        }
    }
    
    if (buttonSubtract == 0) {
        delay(10);  // 延迟10毫秒
        if (buttonSubtract == 0) {
            subtractScore();  // 答错一题减分
            delay(1000);  // 延迟1秒
        }
    }
    
    if (buttonReset == 0) {
        delay(10);  // 延迟10毫秒
        if (buttonReset == 0) {
            score = 50;  // 复位按钮按下时,分数重置为50
            displayScore(score);  // 显示分数
            delay(1000);  // 延迟1秒
        }
    }
}

}

// 延时函数 void delay(unsigned int ms) { unsigned int i, j; for (i = ms; i > 0; i--) { for (j = 110; j > 0; j--); } }

// 显示分数函数 void displayScore(unsigned int score) { unsigned int digit1Value, digit2Value;

digit1 = 1; digit2 = 1; segA = 0; segB = 0;

digit1Value = score / 10; // 十位数 digit2Value = score % 10; // 个位数

switch (digit1Value) { case 0: segA = 1; segB = 1; break; case 1: segB = 1; break; case 2: segA = 0; segB = 1; break; // ... 其他数字的显示规则 }

digit1 = 0; delay(5); digit1 = 1;

switch (digit2Value) { case 0: segA = 1; segB = 1; break; case 1: segB = 1; break; case 2: segA = 0; segB = 1; break; // ... 其他数字的显示规则 }

digit2 = 0; delay(5); digit2 = 1; }

// 加分函数 void addScore() { buzzer = 1; // 发出提示音 delay(100); // 延迟100毫秒 buzzer = 0; // 停止提示音

if (score < 99) { score++; // 分数加1 }

displayScore(score); // 显示分数 }

// 减分函数 void subtractScore() { buzzer = 1; // 发出提示音 delay(100); // 延迟100毫秒 buzzer = 0; // 停止提示音

if (score > 0) { score--; // 分数减1 }

displayScore(score); // 显示分数 }

51单片机电子记分牌编程代码:实现加减分、复位功能

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

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