标题:
如何在按键程序去控制单片机花样彩灯暂停和启动?
[打印本页]
作者:
笙北向阳
时间:
2021-4-17 16:02
标题:
如何在按键程序去控制单片机花样彩灯暂停和启动?
#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar tab2[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
uchar tab3[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe} ;
uchar tab4[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f} ;
void delay (uint i)
{
uchar t;
while(i--)
{
for(t=0;t<120;t++);
}
}
void main()
{
char k;
uchar i,temp1,temp2;
delay(500);
P0=0x00;
P2=0x00;
delay(500);
P0=0xff;
P2=0xff;
delay(500);
while(1)
{
for(k=0;k<8;k++)
{
P0=tab1[k];
delay(500);
}
P0=0xff;
for(k=0;k<8;k++)
{
P2=tab1[k];
delay(500);
}
P2=0xff;
for(k=7;k>-1;k--)
{
P2=tab1[k];
delay(500);
}
P2=0xff;
for(k=7;k>-1;k--)
{
P0=tab1[k];
delay(500);
}
P0=0xff;
temp1=0x01;
temp2=0x01;
for(i=0;i<4;i++)
{
P0=~temp1;
temp1=temp1<<2;
delay(500);
}
P0=0xff;
for(i=0;i<4;i++)
{
P2=~temp2;
temp2=temp2<<2;
delay(500);
}
for(k=0;k<16;k++)
{
P0=tab3[k];
P2=tab4[k];
delay(500);
}
delay(500);
P0=0x00;
P2=0x00;
delay(500);
P0=0xff;
P2=0xff;
delay(500);
}
}
作者:
18701931930
时间:
2021-4-17 23:38
可以设置标志位,1-执行彩灯代码,0不执行彩灯代码。
代码里用了太多的delay,效率太低了。
而且流水灯的代码这样写也不太好,可以改为:
for(k=0;k<8;k++)
{
P2=~(1<<k);
delay(500);
}
特殊的数据变化再用数组的方式
作者:
笙北向阳
时间:
2021-4-18 08:47
18701931930 发表于 2021-4-17 23:38
可以设置标志位,1-执行彩灯代码,0不执行彩灯代码。
代码里用了太多的delay,效率太低了。
而且流水灯的 ...
可以帮忙改一下吗,我是个初学者,我在网上找了好多方法,你讲的这个应该也试了都没成功,我要废了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1