本程序仅供学习交流用,不得用于任何商业用途
程序改进思路:可以加入流星下落速度调整,即下文的
staytime
可以用数组替换
参考数组
226,160,130,113,101,92,85,80,75,71,68,65,63,60,58,56,55,53,52,51,49,48,47,46,45,44
本程序只用到
24
个状态
24
个数就够了,如果从
226
开始第一个时间稍长有停顿感。
同时得改进第二颗流星的位置,
以停留时间为准。
以上面的从
226
开始为例,
假如第二颗流
星出现在第
12
个状态,则第二颗流星的第一个状态停留时间
226
约为
63+60+58+56
=
238
即第
12
个状态到第
15
个状态停留时间之和(即第
2
颗流星第
1
个状态在第一颗流星的
12
到
15
状态保持不变)
,
依次类推可算出第二颗流星第
2
,
3
,
4
状态出现的位置。
但是会引起
第二颗流星状态不流畅,
改进措施就是调整数组,
对数组进行非线性变换,
以达到较好的效
果。
参考数组能较好模拟出下落效果。
当然自己重新构造数组达到效果也不错。
最理想是理
解本程序后,重新写程序,加入时间调控项进行完美模拟。
C
程序
#include”reg52.h”
#include”table.h”
//
编码文件请参考后面的数组
#define bit(n) (0x01<
#define LED0 P1
#define LED1 P0
char
pd[8];//
端口数据
8 5 3 1
char
stateN=0;
int staytime=50; //
单个状态停留时间
,
设置速度
void delay(int ms); //
延时函数
void display(char N);//
根据传入的状态数,获得单颗流星相应的端口数据
void main()
{
char
n2=96,n4=20,n6=6,n8=1;
//
调整辉光,形成扫尾
while(1)
{
int i=0;
display(stateN);
for(i=0;i
{
LED0=pd[0];
//
0000 0000
8LED
点亮
LED1=pd[1];
delay(n8) ;
LED0=pd[2];
//1100 0000
6LED
点亮
LED1=pd[3];
delay(n6) ;
LED0=pd[4];
//1111 0000
4LED
点亮
相关资源:专业LED灯光动画制作软件(安装后直接用!)_setup安装包-Delphi工具…
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!