找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4462|回复: 16
收起左侧

单片机流水灯的叠放程序 求思路

[复制链接]
ID:876099 发表于 2021-3-15 20:31 | 显示全部楼层 |阅读模式
今天正在写流水灯程序我想让流水灯
先亮P2.0流到P2.7停下来常亮,
然后再从P2.0流到P2.6常亮,
再从P2.0流到P2.5,
现象相当于一颗一颗叠起来,

直到所有的灯亮完。
第一次发帖不知道我想表达的问题描述清除没有,希望各位大神帮助一下解决问题谢谢
CAX{}@P7FPO$`{JW~WWIUSY.png


回复

使用道具 举报

ID:876099 发表于 2021-3-15 20:44 | 显示全部楼层

RE: 单片机流水灯的叠放程序求帮助

今天正在写流水灯程序我想让流水灯
先亮P2.0流到P2.7停下来常亮,
然后再从P2.0流到P2.6常亮,
再从P2.0流到P2.5,
现象相当于一颗一颗叠起来,

直到所有的灯亮完。
第一次发帖不知道我想表达的问题描述清除没有,希望各位大神帮助一下解决问题谢谢
下面附有图
CAX{}@P7FPO$`{JW~WWIUSY.png

流水灯.rar

7.24 KB, 下载次数: 3

回复

使用道具 举报

ID:123289 发表于 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张灯定义一下,就可以了。
回复

使用道具 举报

ID:230742 发表于 2021-3-15 23:31 | 显示全部楼层
可以用一个数组。LED[]={0X01,......}
FOR
{然后P2=LED[];}
明白了吗。
回复

使用道具 举报

ID:876099 发表于 2021-3-15 23:39 来自触屏版 | 显示全部楼层
啤酒瓶子老大 发表于 2021-3-15 23:31
可以用一个数组。LED[]={0X01,......}
FOR
{然后P2=LED[];}

这个能说详细一点吗谢谢
回复

使用道具 举报

ID:876099 发表于 2021-3-15 23:39 来自触屏版 | 显示全部楼层
yzwzfyz 发表于 2021-3-15 22:33
不要用直接用:P2.0-7
先设8个灯为:L1-L8,将你需的显示的形式一一列出:


这个能说详细一点吗谢谢
回复

使用道具 举报

ID:693038 发表于 2021-3-16 11:07 | 显示全部楼层
unsigned char a=0x01;
P2 = 0;
for(i=0;i<8;i++){
P2=P2|(a<<i);
delay_1s();
}
回复

使用道具 举报

ID:163285 发表于 2021-3-16 17:51 | 显示全部楼层
8乘8等于64种花样,即64个数据,每次读出延时一下就能实现。
回复

使用道具 举报

ID:89515 发表于 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);
}
注意:逻辑没错,程序没编译,自己修改
回复

使用道具 举报

ID:876099 发表于 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

谢谢我去看看
回复

使用道具 举报

ID:876099 发表于 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

但是流到第八位没办法常亮,我再思考思考,谢谢
回复

使用道具 举报

ID:876099 发表于 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

好了可以了,非常感谢
回复

使用道具 举报

ID:876099 发表于 2021-3-17 22:35 | 显示全部楼层
感谢各位大神
回复

使用道具 举报

ID:89515 发表于 2021-3-18 00:28 来自触屏版 | 显示全部楼层
1045964948 发表于 2021-3-17 22:33
但是流到第八位没办法常亮,我再思考思考,谢谢

改j数组加0xff. 这个已经没难度了吧!!!
回复

使用道具 举报

ID:378729 发表于 2021-3-18 19:16 | 显示全部楼层
光说不练 发表于 2021-3-16 17:51
8乘8等于64种花样,即64个数据,每次读出延时一下就能实现。

这个好,简洁明了
回复

使用道具 举报

ID:89515 发表于 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;
}
回复

使用道具 举报

ID:893973 发表于 2021-3-19 16:18 | 显示全部楼层
你碰到了什么问题呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表