51单片机点阵:想设置让点阵滚动显示实心和空心,实际上是只滚动显示了一次实心和空心,而且在空心往上滚动的时候下面滚上来的是乱的图案,之后又完整的出现实心开始滚动,请问应该怎么设置让它循环滚动显示实心和空心啊?
代码:
#include <reg52.h>
#include <intrins.h>
sbit DIO =P3^4; //串行数据口 P3^4
sbit S_CLK =P3^5 ; //移位寄存器的时钟线 P3^5
sbit R_CLK=P3^6; //输出锁存器的时钟线 P3^6
unsigned char code table[16]={
0xFF,0x99,0x08,0x00,0x00,0x81,0xC3,0xE7,
0xFF,0x99,0x6A,0x76,0x7E,0xBD,0xDB,0xE7
};
unsigned char i,dat;//常量不能参与运算,要移位。运算
//0x83,0xAB,0x83,0xAB,0x83,0xEE,0xE0,0xFF//电
void send_Byte(unsigned char dat)
{
unsigned char i;
S_CLK=0;
R_CLK=0;
for (i=0;i<8;i++)
{
if (dat & 0x01)
DIO=1;
else
DIO=0;
S_CLK=1;
dat = dat>>1;// dat >>=1 也可
S_CLK =0;
}
}
void main()
{
//ROW(行) 0x80,COL(列) 0xfe
unsigned char j,k,ROW;
unsigned int z;
while (1)
{
for (k=0;k<16;k++)
{
for (z=0;z<1000;z++)
{
ROW=0x80;
for (j=0;j<8;j++)
{
send_Byte (table[j+k]);
send_Byte (ROW);
R_CLK=1;
R_CLK=0;
ROW=_cror_(ROW,1);
}
}
}
}
}