Code cho các bác tham khảo nhé, mún chỉnh nhanh chậm thì sửa 2 dòng delay hoặc delay vòng lập, muốn thêm port để đk 8x16 hay 8x24 thì gọi thêm thôi, chúc các bác thành công:
#include <REGX51.H>
/* Cot tu P1.0 den 1.7
Hang tu P2.0 den P3.7
De quet dua muc logic 0 lan luot ra cong 0
*/
/* Ham tre */
void delay(long time)
{
long n;
for(n=0; n<time; n++)
{
;
}
}
unsigned char kytu1[9];
unsigned char k=0;
/* Ham nap gia tri hien thi cac ky tu vao mang kytu1
co 8 gia tri dua ra va 1 gia tri khong bat den nao de cac ky tu cach nhau 1 cot */
void mahoa(unsigned char x)
{
switch(x)
{
case 0: { kytu1[0]=0x00; kytu1[1]=0x00; kytu1[2]=0x00; kytu1[3]=0x00;
kytu1[4]=0x00; kytu1[5]=0x00; kytu1[6]=0x00; kytu1[7]=0x00; kytu1[8]=0x00;
break; }
case 1: { kytu1[0]=0x00; kytu1[1]=0x3E; kytu1[2]=0x0A; kytu1[3]=0x0E;
kytu1[4]=0x00; kytu1[5]=0x38; kytu1[6]=0x08; kytu1[7]=0x08; kytu1[8]=0x00;
break; }
case 2: { kytu1[0]=0x00; kytu1[1]=0x38; kytu1[2]=0x28; kytu1[3]=0x38;
kytu1[4]=0x00; kytu1[5]=0x38; kytu1[6]=0xA8; kytu1[7]=0xF8; kytu1[8]=0x00;
break; }
case 3: { kytu1[0]=0x00; kytu1[1]=0x38; kytu1[2]=0x08; kytu1[3]=0x08;
kytu1[4]=0x00; kytu1[5]=0x38; kytu1[6]=0x28; kytu1[7]=0x38; kytu1[8]=0x20;
break; }
case 4: { kytu1[0]=0x20; kytu1[1]=0x00; kytu1[2]=0x38; kytu1[3]=0x08;
kytu1[4]=0x38; kytu1[5]=0x08; kytu1[6]=0x38; kytu1[7]=0x00; kytu1[8]=0x38;
break; }
case 5: { kytu1[0]=0x38; kytu1[1]=0x08; kytu1[2]=0x38; kytu1[3]=0x08;
kytu1[4]=0x38; kytu1[5]=0x00; kytu1[6]=0x38; kytu1[7]=0x00; kytu1[8]=0x38;
break; }
case 6: { kytu1[0]=0x38; kytu1[1]=0x08; kytu1[2]=0x38; kytu1[3]=0x00;
kytu1[4]=0x38; kytu1[5]=0xA8; kytu1[6]=0xF8; kytu1[7]=0x00; kytu1[8]=0x00;
break; }
case 7: { kytu1[0]=0x00; kytu1[1]=0x3C; kytu1[2]=0x0A; kytu1[3]=0x3C;
kytu1[4]=0x02; kytu1[5]=0x3E; kytu1[6]=0x02; kytu1[7]=0x00; kytu1[8]=0x3E;
break; }
case 8: { kytu1[0]=0x3E; kytu1[1]=0x2A; kytu1[2]=0x3E; kytu1[3]=0x00;
kytu1[4]=0x2E; kytu1[5]=0x2A; kytu1[6]=0x3E; kytu1[7]=0x00; kytu1[8]=0x3E;
break; }
case 9: { kytu1[0]=0x3E; kytu1[1]=0x22; kytu1[2]=0x22; kytu1[3]=0x00;
kytu1[4]=0x28; kytu1[5]=0x10; kytu1[6]=0x28; kytu1[7]=0x00; kytu1[8]=0x28;
break; }
case 10: { kytu1[0]=0x28; kytu1[1]=0x10; kytu1[2]=0x28; kytu1[3]=0x00;
kytu1[4]=0x00; kytu1[5]=0x00; kytu1[6]=0x00; kytu1[7]=0x00; kytu1[8]=0x00;
break; }
case 11: { kytu1[0]=0x00; kytu1[1]=0x00; kytu1[2]=0x00; kytu1[3]=0x00;
kytu1[4]=0x00; kytu1[5]=0x00; kytu1[6]=0x00; kytu1[7]=0x00; kytu1[8]=0x00;
break; }
case 12: { kytu1[0]=0x00; kytu1[1]=0x00; kytu1[2]=0x00; kytu1[3]=0x00;
kytu1[4]=0x00; kytu1[5]=0x00; kytu1[6]=0x00; kytu1[7]=0x00; kytu1[8]=0x00;
break; }
}
}
/* Ham quet led ma tran_ vua hien thi vua dich ky tu dan sang trai*/
void hienthi(void)
{
unsigned char n,m,lap;
unsigned char cot[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
for(m=0; m<8 ; m++)
{
for(lap=0; lap<10; lap ++)
{
for(n=0; n<8 ; n++)
{
if((n+m)<9 )
{
mahoa(k);
P0=cot[n];
P2=kytu1[n+m];
delay(45);
}
if((n+m) > 7)
{
mahoa(k+1);
P0=cot[n];
P2=kytu1[n+m-8];
delay(45);
}
P0=0xFF;
P2=0x00;
}
}
}
}
void main(void)
{
while(1)
{
hienthi();
k=k+1;
if(k==12) k=0;
}
}
0 nhận xét :
Đăng nhận xét