51单片机LED流水灯怎么实现从两边同时逐个点亮到中间,又从中间逐个熄灯到两边
答案:2 悬赏:70 手机版
解决时间 2021-11-17 15:39
- 提问者网友:趣果有间
- 2021-11-16 17:21
51单片机LED流水灯怎么实现从两边同时逐个点亮到中间,又从中间逐个熄灯到两边
最佳答案
- 五星知识达人网友:荒野風
- 2021-11-16 17:51
简单点的,用表格,事先计算好,放到ROM中,用的时候逐行编译输出就可以。
复杂点的,开一个缓冲区,用循环程序,根据花样的不同,每次填充一行,并输出,然后再计算一下行。除非表格太大,不建议这样用。
#define len 8
char tablelist[][len] =
{
"00000000",
"10000001",
"01000010",
"00100100",
"00011000",
}
outline( char * s )
{
int i;
for(i=0; i {
if ( s[i] == '0' )
{
// 对应的灯亮
}
else
{
// 对应的灯灭
}
}
}
main()
{
for(;;)
{
outline( &tablelist[i]);
delay(..);
}
}
复杂点的,开一个缓冲区,用循环程序,根据花样的不同,每次填充一行,并输出,然后再计算一下行。除非表格太大,不建议这样用。
#define len 8
char tablelist[][len] =
{
"00000000",
"10000001",
"01000010",
"00100100",
"00011000",
}
outline( char * s )
{
int i;
for(i=0; i
if ( s[i] == '0' )
{
// 对应的灯亮
}
else
{
// 对应的灯灭
}
}
}
main()
{
for(;;)
{
outline( &tablelist[i]);
delay(..);
}
}
全部回答
- 1楼网友:鱼忧
- 2021-11-16 18:58
如果只用一个端口的话,你可以建一个表,如果LED是高电平点亮的话,里面存放数据0x81,0x42,0x24,0x18
如果LED是低电平点亮的话,里面存放数据
0x7e,0xbd,0xdb,0xe7
然后在循环里一直按照数组下标0到3递增3到0递减将数组里面的数赋给端口即可。
即一个大循环里面再加两个小循环即可,具体多少次可以在外面大循环设置。
如果LED是低电平点亮的话,里面存放数据
0x7e,0xbd,0xdb,0xe7
然后在循环里一直按照数组下标0到3递增3到0递减将数组里面的数赋给端口即可。
即一个大循环里面再加两个小循环即可,具体多少次可以在外面大循环设置。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯