51单片机控制8个LED灯,开关控制不同LED亮灭
使用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编译器编写。
switchA和switchB分别定义为开关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 著作权归作者所有。请勿转载和采集!