标题: 单片机流水灯的叠放程序 求思路 [打印本页]

作者: 1045964948    时间: 2021-3-15 20:31
标题: 单片机流水灯的叠放程序 求思路
今天正在写流水灯程序我想让流水灯
先亮P2.0流到P2.7停下来常亮,
然后再从P2.0流到P2.6常亮,
再从P2.0流到P2.5,
现象相当于一颗一颗叠起来,

直到所有的灯亮完。
第一次发帖不知道我想表达的问题描述清除没有,希望各位大神帮助一下解决问题谢谢




作者: 1045964948    时间: 2021-3-15 20:44
标题: RE: 单片机流水灯的叠放程序求帮助
今天正在写流水灯程序我想让流水灯
先亮P2.0流到P2.7停下来常亮,
然后再从P2.0流到P2.6常亮,
再从P2.0流到P2.5,
现象相当于一颗一颗叠起来,

直到所有的灯亮完。
第一次发帖不知道我想表达的问题描述清除没有,希望各位大神帮助一下解决问题谢谢
下面附有图

CAX{}@P7FPO$`{JW~WWIUSY.png (20.92 KB, 下载次数: 46)

CAX{}@P7FPO$`{JW~WWIUSY.png

流水灯.rar

7.24 KB, 下载次数: 3


作者: yzwzfyz    时间: 2021-3-15 22:33
不要用直接用:P2.0-7
先设8个灯为:L1-L8,将你需的显示的形式一一列出:

第一步:L3,4 亮1秒
第二步:L1,2,5,6  亮1秒
第三步:……
……
完成上面程序后,再决定L1-8是哪张灯,这样做很机动。
方法举例:定义L1为P0.6……,将8张灯定义一下,就可以了。
作者: 啤酒瓶子老大    时间: 2021-3-15 23:31
可以用一个数组。LED[]={0X01,......}
FOR
{然后P2=LED[];}
明白了吗。
作者: 1045964948    时间: 2021-3-15 23:39
啤酒瓶子老大 发表于 2021-3-15 23:31
可以用一个数组。LED[]={0X01,......}
FOR
{然后P2=LED[];}

这个能说详细一点吗谢谢
作者: 1045964948    时间: 2021-3-15 23:39
yzwzfyz 发表于 2021-3-15 22:33
不要用直接用:P2.0-7
先设8个灯为:L1-L8,将你需的显示的形式一一列出:


这个能说详细一点吗谢谢
作者: lincheng15    时间: 2021-3-16 11:07
unsigned char a=0x01;
P2 = 0;
for(i=0;i<8;i++){
P2=P2|(a<<i);
delay_1s();
}
作者: 光说不练    时间: 2021-3-16 17:51
8乘8等于64种花样,即64个数据,每次读出延时一下就能实现。
作者: mengzhixinheng    时间: 2021-3-17 13:55
uchar tab[]={0,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe};
for(j=8;j>0;j--)
for{k=0;k<j;k++}
{
       P2=(0x01<<k)|tab(8-j);
        delay(500);
}
注意:逻辑没错,程序没编译,自己修改

作者: 1045964948    时间: 2021-3-17 22:20
mengzhixinheng 发表于 2021-3-17 13:55
uchar tab[]={0,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe};
for(j=8;j>0;j--)
for{k=0;k

谢谢我去看看
作者: 1045964948    时间: 2021-3-17 22:33
mengzhixinheng 发表于 2021-3-17 13:55
uchar tab[]={0,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe};
for(j=8;j>0;j--)
for{k=0;k

但是流到第八位没办法常亮,我再思考思考,谢谢
作者: 1045964948    时间: 2021-3-17 22:35
mengzhixinheng 发表于 2021-3-17 13:55
uchar tab[]={0,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe};
for(j=8;j>0;j--)
for{k=0;k

好了可以了,非常感谢
作者: 1045964948    时间: 2021-3-17 22:35
感谢各位大神
作者: mengzhixinheng    时间: 2021-3-18 00:28
1045964948 发表于 2021-3-17 22:33
但是流到第八位没办法常亮,我再思考思考,谢谢

改j数组加0xff. 这个已经没难度了吧!!!
作者: wc8841484    时间: 2021-3-18 19:16
光说不练 发表于 2021-3-16 17:51
8乘8等于64种花样,即64个数据,每次读出延时一下就能实现。

这个好,简洁明了
作者: mengzhixinheng    时间: 2021-3-19 01:36
mengzhixinheng 发表于 2021-3-17 13:55
uchar tab[]={0,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe};
for(j=8;j>0;j--)
for{k=0;k

uchar j,k,z;
for(j=8;j>0;j--)
{
     for{k=0;k<j;k++}
    {
            P2=(0x01<<k)|z;
             delay(500);
     }
     z=P2;
}
作者: 大岩蛇    时间: 2021-3-19 16:18
你碰到了什么问题呢




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1