51单片机电子记分牌编程代码:按键控制、蜂鸣器提示
#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--); }
原文地址: https://www.cveoy.top/t/topic/pAUl 著作权归作者所有。请勿转载和采集!