51单片机-开关控制LED

如果只为了点亮LED则毫无意义!

1. 硬件准备

  • LED一颗
  • 按钮开关一个
  • 51单片机开发板(STC89C52RC)

2. 硬件连接

单片机引脚图如下

none

LED连接

LED引脚51单片机引脚序号
+T2/P1.01
-GND20

按钮开关连接

按钮开关引脚51单片机引脚序号
引脚1P2.0/A821
引脚2GND20

3. 代码编写

新建main.c文件,代码逻辑如下,当点按一次按钮,LED就会亮起,再点按一次,LED就会熄灭。

#include <8052.h>

#define SWITCH_PIN P2
#define LED_PIN P1

void Delay10ms(unsigned int);

int main() {
    SWITCH_PIN = 0xFF;
    LED_PIN = 0x00; // 初始状态下关闭LED

    while (1) {
        // 检测开关状态
        if ((SWITCH_PIN & 1) == 0) {
            LED_PIN = !LED_PIN;  // 如果开关被按下,则打开LED
            Delay10ms(50);  // 延时500ms,防止抖动
        }
    }
}

void Delay10ms(unsigned int c) {
    unsigned char a, b;
    for (; c > 0; c--)
        for (b = 38; b > 0; b--)
            for (a = 130; a > 0; a--);
}

4. 代码烧录下载

4.1 SDCC编译

SDCC官网open in new window

sdcc main.c
# sdcc默认生成的文件后缀不是hex而是ihx,需要使用packihx转换。
packihx main.ihx > main.hex && ls

4.1 烧录工具

4.2 烧录

  • 选择对应的单片机型号 (STC89C52RC)
  • 选择对应的串口号
  • 选择main.hex文件
  • 点击下载
更新日期:
作者: dingqw