#include <reg51.h>

// \u5B9A\u4E49\u6570\u7801\u7BA1\u663E\u793A\u7684\u6570\u5B57\u7F16\u7801 unsigned char code num_code[] = { 0xC0, // 0 0xF9, // 1 0xA4, // 2 0xB0, // 3 0x99, // 4 0x92, // 5 0x82, // 6 0xF8, // 7 0x80, // 8 0x90 // 9 };

// \u5B9A\u4E49\u6309\u952E\u548C\u8702\u97F3\u5668\u7684IO\u53E3 sbit key_add = P1^0; // \u52A0\u5206\u6309\u952E sbit key_sub = P1^1; // \u51CF\u5206\u6309\u952E sbit key_reset = P1^2; // \u590D\u5236\u6309\u952E sbit buzzer = P1^3; // \u8702\u97F3\u5668

// \u5168\u5C40\u53D8\u91CF unsigned char score = 50; // \u521D\u59CB\u5206\u6570\u4E3A50

// \u51FD\u6570\u5BA3\u8A00 void delay(unsigned int time); void display(unsigned char num);

void main() { EA = 1; // \u5141\u8BB8\u4E2D\u65AD ET0 = 1; // \u5141\u8BB8\u5B9A\u65F6\u56680\u4E2D\u65AD EX0 = 1; // \u5141\u8BB8\u5916\u90E8\u4E2D\u65AD0 IT0 = 1; // \u8BBE\u7F6E\u5916\u90E8\u4E2D\u65AD0\u4E3A\u4E0B\u964D\u754C\u53D1\u52A8 TMOD = 0x01; // \u8BBE\u7F6E\u5B9A\u65F6\u56680\u4E3A\u6A21\u5F0F1 TH0 = 0xFC; // \u8BBE\u7F6E\u5B9A\u65F6\u56680\u7684\u521D\u59CB\u503C TL0 = 0x18;

while (1) {
    // \u68C0\u6D4B\u52A0\u5206\u6309\u952E
    if (key_add == 0) {
        delay(10);  // \u5EF6\u65F6\u6D88\u952E
        if (key_add == 0) {
            score++;
            if (score > 99) {
                score = 99;  // \u8BA1\u5206\u8303\u56F4\u4E3A00 ~ 99
            }
            display(score);
            buzzer = 1;  // \u6309\u952E\u62C9\u4E0B\u65F6\u8702\u97F3\u5668\u53D1\u58F0
            delay(100);
            buzzer = 0;
        }
        while (key_add == 0);  // \u7B49\u5F85\u6309\u952E\u9648\u653E
    }
    
    // \u68C0\u6D4B\u51CF\u5206\u6309\u952E
    if (key_sub == 0) {
        delay(10);  // \u5EF6\u65F6\u6D88\u952E
        if (key_sub == 0) {
            score--;
            if (score > 99) {
                score = 99;  // \u8BA1\u5206\u8303\u56F4\u4E3A00 ~ 99
            }
            display(score);
            buzzer = 1;  // \u6309\u952E\u62C9\u4E0B\u65F6\u8702\u97F3\u5668\u53D1\u58F0
            delay(100);
            buzzer = 0;
        }
        while (key_sub == 0);  // \u7B49\u5F85\u6309\u952E\u9648\u653E
    }
    
    // \u68C0\u6D4B\u590D\u5236\u6309\u952E
    if (key_reset == 0) {
        delay(10);  // \u5EF6\u65F6\u6D88\u952E
        if (key_reset == 0) {
            score = 50;  // \u590D\u5236\u6309\u952E\u62C9\u4E0B\u65F6\uff0c\u5206\u6570\u91CD\u7F6E\u4E3A50
            display(score);
            buzzer = 1;  // \u6309\u952E\u62C9\u4E0B\u65F6\u8702\u97F3\u5668\u53D1\u58F0
            delay(100);
            buzzer = 0;
        }
        while (key_reset == 0);  // \u7B49\u5F85\u6309\u952E\u9648\u653E
    }
}

}

// \u5B9A\u65F6\u56680\u4E2D\u65AD\u51FD\u6570 void timer0() interrupt 1 { TH0 = 0xFC; // \u91CD\u65B0\u52A0\u8F7D\u5B9A\u65F6\u56680\u7684\u521D\u59CB\u503C TL0 = 0x18; display(score); }

// \u5916\u90E8\u4E2D\u65AD0\u4E2D\u65AD\u51FD\u6570 void external_interrupt0() interrupt 0 { score = 50; // \u5916\u90E8\u4E2D\u65AD0\u53D1\u52A8\u65F6\uff0c\u5206\u6570\u91CD\u7F6E\u4E3A50 display(score); buzzer = 1; // \u6309\u952E\u62C9\u4E0B\u65F6\u8702\u97F3\u5668\u53D1\u58F0 delay(100); buzzer = 0; }

// \u6570\u7801\u7BA1\u663E\u793A\u51FD\u6570 void display(unsigned char num) { unsigned char shiwei, gewei; shiwei = num / 10; // \u5341\u4F4D\u6570 gewei = num % 10; // \u4E2A\u4F4D\u6570 P0 = num_code[shiwei]; P2 = 0xFE; // \u9009\u62E9\u7B2C\u4E00\u4F4D\u6570\u7801\u7BA1 delay(5); P2 = 0xFF; P0 = num_code[gewei]; P2 = 0xFD; // \u9009\u62E9\u7B2C\u4E8C\u4F4D\u6570\u7801\u7BA1 delay(5); P2 = 0xFF; }

// \u5EF6\u65F6\u51FD\u6570 void delay(unsigned int time) { unsigned int i, j; for (i = time; i > 0; i--) { for (j = 110; j > 0; j--); }

51单片机电子记分牌编程代码:按键控制、蜂鸣器提示

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

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