MÌnh đang làm đồ án tốt nghiệp có nhiều chổ chưa biết hết được , nhờ các anh chỉ giáo giúp .
Em đã hiển thị được chư cần hiển thị lên led ma trận, nhưng giờ e muốn chữ dịch qua trái và qua phải thì em phải làm sao. Dưới là code của em hiển thị chữ đứng yên .
CODE:
#include <REGX52.H>
#define SHIFT P2_0
#define LATCH P2_1
#define DATA P2_2
unsigned int byte_cot,che_bit,hang,chay,cot,lap;
unsigned char chay_ct;
unsigned char code ma_che_bit[]=
{0xFF,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
unsigned char code ma_chuong_trinh_1[]={
0xff,0x01,0x7D,0x7D,0x83,0xFF,//5D
0x83,0x7D,0x7D,0x83,0xff,//5o
0X07,0XEB,0XED,0XED,0XEB,0X07,0XFF,//7A
0x01,0xf9,0xf7,0xef,0xdf,0x3f,0x01,0xff,//8n
0xFD,0x01,0xFD,// 3t
0x83,0x7D,0x7D,0x83,//4o
0xFD,0x01,0xFD,0xFF,// 4t
0x01,0xf9,0xf7,0xef,0xdf,0x3f,0x01,0xff,//8n
0x83,0x7D,0x5D,0x19,0xFF,// 5G
0x01,0xEF,0xEF,0x01,//4H
0xFF,0x01,//2i
0xFF,0x01,0x6D,0x6D,0x7D,0xFF,//6e
0x01,0xED,0xED,0xED,0xF3// 5p
};
void delay(unsigned int time )
{
unsigned int i,j;
for(i=0;i<time;i++)
for(j=0;j<120;j++);
}
void chon_hang(unsigned char hang)
{
switch(hang)
{
case 1:
{
P0=0x7F;// HANG 1
break;
}
case 2:
{
P0=0xBF;//hang 2
break;
}
case 3:
{
P0=0xDF;//hang3
break;
}
case 4:
{
P0=0XEF;//hang 4
break;
}
case 5 :
{
P0=0xF7;// HANG 5
break;
}
case 6:
{
P0=0xFB;// hang 6
break;
}
case 7:
{
P0=0xFD;//hang 7
break;
}
case 8 :
{
P0=0xFE;// hang 8
break;
}
}
}
void main(void)
{
P3_2=1;
P3_3=1;
while(1)
{
for(hang=1;hang<9;hang++)
{
for(cot=64;cot>0;cot--)
{
che_bit=ma_che_bit[hang];
byte_cot=ma_chuong_trinh_1[cot];
DATA=(bit)(byte_cot&che_bit);
SHIFT=1;// dich cot
SHIFT=0;
DATA=1;
}
P0=0xff;
delay(2);
chon_hang(hang);
LATCH=1;
LATCH=0;
delay(1);
}
}
}
Hoặc tải về ở đây :
Em đã hiển thị được chư cần hiển thị lên led ma trận, nhưng giờ e muốn chữ dịch qua trái và qua phải thì em phải làm sao. Dưới là code của em hiển thị chữ đứng yên .
CODE:
#include <REGX52.H>
#define SHIFT P2_0
#define LATCH P2_1
#define DATA P2_2
unsigned int byte_cot,che_bit,hang,chay,cot,lap;
unsigned char chay_ct;
unsigned char code ma_che_bit[]=
{0xFF,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
unsigned char code ma_chuong_trinh_1[]={
0xff,0x01,0x7D,0x7D,0x83,0xFF,//5D
0x83,0x7D,0x7D,0x83,0xff,//5o
0X07,0XEB,0XED,0XED,0XEB,0X07,0XFF,//7A
0x01,0xf9,0xf7,0xef,0xdf,0x3f,0x01,0xff,//8n
0xFD,0x01,0xFD,// 3t
0x83,0x7D,0x7D,0x83,//4o
0xFD,0x01,0xFD,0xFF,// 4t
0x01,0xf9,0xf7,0xef,0xdf,0x3f,0x01,0xff,//8n
0x83,0x7D,0x5D,0x19,0xFF,// 5G
0x01,0xEF,0xEF,0x01,//4H
0xFF,0x01,//2i
0xFF,0x01,0x6D,0x6D,0x7D,0xFF,//6e
0x01,0xED,0xED,0xED,0xF3// 5p
};
void delay(unsigned int time )
{
unsigned int i,j;
for(i=0;i<time;i++)
for(j=0;j<120;j++);
}
void chon_hang(unsigned char hang)
{
switch(hang)
{
case 1:
{
P0=0x7F;// HANG 1
break;
}
case 2:
{
P0=0xBF;//hang 2
break;
}
case 3:
{
P0=0xDF;//hang3
break;
}
case 4:
{
P0=0XEF;//hang 4
break;
}
case 5 :
{
P0=0xF7;// HANG 5
break;
}
case 6:
{
P0=0xFB;// hang 6
break;
}
case 7:
{
P0=0xFD;//hang 7
break;
}
case 8 :
{
P0=0xFE;// hang 8
break;
}
}
}
void main(void)
{
P3_2=1;
P3_3=1;
while(1)
{
for(hang=1;hang<9;hang++)
{
for(cot=64;cot>0;cot--)
{
che_bit=ma_che_bit[hang];
byte_cot=ma_chuong_trinh_1[cot];
DATA=(bit)(byte_cot&che_bit);
SHIFT=1;// dich cot
SHIFT=0;
DATA=1;
}
P0=0xff;
delay(2);
chon_hang(hang);
LATCH=1;
LATCH=0;
delay(1);
}
}
}
Hoặc tải về ở đây :
Comment