找回密码
 立即注册

QQ登录

只需一步,快速开始

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

如何实现单片机8个led灯从两边向中间流水灯的程序?目前只会单向的流水

[复制链接]
跳转到指定楼层
楼主
ID:1076068 发表于 2023-5-8 15:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51单片机程序(8个LED灯)
想问一下如何实现51单片机8个led灯从两边向中间流水灯效果的程序,只会单向的流水效果。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:824490 发表于 2023-5-8 17:10 | 只看该作者
查表,简单粗暴绝对给力!
8个太少了,32个才好看。。
或是计算,如下:
//m^n函数
//返回值:m^n次方.
unsigned long  prv_pow(unsigned char m,unsigned char n)
{
        unsigned long result=1;         
        while(n--)        result=result*m;   
        return result;
}        

void main()
{   unsigned char i;   
for(i=0;i<4;i++)
{
P1=prv_pow(2,i)+prv_pow(2,7-i);
delay_ms(500);
}while(1);
}

回复

使用道具 举报

板凳
ID:374110 发表于 2023-5-8 17:32 | 只看该作者
可以定义一个数组每次取数组预存好的数,或者高位,低位分别*2或/2计算,看自己的喜好方法还是有不少
回复

使用道具 举报

地板
ID:584814 发表于 2023-5-8 17:32 | 只看该作者
这个很简单,最多几十行代码就可以。
你会单向的流水效果,可以试下反向的流动,再合成从中间起流动就可以了。
回复

使用道具 举报

5#
ID:123289 发表于 2023-5-9 09:04 | 只看该作者
换个思想吧,没有方向这一说!
1、将各个灯的明暗状态,看作是的个数组的组元素(A1,A2,A3,A4……)。A的每一位0/1对应一个灯的明暗。
2、每间隔一个时间TG,切换一个组元素,送出显示。
这样,改变TG的大小,就改变了速度。
改变,A1,A2,A3,A4值(或排序),就改变的LED灯的显示状态。
如果,A1,A2,A3,A4……的组合,形成左移的效果,看上去就左移了;形成右移的效果,看上去就右移了;看上去形成跳动的效果,看上去就跳动了……
你想怎么玩就怎么玩!
程序构思巧妙,易写,逻辑清晰。
你要玩的花色,就是在如何将LED的各种显示组合,编制了A1,A2,A3……
如果,你设计了N个方案(单灯左移,单灯右移,双灯左移,双灯右移,暂停、全闪、……),就做成N的数组。每按一次键就换一个数组取值,显示。"
回复

使用道具 举报

6#
ID:291668 发表于 2023-5-9 09:20 | 只看该作者
集思广益,多多益善。有想法就能实现
回复

使用道具 举报

7#
ID:908826 发表于 2023-5-9 09:32 | 只看该作者
定义一个数组是一个思路
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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