在51单片机实验板上,用C语言编程实现独立按键对LED流水灯显示的控制。 1.最多使用单片机实验板上3个独立按键,控制由8个LED组成的流水灯的显示。 2.通过独立按键控制流水灯实现4种不同样式的循环显示。 3.当流水灯显示某一种样式时,可通过独立按键实现暂停和重新开始显示, 4.相邻两个LED灯点亮的时间间隔使用软件延时的方法实现,延时时间自定(以方便观察流水灯的点亮情况为准)。
时间: 2023-05-17 17:02:47 浏览: 77
51单片机开发板实验:用自增运算控制P0口8位LED流水花样程序源代码.rar
以下是实现独立按键对LED流水灯显示的控制的C语言代码:
#include <reg51.h>
#define LED P0
sbit KEY1 = P1^0;
sbit KEY2 = P1^1;
sbit KEY3 = P1^2;
void delay(unsigned int time) {
unsigned int i, j;
for(i = 0; i < time; i++)
for(j = 0; j < 125; j++);
}
void main() {
unsigned char mode = 0;
unsigned char flag = 0;
unsigned char led = 0x01;
while(1) {
switch(mode) {
case 0:
LED = led;
delay(100);
led <<= 1;
if(led == 0x00)
led = 0x01;
if(KEY1 == 0) {
mode = 1;
flag = 0;
}
if(KEY2 == 0) {
mode = 2;
flag = 0;
}
if(KEY3 == 0) {
mode = 3;
flag = 0;
}
break;
case 1:
LED = led;
delay(100);
led >>= 1;
if(led == 0x00)
led = 0x80;
if(KEY1 == 0) {
mode = 0;
flag = 0;
}
if(KEY2 == 0) {
mode = 2;
flag = 0;
}
if(KEY3 == 0) {
if(flag == 0) {
flag = 1;
} else {
mode = 0;
flag = 0;
}
}
break;
case 2:
LED = led;
delay(100);
if(flag == 0) {
led <<= 1;
if(led == 0x00)
led = 0x01;
if(led == 0x80)
flag = 1;
} else {
led >>= 1;
if(led == 0x00)
led = 0x80;
if(led == 0x01)
flag = 0;
}
if(KEY1 == 0) {
mode = 1;
flag = 0;
}
if(KEY2 == 0) {
mode = 0;
flag = 0;
}
if(KEY3 == 0) {
if(flag == 0) {
flag = 1;
} else {
mode = 0;
flag = 0;
}
}
break;
case 3:
LED = led;
delay(100);
if(flag == 0) {
led <<= 1;
if(led == 0x00)
led = 0x01;
if(led == 0x80)
flag = 1;
} else {
led >>= 1;
if(led == 0x00)
led = 0x80;
if(led == 0x01)
flag = 0;
}
if(KEY1 == 0) {
mode = 1;
flag = 0;
}
if(KEY2 == 0) {
mode = 2;
flag = 0;
}
if(KEY3 == 0) {
mode = 0;
flag = 0;
}
break;
}
}
}
这段代码实现了以下功能:
1. 使用3个独立按键控制由8个LED组成的流水灯的显示。
2. 通过独立按键控制流水灯实现4种不同样式的循环显示。
3. 当流水灯显示某一种样式时,可通过独立按键实现暂停和重新开始显示。
4. 相邻两个LED灯点亮的时间间隔使用软件延时的方法实现,延时时间为100毫秒。
阅读全文