{"title":"51\u5355\u7247\u673a\u5b9e\u73b0\u7535\u5b50\u8bb0\u5206\u724c\u7684\u7f16\u7a0b\u4ee3\u7801\uff0c\u8bbe\u8ba1\u5185\u5bb9\uff1a\uff081\uff09\u9009\u62e951\u5355\u7247\u673a\uff0c\u6676\u659c\u91c7\u752812MHz\u3002\uff082\uff09\u542f\u52a8\u65f6\u663e\u793a\u7684\u521d\u59cb\u5206\u6570\u4e3a50\u3002\uff083\uff09\u9009\u624b\u6bcf\u7b54\u5bf9\u4e00\u9898\u52a01\u5206\uff1b\u6bcf\u7b54\u9519\u4e00\u9898\u51cf1\u5206\u3002\u52a0\u5206\u548c\u51cf\u5206\u5206\u522b\u7531\u201c\u52a0\u201d\u3001\u201c\u51cf\u201d\u6309\u952e\uff08K1\u548cK2\uff09\u5b9e\u73b0\u3002\uff084\uff09\u8ba1\u5206\u8303\u56f4\u4e3a00~99\u3002\uff085\uff09\u8bc1\u5224\u6309\u4e0b\u590d\u4f4d\u6309\u952e\uff08K3\uff09\u65f6\uff0c\u6570\u7801\u7ba1\u663e\u793a\u521d\u59cb\u5206\u657050\u3002\uff086\uff09\u6309\u952e\u6309\u4e0b\u65f6\u6709\u63d0\u793a\u97f3\uff0c\u5f53\u6709\u952e\u6309\u4e0b\u65f6\u8702\u54cd\u5668\u53d1\u51fa\u97f3\u97f3\uff0c\u6309\u952e\u9648\u653e\u65f6\u505c\u6b62\u53d1\u97f3\n\u5185\u5bb9\uff1a\u4ee5\u4e0b\u662f\u4e00\u4e2a\u53ef\u80fd\u768451\u5355\u7247\u673a\u5b9e\u73b0\u7535\u5b50\u8bb0\u5206\u724c\u7684\u7f16\u7a0b\u4ee3\u7801\u4f8b\u5b50\uff1a\n\nc\n#include <reg51.h>\n\n#define FREQ_OSC 12000000UL\n\nsbit buzzer = P1^0;\nsbit buttonPlus = P2^0;\nsbit buttonMinus = P2^1;\nsbit buttonReset = P2^2;\nsbit digit1 = P3^0;\nsbit digit2 = P3^1;\nsbit digit3 = P3^2;\nsbit digit4 = P3^3;\n\nunsigned char score = 50;\nunsigned char buzzerFlag = 0;\n\nvoid delay(unsigned int ms) {\n unsigned int i, j;\n for (i = 0; i < ms; i++)\n for (j = 0; j < 123; j++);\n}\n\nvoid displayScore(unsigned char score) {\n unsigned char unitsDigit = score % 10;\n unsigned char tensDigit = score / 10;\n\n digit4 = 1;\n P0 = unitsDigit;\n digit4 = 0;\n\n digit3 = 1;\n P0 = tensDigit;\n digit3 = 0;\n}\n\nvoid buzzerOn() {\n buzzer = 0;\n buzzerFlag = 1;\n}\n\nvoid buzzerOff() {\n buzzer = 1;\n buzzerFlag = 0;\n}\n\nvoid main() {\n TMOD = 0x01; // Timer 0, 16-bit mode\n TH0 = (65536 - (FREQ_OSC / 1000)) >> 8;\n TL0 = (65536 - (FREQ_OSC / 1000)) & 0xFF;\n\n ET0 = 1; // Enable Timer 0 interrupt\n EA = 1; // Enable global interrupt\n\n TR0 = 1; // Start Timer 0\n\n while (1) {\n if (buttonPlus == 0) {\n delay(10); // Debounce\n if (buttonPlus == 0) {\n score++;\n displayScore(score);\n buzzerOn();\n delay(200);\n buzzerOff();\n while (buttonPlus == 0);\n }\n }\n\n if (buttonMinus == 0) {\n delay(10); // Debounce\n if (buttonMinus == 0) {\n score--;\n displayScore(score);\n buzzerOn();\n delay(200);\n buzzerOff();\n while (buttonMinus == 0);\n }\n }\n\n if (buttonReset == 0) {\n delay(10); // Debounce\n if (buttonReset == 0) {\n score = 50;\n displayScore(score);\n buzzerOn();\n delay(200);\n buzzerOff();\n while (buttonReset == 0);\n }\n }\n }\n}\n\nvoid timer0_ISR() interrupt 1 {\n TH0 = (65536 - (FREQ_OSC / 1000)) >> 8;\n TL0 = (65536 - (FREQ_OSC / 1000)) & 0xFF;\n\n if (buzzerFlag)\n buzzer = !buzzer;\n}\n\n\n\u8fd9\u4e2a\u4ee3\u7801\u5b9e\u73b0\u4e86\u542f\u52a8\u65f6\u663e\u793a\u521d\u59cb\u5206\u6570\u3001\u6309\u4e0b\u52a0\u51cf\u6309\u952e\u65f6\u52a0\u51cf\u5206\u3001\u6309\u4e0b\u590d\u4f4d\u6309\u952e\u65f6\u91cd\u7f6e\u5206\u6570\uff0c\u5e76\u901a\u8fc7\u8702\u54cd\u5668\u53d1\u51fa\u97f3\u97f3\u8fdb\u884c\u63d0\u793a\u3002

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

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

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