用单片机系统设计流水灯控制电路,具体要求:
(1)用 8 个 LED 发光二极管实现至少 4 种彩灯灯光效果;
(2)用输入按钮在几种灯光效果间切换;
(3)在显示器上能显示按键的编号;
(4)通过按钮暂停彩灯效果,使小灯全亮,再次按下相同按钮后继续之前
的效果;
(5)具备自动在几种效果间切换的功能。
(6)用汇编语言实现
就几个灯和key的控制,汇编也没啥难度,可以查看:https://blog.csdn.net/weixin_44026026/article/details/109965153,稍加修改就ok'
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^4;
void delay(uint i)
{
uint j;
while(i--)
for(j=0;j<100;j++);
}
void key_1()
{
uint i;
uchar temp;
temp=0xfe;
for(i=0;i<4;i++)
{
P3=temp;
temp=_crol_(temp,2);
delay(300);
}
P3=0xff;
}
void key_2()
{
uint i;
uchar temp;
temp=0x7f;
for(i=0;i<4;i++)
{
P3=temp;
temp=_cror_(temp,2);
delay(300);
}
P3=0xff;
}
void key_3()
{
uint i;
uchar temp;
temp=0xfe;
for(i=0;i<4;i++)
{
P3=temp;
temp=_crol_(temp,2);
delay(300);
}
temp=0x7f;
for(i=0;i<4;i++)
{
P3=temp;
temp=_cror_(temp,2);
delay(300);
}
P3=0xff;
}
void key_4()
{
uint i;
for(i=0;i<5;i++)
{
P3=0x0f;
delay(300);
P3=0xf0;
delay(300);
P3=0xff;
}
}
void main()
{
P1=0x0f;
if((0x0f&P1)!=0x0f)
{ delay(30);
if((0x0f&P1)!=0x0f)
{
switch(P1)
{
case 0x0e:{key_1();break;}
case 0x0d:{key_2();break;}
case 0x0b:{key_3();break;}
case 0x07:{key_4();break;}
}
}
}
}
提供参考链接:基于AT89C51的按键控制流水灯,链接:https://blog.csdn.net/ICnku/article/details/127683431