Thân chào các pác ! Em là thành viên mới.
Em mới học môn vxl và cấu trúc máy tinh. Đề tài là lập trình keil c giao tiếp giữa máy tính và led matrix qua cổng com : Nhập 1 chuõi ký tự từ bàn phím và cho chạy trên led matrix 8x32.(chạy từ phải sang trái)
Em có đoạn code cho chữ chạy rồi nhưng chi có 1 chữ chạy chứ ko phải 1 chuỗi va còn đoạn code giao tiếp với máy tinh qua cổng com thì em viết con dở dang và thực sự bế tắc.Mong các pro giúp em với. Em sắp phải nộp đề tài rôi.Cảm ơn các pro nhiều.
Đoạn code nè các pro ơi:
#include <REGX51.H>
#define Hang P0
#define Cot P1
#define soled 4
#define socotled 8
unsigned char code_kytu[5];
unsigned char ch;
//==========================
void SetupSerial()
{
SCON = 0x52; /* Che do 1: 8-bit UART, cho phep truyen */
TMOD = 0x20; /* timer 1 che do 2: 8-Bit tu dong nap lai. */
TH1 = 0xfd ; /* toc do 9600 baud */
TL1 = 0xfd ;
TI = 0; /* co ngat nha^n.=0*/
RI=0; /* co ngat' truye^n =0*/
TR1 = 1; /* timer 1 run */
ES =1; /* cho phep ngat noi tiep */
}
//===========================
void nhan(void) interrupt 4 //Chuong trinh con dung ngat noi tiep
{ int i=0;
while(SBUF!='$')
{
if(RI)
{RI=0;
if(SBUF!='$') chuoi[i++]=SBUF; // ky tu $ bieu thi cho ket thuc 1 chuoi
}
}
}
//===========================
void delay(long time)
{ long n;
for(n=0;n<time;n++){;}
}
void dichled();
void dichled()
{
int i,dich,led,tre,soled5;
soled5=soled*socotled/5;
for (led=0;led<soled5;led++)
for(dich=0;dich<5;dich++) //dich
for(tre=0;tre<30;tre++) //delay chay chu
for(i=0;i<5;i++)
{Cot=i+led*5+dich;
Hang=code_kytu[i];
delay(50); }
Hang=0;Cot=0;delay(500) ;
}
void main()
{
SetupSerial(); //Khoi tao cac thong so cho truyen thong noi tiep
EA = 1; //Cho phep ngat nhung chi có ngat noi tiep duoc dung
while(1)//Em ko biet viet chuong trinh nhan du lieu tu pc va giao tiep nhu the nao?
{ //Mong cac bro giup do
if (ch==65) //65 la ma DEC cua chu A
code_kytu[5]={0x7c,0x82,0x82,0x82,0x44}; // chu A
}
}
/*Day la cac ma ky tu cua em.Em se lam them cho du 26 chu cai va 9 chu so
0x7c,0x82,0x82,0x82,0x44// chu C
0xfe,0x92,0x92,0x92,0x82//chu E
0xfe,0x82,0x82,0x82,0x7c//chu D
0x7c,0x82,0x92,0x92,0x74//chu G
0x02,0x02,0xfe,0x02,0x02// chu T
0xfe,0x92,0x92,0x92,0x6c//chu C
0x7c,0x82,0x82,0x82,0x7c//chu O
0xfe,0x04,0x08,0x10,0xfe//chu N
0xfe,0x10,0x10,0x10,0xfe//chu H
0xfe,0x04,0x08,0x04,0xfe//chu M
0x82,0xfe,0x82,0x00,0x00//chu I
0x7e,0x80,0x80,0x80,0x7e//chu U
0x4c,0x92,0x92,0x92,0x64//chu S*/
Đây la file mô phỏng protues của em.
http://www.mediafire.com/?fzqe1p92q3d8azf
Em mới học môn vxl và cấu trúc máy tinh. Đề tài là lập trình keil c giao tiếp giữa máy tính và led matrix qua cổng com : Nhập 1 chuõi ký tự từ bàn phím và cho chạy trên led matrix 8x32.(chạy từ phải sang trái)
Em có đoạn code cho chữ chạy rồi nhưng chi có 1 chữ chạy chứ ko phải 1 chuỗi va còn đoạn code giao tiếp với máy tinh qua cổng com thì em viết con dở dang và thực sự bế tắc.Mong các pro giúp em với. Em sắp phải nộp đề tài rôi.Cảm ơn các pro nhiều.
Đoạn code nè các pro ơi:
#include <REGX51.H>
#define Hang P0
#define Cot P1
#define soled 4
#define socotled 8
unsigned char code_kytu[5];
unsigned char ch;
//==========================
void SetupSerial()
{
SCON = 0x52; /* Che do 1: 8-bit UART, cho phep truyen */
TMOD = 0x20; /* timer 1 che do 2: 8-Bit tu dong nap lai. */
TH1 = 0xfd ; /* toc do 9600 baud */
TL1 = 0xfd ;
TI = 0; /* co ngat nha^n.=0*/
RI=0; /* co ngat' truye^n =0*/
TR1 = 1; /* timer 1 run */
ES =1; /* cho phep ngat noi tiep */
}
//===========================
void nhan(void) interrupt 4 //Chuong trinh con dung ngat noi tiep
{ int i=0;
while(SBUF!='$')
{
if(RI)
{RI=0;
if(SBUF!='$') chuoi[i++]=SBUF; // ky tu $ bieu thi cho ket thuc 1 chuoi
}
}
}
//===========================
void delay(long time)
{ long n;
for(n=0;n<time;n++){;}
}
void dichled();
void dichled()
{
int i,dich,led,tre,soled5;
soled5=soled*socotled/5;
for (led=0;led<soled5;led++)
for(dich=0;dich<5;dich++) //dich
for(tre=0;tre<30;tre++) //delay chay chu
for(i=0;i<5;i++)
{Cot=i+led*5+dich;
Hang=code_kytu[i];
delay(50); }
Hang=0;Cot=0;delay(500) ;
}
void main()
{
SetupSerial(); //Khoi tao cac thong so cho truyen thong noi tiep
EA = 1; //Cho phep ngat nhung chi có ngat noi tiep duoc dung
while(1)//Em ko biet viet chuong trinh nhan du lieu tu pc va giao tiep nhu the nao?
{ //Mong cac bro giup do
if (ch==65) //65 la ma DEC cua chu A
code_kytu[5]={0x7c,0x82,0x82,0x82,0x44}; // chu A
}
}
/*Day la cac ma ky tu cua em.Em se lam them cho du 26 chu cai va 9 chu so
0x7c,0x82,0x82,0x82,0x44// chu C
0xfe,0x92,0x92,0x92,0x82//chu E
0xfe,0x82,0x82,0x82,0x7c//chu D
0x7c,0x82,0x92,0x92,0x74//chu G
0x02,0x02,0xfe,0x02,0x02// chu T
0xfe,0x92,0x92,0x92,0x6c//chu C
0x7c,0x82,0x82,0x82,0x7c//chu O
0xfe,0x04,0x08,0x10,0xfe//chu N
0xfe,0x10,0x10,0x10,0xfe//chu H
0xfe,0x04,0x08,0x04,0xfe//chu M
0x82,0xfe,0x82,0x00,0x00//chu I
0x7e,0x80,0x80,0x80,0x7e//chu U
0x4c,0x92,0x92,0x92,0x64//chu S*/
Đây la file mô phỏng protues của em.
http://www.mediafire.com/?fzqe1p92q3d8azf
Comment