找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3491|回复: 16
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
今天正在写流水灯程序我想让流水灯
先亮P2.0流到P2.7停下来常亮,
然后再从P2.0流到P2.6常亮,
再从P2.0流到P2.5,
现象相当于一颗一颗叠起来,

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



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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 (20.92 KB, 下载次数: 46)

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[];}
明白了吗。
回复

使用道具 举报

5#
ID:876099 发表于 2021-3-15 23:39 来自手机 | 只看该作者
啤酒瓶子老大 发表于 2021-3-15 23:31
可以用一个数组。LED[]={0X01,......}
FOR
{然后P2=LED[];}

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

使用道具 举报

6#
ID:876099 发表于 2021-3-15 23:39 来自手机 | 只看该作者
yzwzfyz 发表于 2021-3-15 22:33
不要用直接用:P2.0-7
先设8个灯为:L1-L8,将你需的显示的形式一一列出:


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

使用道具 举报

7#
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();
}
回复

使用道具 举报

8#
ID:163285 发表于 2021-3-16 17:51 | 只看该作者
8乘8等于64种花样,即64个数据,每次读出延时一下就能实现。
回复

使用道具 举报

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

使用道具 举报

10#
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

谢谢我去看看
回复

使用道具 举报

11#
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

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

使用道具 举报

12#
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

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

使用道具 举报

13#
ID:876099 发表于 2021-3-17 22:35 | 只看该作者
感谢各位大神
回复

使用道具 举报

14#
ID:89515 发表于 2021-3-18 00:28 来自手机 | 只看该作者
1045964948 发表于 2021-3-17 22:33
但是流到第八位没办法常亮,我再思考思考,谢谢

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

使用道具 举报

15#
ID:378729 发表于 2021-3-18 19:16 | 只看该作者
光说不练 发表于 2021-3-16 17:51
8乘8等于64种花样,即64个数据,每次读出延时一下就能实现。

这个好,简洁明了
回复

使用道具 举报

16#
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;
}
回复

使用道具 举报

17#
ID:893973 发表于 2021-3-19 16:18 | 只看该作者
你碰到了什么问题呢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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