tình hình là e đã đọc các bài viết về lad matrix trên 4rum rùi, thêm 1 ít mày mò nữa thì được cái mạch với code để nó hiện lên hình trái tim trên matrix 8x8.e đang vướng ở phần dịch nó sang trái,sang phải, đại loại là hình phải chuyển động. e gửi tất lên. a e góp ý giúp mình làm thế nào cho có hình chuyển động.
#include <REGX51.H>
#include <string.h>
unsigned char code code_Tab[8]=
{
0x66,0xFF,0xFF,0xFF,0x7E,0x3C,0x18,0x00 //hinh trai tim
};
unsigned char code code_row[8]= // quet hang
{
0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F
};
#define SH_C P2_0
#define DS_C P2_1
#define ST_C P2_2
#define SH_R P3_0
#define DS_R P3_1
#define ST_R P3_2
unsigned long Tck,F;
unsigned char Tckh,Tckl,X;
unsigned int Pos=0,lengh_STR;
unsigned char Tic=0;
void delay_ms(long ms)
{
long i,j;
for(i=0;i<=ms;i++)
for(j=0;j<=7;j++)
{;}
}
void dich_595_C(char in_C)
{
int k_C;
bit out_C;
for(k_C=0;k_C<8;k_C++)
{
out_C=in_C&0x80;
DS_C=out_C;
in_C=in_C<<1;
SH_C=1;
SH_C=0;
}
ST_C=1;//delay_ms(1);
ST_C=0;
}
void dich_595_R(char in_R)
{
int k_R;
bit out_R;
for(k_R=0;k_R<8;k_R++)
{
out_R=in_R&0x80;
DS_R=out_R;
in_R=in_R<<1;
SH_R=1;
SH_R=0;
}
ST_R=1;//delay_ms(1);
ST_R=0;
}
void main ()
{
unsigned int m;
while(1)
{ //n=0;
for(m=Pos;m<8+Pos;m++)
{
dich_595_C(code_Tab[m]);
dich_595_R(code_row[m]);
//P3=code_row[m];
delay_ms(10);
dich_595_R(0xFF);
}
}
}
#include <REGX51.H>
#include <string.h>
unsigned char code code_Tab[8]=
{
0x66,0xFF,0xFF,0xFF,0x7E,0x3C,0x18,0x00 //hinh trai tim
};
unsigned char code code_row[8]= // quet hang
{
0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F
};
#define SH_C P2_0
#define DS_C P2_1
#define ST_C P2_2
#define SH_R P3_0
#define DS_R P3_1
#define ST_R P3_2
unsigned long Tck,F;
unsigned char Tckh,Tckl,X;
unsigned int Pos=0,lengh_STR;
unsigned char Tic=0;
void delay_ms(long ms)
{
long i,j;
for(i=0;i<=ms;i++)
for(j=0;j<=7;j++)
{;}
}
void dich_595_C(char in_C)
{
int k_C;
bit out_C;
for(k_C=0;k_C<8;k_C++)
{
out_C=in_C&0x80;
DS_C=out_C;
in_C=in_C<<1;
SH_C=1;
SH_C=0;
}
ST_C=1;//delay_ms(1);
ST_C=0;
}
void dich_595_R(char in_R)
{
int k_R;
bit out_R;
for(k_R=0;k_R<8;k_R++)
{
out_R=in_R&0x80;
DS_R=out_R;
in_R=in_R<<1;
SH_R=1;
SH_R=0;
}
ST_R=1;//delay_ms(1);
ST_R=0;
}
void main ()
{
unsigned int m;
while(1)
{ //n=0;
for(m=Pos;m<8+Pos;m++)
{
dich_595_C(code_Tab[m]);
dich_595_R(code_row[m]);
//P3=code_row[m];
delay_ms(10);
dich_595_R(0xFF);
}
}
}
Comment