本帖最后由 一时间 于 2012-12-30 20:56 编辑
作品名称:流星花园
文章摘自:http://www.wxdxh.net/Di***bs/upload/forum.php?mod=viewthread&tid=2760 功能介绍:以STC单片机为控制核心制作“流星花园”,该制作以白雪公主的水晶床为模型制作。通过包装成为一款精致、趣味的单片机制作。它有三种花样分别为:“十字移”、“追赶灯”和“对头跑”。 制作过程: 1、准备元件:16个七彩LED、两个双电池盒、两个30PF的电容、一个11.0592的晶振、一个STC89C51单片机、一个40的芯片座 2、焊接16个七彩LED灯并如下图包装 原理分析: 1、 硬件制作 该作品通过单片机I/O口直接控制16个LED来实现“十字移”、“追赶灯”和“对头跑”。下面是它的原理图,在实际画PCB时为了连接方便,我将P1口改为P2口。
2、 软件编写 a、 总体程序通过在主程序中在while()大循环的情况下调用各子程序来实现制作显示 。 void main() { while(1) { uchar g; /**************十字移*****************/ g=10;c=50; while(g--) { P02sdzmdx();//子程序 } /**************三灯跑马左移*****************/ g=3;c=50; while(g--) { P2sdzmzy();//子程序 P0sdzmyy(); //子程序 } /**************单灯跑对头1*****************/ g=10;c=50; while(g--) { P0sdzmdx();//子程序 } } } b、 首先应定义I/O口 ***it P0_0=P0^0;//定义P0的第一个输出为P0_0。 c、其次是可调时的延时子程序,该调时通过改变变量c来任意调节时间,我用delay1ms(c)和给c赋值c=50来任意改变延时时间。 void delay1ms(uint c) { uchar j; while(c--) { for(j=124;j>0;j--); } } 此程序运用while和for语句,主要灵活处为while(c--) d、最后是“十字移”、“追赶灯”和“对头跑”的程序写法,主要是通过对I/O口赋值的。 作品经验总结:这个小制作适合初学者做,在做的过程中做好板子是关键。重要的是会使用DXP和简单的单片机C51程序,程序和流水灯类似。随后我会附上DXP的使用。 制作结果:
十字移(白雪公主的水晶床)
对头跑(白雪公主的水晶床)
|