标题: 如何实现单片机8个led灯从两边向中间流水灯的程序?目前只会单向的流水 [打印本页]

作者: fff废旧恶气    时间: 2023-5-8 15:17
标题: 如何实现单片机8个led灯从两边向中间流水灯的程序?目前只会单向的流水
51单片机程序(8个LED灯)
想问一下如何实现51单片机8个led灯从两边向中间流水灯效果的程序,只会单向的流水效果。

作者: 名字不是重点    时间: 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);
}


作者: HU1123    时间: 2023-5-8 17:32
可以定义一个数组每次取数组预存好的数,或者高位,低位分别*2或/2计算,看自己的喜好方法还是有不少
作者: man1234567    时间: 2023-5-8 17:32
这个很简单,最多几十行代码就可以。
你会单向的流水效果,可以试下反向的流动,再合成从中间起流动就可以了。
作者: yzwzfyz    时间: 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的数组。每按一次键就换一个数组取值,显示。"

作者: li64331218    时间: 2023-5-9 09:20
集思广益,多多益善。有想法就能实现

作者: 13205495918    时间: 2023-5-9 09:32
定义一个数组是一个思路




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