使用51单片机控制8个LED灯,开关控制不同LED亮灭

本文介绍使用51单片机控制8个LED灯,并通过两个开关分别控制不同组的LED亮灭。

硬件连接:

  • 8个LED灯连接到单片机的P1口。
  • 开关A连接到P3.0口。
  • 开关B连接到P3.1口。

程序代码:

#include <reg51.h>

sbit switchA = P3^0;  // 开关A连接到P3.0
sbit switchB = P3^1;  // 开关B连接到P3.1

void delay() {
    unsigned int i, j;
    for(i = 0; i < 1000; i++) {
        for(j = 0; j < 100; j++) {
            // 延时函数,用于控制发光二极管亮灭的时间
        }
    }
}

void main() {
    unsigned char ledValue = 0xFF;  // 初始设置所有发光二极管都灭

    while(1) {
        if(switchA == 0) {  // 如果开关A按下
            P1 = 0x0F;     // 仅点亮发光二极管4-7(低4位亮,高4位灭)
            delay();       // 等待一段时间
            P1 = ledValue; // 恢复所有发光二极管的状态
        }

        if(switchB == 0) {  // 如果开关B按下
            P1 = 0xF0;     // 仅点亮发光二极管0-3(高4位亮,低4位灭)
            delay();       // 等待一段时间
            P1 = ledValue; // 恢复所有发光二极管的状态
        }
    }
}

代码说明:

  • 代码使用C语言和Keil C51编译器编写。
  • switchAswitchB 分别定义为开关A和开关B的引脚。
  • delay() 函数用于控制LED亮灭的时间,可以根据实际情况调整。
  • ledValue 变量用于记录LED的初始状态,初始值为0xFF,表示所有LED都熄灭。
  • 当开关A按下时,P1 口设置为 0x0F,仅点亮第4-7个LED。
  • 当开关B按下时,P1 口设置为 0xF0,仅点亮第0-3个LED。
  • 每次开关按下后,都会调用 delay() 函数进行延时,然后恢复所有LED的状态。

注意:

  • 以上代码仅供参考,实际应用中可能需要根据具体情况进行修改。
  • 请确保连接的硬件电路正确。
  • 可以根据需要调整 delay() 函数的延时时间,控制LED亮灭的时间。

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

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