☰
3-3 独立按键控制LED显示二进制(SDCC + Notepad++ + STC-ISP/普中ISP)
2026/10/15 8:17:38 网站建设 项目流程

功能概述

每按一次按键,LEDNum 加 1,然后把这个数取反后输出到 P2 口,点亮对应的 LED。
因为 LED 是低电平点亮,所以取反后,值为 0 的位对应的 LED 会亮。

代码

#include<mcs51/8051.h>voidDelayXms(unsignedintxms){unsignedchari,j;if(xms==0)return;do{i=2;j=239;do{while(--j);}while(--i);}while(--xms);}voidmain(void){// LEDNum 是一个 8 位变量,初始值为 0,用来记录当前要显示的数值。unsignedcharLEDNum=0;while(1){if(P3_1==0)// 按键按下{DelayXms(20);// 消抖while(P3_1==0);// 等待松手DelayXms(20);// 消抖LEDNum++;P2=~LEDNum;}}}

为什么要取反?

LED 是低电平点亮。

  • LEDNum = 1 时,二进制是 0000 0001,取反后是 1111 1110,P2.0 输出低电平,第一个 LED 亮。
  • LEDNum = 2 时,二进制是 0000 0010,取反后是 1111 1101,P2.1 输出低电平,第二个 LED 亮。
  • LEDNum = 3 时,二进制是 0000 0011,取反后是 1111 1100,P2.0 和 P2.1 都亮。

理论运行效果

按键次数LEDNum二进制P2 输出(取反后)亮的 LED
000000 00001111 1111全灭
110000 00011111 1110P2.0
220000 00101111 1101P2.1
330000 00111111 1100P2.0、P2.1
440000 01001111 1011P2.2
550000 01011111 1010P2.0、P2.2

相当于用 LED 显示 0~255 的二进制数。

显示效果

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询