|
怎样使移动箭头后无图案的led灯熄灭,也就是图片里箭头移动后后面跟着的红色方块。
#include <reg51.h>
//定义74HC595控制管脚
sbit SCK=P3^6;
sbit RCK=P3^5;
sbit SER=P3^4;
unsigned char matrixLED1[8]={0x00,0x38,0x38,0x38,0xfe,0x7c,0x38,0x10};//LED点阵高电平端口数据
unsigned char temp[8];//存储改动后的图形
unsigned char matrixLED0[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//LED点阵低电平端口数据
void delay(unsigned int a)
{
while(a--);
}
void col_data(unsigned char dat)
{
unsigned char i=0;
for(i=0;i<8;i++)//循环8次即可将一个字节写入寄存器中
{SER=dat>>7;//!优先传输一个字节中的高位
dat<<=1;//将下一位移动到高位
SCK=0;
delay(1);
SCK=1;
delay(1); //上升沿时数据移位
}
RCK=0;
delay(1);
RCK=1;//上升沿时移位寄存器数据并行输出
}
void main()
{
unsigned char i,j,k;
while(1)
{
for (i=0;i<15;i++)//调整待显示图形数据
{
if(i<8)
{
for(j=0;j<8;j++) temp[j]=matrixLED0[j]<<(7-i);
}
else
{
for(j=0;j<8;j++)
temp[j]=matrixLED0[j]>>(i-7);
}
for(k=0;k<5;k++)
{
for(j=0;j<8;j++)
{
P0=temp[j];
col_data(matrixLED1[j]);//传送高电平端口数据
delay(100);
col_data(0x00);
}
}}}}
|
|