51 单片机电子记分牌编程代码 - 使用 74LS47 驱动共阳极数码管
#include <reg51.h>
// \u5B9A\u4E49\u6570\u7801\u7BA1\u663E\u793A\u7684\u6570\u5B57 unsigned char code LED[10] = { 0xC0, // 0 0xF9, // 1 0xA4, // 2 0xB0, // 3 0x99, // 4 0x92, // 5 0x82, // 6 0xF8, // 7 0x80, // 8 0x90 // 9 };
// \u5B9A\u4E49\u6309\u952E\u5BF9\u5E94\u7684IO\u53E3 sbit btn_add = P1^0; // \u52A0\u5206\u6309\u952E sbit btn_sub = P1^1; // \u51CF\u5206\u6309\u952E sbit btn_reset = P1^2; // \u590D\u5236\u6309\u952E
// \u5B9A\u4E49\u6570\u7801\u7BA1\u7684IO\u53E3 sbit seg_a = P2^4; sbit seg_b = P2^5; sbit seg_c = P2^6; sbit seg_d = P2^7; sbit seg_en1 = P3^7; sbit seg_en2 = P3^6; sbit seg_en3 = P3^5; sbit seg_en4 = P3^4;
// \u5B9A\u4E49\u521D\u59CB\u5206\u6570 unsigned char score = 50;
// \u6309\u952E\u6253\u4E0B\u65F6\u53D1\u51FA\u58F0\u97F3 void beep() { P0 = 0x01; // \u63A7\u5236\u878D\u58F0\u5668\u7684IO\u53E3 delay(500); // \u53D1\u51FA\u58F0\u97F3\u7684\u65F6\u95F4 P0 = 0x00; // \u505C\u6B62\u53D1\u58F0 }
// \u663E\u793A\u5206\u6570 void display_score() { unsigned char digit_1, digit_2; // \u5206\u6570\u7684\u5341\u4F4D\u548C\u4E2A\u4F4D digit_1 = score / 10; digit_2 = score % 10;
// \u663E\u793A\u5341\u4F4D
seg_en1 = 1;
seg_a = LED[digit_1];
delay(5);
seg_en1 = 0;
// \u663E\u793A\u4E2A\u4F4D
seg_en2 = 1;
seg_a = LED[digit_2];
delay(5);
seg_en2 = 0;
}
// \u5EF6\u65F6\u51FD\u6570 void delay(unsigned int ms) { unsigned int i, j; for(i=0; i<ms; i++){ for(j=0; j<114; j++){ } } }
// \u4E3B\u51FD\u6570 void main() { // \u521D\u59CB\u5316IO\u53E3 P0 = 0x00; P1 = 0xFF; P2 = 0x00; P3 = 0x00;
while(1) {
// \u52A0\u5206\u6309\u952E\u6253\u4E0B
if(btn_add == 0) {
beep();
score++; // \u5206\u6570\u52A01
if(score > 99) {
score = 99;
}
display_score(); // \u663E\u793A\u5206\u6570
while(btn_add == 0); // \u7B49\u5F85\u6309\u952E\u96C6\u653E
}
// \u51CF\u5206\u6309\u952E\u6253\u4E0B
if(btn_sub == 0) {
beep();
score--; // \u5206\u6570\u51CF1
if(score < 0) {
score = 0;
}
display_score(); // \u663E\u793A\u5206\u6570
while(btn_sub == 0); // \u7B49\u5F85\u6309\u952E\u96C6\u653E
}
// \u590D\u5236\u6309\u952E\u6253\u4E0B
if(btn_reset == 0) {
beep();
score = 50; // \u5206\u6570\u6062\u590D\u4E3A\u521D\u59CB\u503C
display_score(); // \u663E\u793A\u5206\u6570
while(btn_reset == 0); // \u7B49\u5F85\u6309\u952E\u96C6\u653E
}
}
原文地址: https://www.cveoy.top/t/topic/pAUb 著作权归作者所有。请勿转载和采集!