第二十六课 点阵之二 玩流水灯
这是一个有趣的实验
程序讲解
/*--------------------------------------------------------------*/
//LED8*8滚动显示
#include <reg52.h>
#include "74HC595.H"
#include "Beep.H"
/*--------------------------------------------------------------*/
//延时200ms 函数定义
void delay(void)
{
unsigned char i,j,k;
for(i=201;i>0;i--)
for(j=32;j>0;j--)
for(k=14;k>0;k--);
}
/*--------------------------------------------------------------*/
//定点显示,一次只显示一个点
void gotoxy(unsigned char x, unsigned char y)
{
Ser_IN(0x01 << x); //列选
Ser_IN(~(0x01 << y)); //行数据
Par_OUT(); //上升沿锁存输出
}
/*--------------------------------------------------------------*/
//主函数
void main (void)
{
char i, j;
for(j = 0; j < 5; j++) //逆时针方向转动 j用于控制移动的点数
{
for(i = j ; i < 8-j; i++)
{
gotoxy(j, i); //此时 j 对应x,i 对应y,x不变 y增大,即垂直下移
speaker(); //移一次,响一次
delay(); //延时,让垂直移动速度慢
}
for(i = j+1 ; i < 8-j; i++)
{
gotoxy(i, 7-j); //此时 i 对应x,7- j 对应y,x增大 y 不变,即水平右移
speaker(); //移一次,响一次
//delay(); //取消延时,水平速度快
}
for(i = j+1 ; i < 8-j; i++)
{
gotoxy(7-j, 7-i); //此时 7- j 对应x,7- i 对应y,x不变y减小 ,即垂直上移
speaker(); //移一次,响一次
delay(); //延时,让垂直移动速度慢
}
for(i = j+1 ; i < 7-j; i++)
{
gotoxy(7-i, j); //此时7- i 对应x,j 对应y,x减小 y不变,即水平左移
speaker(); //移一次,响一次
//delay(); //取消延时,水平速度快
}
}
for(j = 4; j >= 0; j--) //顺时针方向转动 j用于控制移动的点数(是上次的逆向)
{
for(i = 6-j ; i >= j+1; i--)
{
gotoxy(7-i, j); //此时7- i 对应x,j 对应y,x增大 y 不变,即水平右移
speaker(); //移一次,响一次
//delay(); //取消延时,水平速度快
}
for(i = 7-j ; i >= j+1; i--)
{
gotoxy(7-j, 7-i); //此时 7- j 对应x,7- i 对应y,x不变 y增大,即垂直下移
speaker(); //移一次,响一次
//delay(); //取消延时,垂直速度快
}
for(i = 7-j ; i >= j+1; i--)
{
gotoxy(i, 7-j); //此时 i 对应x,7- j 对应y,x减小 y不变,即水平左移
speaker(); //移一次,响一次
//delay(); //取消延时,水平速度快
}
for(i = 7-j ; i >= j; i--)
{
gotoxy(j, i); //此时 j 对应x,i 对应y,x不变y减小 ,即垂直上移
speaker(); //移一次,响一次
//delay(); //取消延时,水平速度快
}
}
}
本节重点:
1、x、y坐标的改变方式(for循环的嵌套使用),希望大家能把程序运行产生的点的轨迹在纸上画出来,这样有助于理解程序。
另:点移动其实就四句话:x增大 y 不变,点水平右移;x减小 y不变,点水平左移;x不变 y增大,点垂直下移;x不变y减小 ,点垂直上移。花样就看你用什么样的方式改变x、y了
演示视屏:
http://v.youku.com/v_show/id_XOTIzNjU2MTY=.html
相关程序:https://static.assets-stash.eet-china.com/album/old-resources/2009/6/3/ef7bf4be-fcc7-478a-a9ff-6ffea41183de.rar
用户1576445 2011-3-15 15:02