#include <reg51.h>

#define uchar unsigned char #define uint unsigned int

sbit bzz = P2^3; // 蜂鸣器 sbit addBtn = P3^0; // 加分按钮 sbit subBtn = P3^1; // 减分按钮 sbit resetBtn = P3^2; // 复位按钮 sbit seg1 = P1^0; // 数码管第一位段选 sbit seg2 = P1^1; // 数码管第二位段选 sbit seg3 = P1^2; // 数码管第三位段选 sbit seg4 = P1^3; // 数码管第四位段选 sbit dig1 = P1^4; // 数码管第一位数码 sbit dig2 = P1^5; // 数码管第二位数码 sbit dig3 = P1^6; // 数码管第三位数码 sbit dig4 = P1^7; // 数码管第四位数码

uchar code numTable[] = { 0x3F, // 0 0x06, // 1 0x5B, // 2 0x4F, // 3 0x66, // 4 0x6D, // 5 0x7D, // 6 0x07, // 7 0x7F, // 8 0x6F // 9 };

void delay(uint ms) { uint i, j; for (i = ms; i > 0; i--) for (j = 110; j > 0; j--); }

void display(uchar score) { seg1 = seg2 = seg3 = seg4 = 1; // 关闭所有段选 dig1 = dig2 = dig3 = dig4 = 0; // 全灭 delay(1);

seg1 = 0; // 显示第一位
P0 = numTable[score / 10]; // 显示十位
delay(1);
seg1 = 1; // 关闭第一位

seg2 = 0; // 显示第二位
P0 = numTable[score % 10]; // 显示个位
delay(1);
seg2 = 1; // 关闭第二位

seg3 = 0; // 显示第三位
P0 = 0x00; // 显示空白
delay(1);
seg3 = 1; // 关闭第三位

seg4 = 0; // 显示第四位
P0 = 0x00; // 显示空白
delay(1);
seg4 = 1; // 关闭第四位

}

void main() { uchar score = 50;

while (1) {
    if (resetBtn == 0) { // 复位按钮按下
        score = 50;
        display(score);
        delay(100);
    }
    
    if (addBtn == 0) { // 加分按钮按下
        score++;
        display(score);
        bzz = 1; // 发出提示音
        delay(100);
        bzz = 0; // 停止提示音
    }
    
    if (subBtn == 0) { // 减分按钮按下
        score--;
        display(score);
        bzz = 1; // 发出提示音
        delay(100);
        bzz = 0; // 停止提示音
    }
}

}

51单片机电子记分牌编程代码 - 实现分数加减和复位

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

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