Nguyên văn bởi Mr_se7en
Xem bài viết
Mình kiếm được tài liệu rồi đây. Đã làm chạy thành công rồi. Chương trình này đưa 24 chữ cái ( Chữ IN HOA đó nha) vào rối muốn chữ nào xuât ra thì chỉ việc đổi chữ "DEMO" thành chữ mình muốn nha. Chúc bạn thành công
#include <AT89X52.h>
//--------------------------------
//khai bao bien
//16hang, 4led
//P0 SELECT HANG
sbit clk = P2^5;
sbit s_clk = P2^4;
sbit data_d = P2^6;
sbit data_x = P2^7;
//--------------------------------
unsigned char n,m,l,step,color =0;
unsigned int count =0,temp_1=0,temp_2=0;
//----------------------------------------------
/*font du lieu chi lap trinh cho chu IN HOA,
neu muon cho chu thuong thi tao them font chu IN THUONG
cho bang ma font */
//FONT TIENG VIET 24 CHU CAI
unsigned char code lib_font[]={
0x00,0x00,0x00,0x10,0x38,0x7C,0xFE,0xC6,0xC6,0xFE, 0xFE,0xC6,0xC6,0x00,0x00,0x00
,0x00,0x00,0x00,0xF8,0xFE,0xC6,0xC6,0xFC,0xFC,0xC6 ,0xC6,0xFE,0xFC,0x00,0x00,0x00
,0x00,0x00,0x00,0x7C,0xFE,0xC0,0xC0,0xC0,0xC0,0xC0 ,0xC0,0xFE,0x7C,0x00,0x00,0x00
,0x00,0x00,0x00,0xF8,0xFC,0xC6,0xC6,0xC6,0xC6,0xC6 ,0xC6,0xFC,0xF8,0x00,0x00,0x00
,0x00,0x00,0x00,0xFE,0xFE,0xC0,0xC0,0xF8,0xF8,0xC0 ,0xC0,0xFE,0xFE,0x00,0x00,0x00
,0x00,0x00,0x00,0xFE,0xFE,0xC0,0xC0,0xFC,0xFC,0xC0 ,0xC0,0xC0,0xC0,0x00,0x00,0x00
,0x00,0x00,0x00,0x7C,0xFE,0xC0,0xC0,0xC0,0xCE,0xC6 ,0xC6,0xFE,0x7C,0x00,0x00,0x00
,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xFE,0xFE,0xC6 ,0xC6,0xC6,0xC6,0x00,0x00,0x00
,0x00,0x00,0x00,0x7E,0x3C,0x18,0x18,0x18,0x18,0x18 ,0x18,0x3C,0x7E,0x00,0x00,0x00
,0x00,0x00,0x00,0x7E,0x7E,0x18,0x18,0x18,0x18,0x98 ,0xD8,0xF8,0x70,0x00,0x00,0x00
,0x00,0x00,0x00,0xC6,0xCC,0xD8,0xF0,0xE0,0xE0,0xF0 ,0xD8,0xCC,0xCE,0x00,0x00,0x00
,0x00,0x00,0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC2 ,0xC6,0xFE,0xFE,0x00,0x00,0x00
,0x00,0x00,0x00,0xC6,0xC6,0xEE,0xFE,0xD6,0xC6,0xC6 ,0xC6,0xC6,0xC6,0x00,0x00,0x00
,0x00,0x00,0x00,0xC6,0xC6,0xE6,0xE6,0xF6,0xDE,0xCE ,0xCE,0xC6,0xC6,0x00,0x00,0x00
,0x00,0x00,0x00,0x7C,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6 ,0xC6,0xFE,0x7C,0x00,0x00,0x00
,0x00,0x00,0x00,0xFC,0xFE,0xC6,0xC6,0xFE,0xFC,0xC0 ,0xC0,0xC0,0xC0,0x00,0x00,0x00
,0x00,0x00,0x00,0x7C,0xFE,0xC6,0xC6,0xC6,0xD6,0xDA ,0xCC,0xF6,0x7B,0x00,0x00,0x00
,0x00,0x00,0x00,0xFC,0xFE,0xC6,0xC6,0xFE,0xFC,0xD8 ,0xDC,0xCE,0xC6,0x00,0x00,0x00
,0x00,0x00,0x00,0x7C,0xFE,0xC0,0xC0,0xFC,0x7E,0x06 ,0x06,0xFE,0x7C,0x00,0x00,0x00
,0x00,0x00,0x00,0x7E,0x7E,0x5A,0x18,0x18,0x18,0x18 ,0x18,0x18,0x18,0x00,0x00,0x00
,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6 ,0xC6,0xFE,0x7C,0x00,0x00,0x00
,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xEE ,0x7C,0x38,0x10,0x00,0x00,0x00
,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xD6,0xFE ,0xEE,0xC6,0xC6,0x00,0x00,0x00
,0x00,0x00,0x00,0xC6,0xC6,0x6C,0x38,0x10,0x10,0x38 ,0x6C,0xC6,0xC6,0x00,0x00,0x00
,0x00,0x00,0x00,0x66,0x66,0x66,0x7E,0x3C,0x18,0x18 ,0x18,0x3C,0x7E,0x00,0x00,0x00
,0x00,0x00,0x00,0xFE,0xFE,0x06,0x0C,0x18,0x30,0x60 ,0xC0,0xFE,0xFE,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00};
unsigned char code lib_dis []={"ABCDEFGHIJKLMNOPQRSTUVWXYZ "};
unsigned char code lib_out []={" DEMO @"};
unsigned char data_out [5];
unsigned char data_temp[5];
void delay_ms(unsigned int data_in)
{
unsigned int i,j;
for(i=0;i<=data_in;i++)
for(j=0;j<=33;j++);
}
//------------------------------------------------------
void out_serial(unsigned char data_in,unsigned char loop)
{
unsigned char i,j;
for(i=0;i<=loop;i++)
{
j = data_in;
j = j>>i;
j &= 0x01;
if(j ==0)
{
data_x =0;
data_d =0;
clk =0;
clk =1;
}
else
{
if(color==0) //RED
{
data_d =1;
data_x =0;
clk =0;
clk =1;
}
else
if(color==1) //GREEN
{
data_d =0;
data_x =1;
clk =0;
clk =1;
}
else
{
data_d =1; //YELLOW
data_x =1;
clk =0;
clk =1;
}
}
}
}
//----------------------------------------------------------
void tra_ma (unsigned char data_in)
{
unsigned char i,j,k=0;
for(i=data_in;i<=(data_in + 4);i++)
{
data_temp[k] = lib_out[i];
k ++;
}
for(i=0;i<=4;i++)
{
for(j=0;j<=26;j++)
{
if(data_temp[i] == lib_dis[j])
data_out[i] = j;
}
}
}
//------------------------------------------------------------
void next_led(unsigned char data_in,unsigned char dich_bit)
{
out_serial(data_in,7-dich_bit);
}
//------------------------------------------------------------
void hien_thi(unsigned char hang,unsigned char dich_bit)
{
unsigned char i;
for(i=0;i<=3;i++)
{
out_serial(lib_font[(data_out[4-i])*16+hang],7);
}
next_led (lib_font [(data_out[0])*16+hang],dich_bit);
}
//-----------------------------------------------------
void change_color () interrupt 1 //ngat timer0
{
TR0 =0;
TH0=0x3C;
TL0=0xB0;
TR0=1;
count ++;
if(count == 40) //delay 50.000uS * 80 = 2s (Crystal = 22.1184MHz)
{
count =0;
color ++;
if(color==3)
color=0;
}
}
//---------------------------------------------------
void stop_data()
{
unsigned char i,k,u;
for(k=0;k<=150;k++)
{
for(u=0;u<=15;u++)
{
for(i=0;i<=3;i++)
{
out_serial(lib_font[(data_out[3-i])*16+u],7);
}
delay_ms(2);
P0 =255;
s_clk =0;
s_clk =1;
P0 =u;
}
}
}
//------------------------------------------------------
void down_up()
{
unsigned int u,i,j,k,v;
tra_ma(4);
for(k=0;k<=15;k++)
{
for(j=0;j<=20;j++)
{
v = 0;
for(u=0;u<=15;u++)
{
if(u>=15-k)
{
for(i=0;i<=3;i++)
{
out_serial(lib_font[(data_out[3-i])*16 + v],7);
}
delay_ms(2);
P0 =255;
s_clk =0;
s_clk =1;
P0 =u;
v++;
}
}
}
}
for(k=0;k<=15;k++)
{
for(j=0;j<=20;j++)
{
v = k;
for(u=0;u<=15;u++)
{
if(u <= 15-k)
{
for(i=0;i<=3;i++)
{
out_serial(lib_font[(data_out[3-i])*16 + v],7);
}
delay_ms(2);
P0 =255;
s_clk =0;
s_clk =1;
P0 =u;
v++;
}
}
}
}
}
void up_down()
{
unsigned int u,i,j,k,v;
tra_ma(4);
for(k=0;k<=15;k++)
{
for(j=0;j<=20;j++)
{
v = 15-k;
for(u=0;u<=15;u++)
{
if(u<=k)
{
for(i=0;i<=3;i++)
{
out_serial(lib_font[(data_out[3-i])*16 + v],7);
}
delay_ms(2);
P0 =255;
s_clk =0;
s_clk =1;
P0 =u;
v++;
}
}
}
}
tra_ma(4);
for(k=0;k<=15;k++)
{
for(j=0;j<=20;j++)
{
v = 0;
for(u=0;u<=15;u++)
{
if(u>=k)
{
for(i=0;i<=3;i++)
{
out_serial(lib_font[(data_out[3-i])*16 + v],7);
}
delay_ms(2);
P0 =255;
s_clk =0;
s_clk =1;
P0 =u;
v++;
}
}
}
}
}
#include <AT89X52.h>
//--------------------------------
//khai bao bien
//16hang, 4led
//P0 SELECT HANG
sbit clk = P2^5;
sbit s_clk = P2^4;
sbit data_d = P2^6;
sbit data_x = P2^7;
//--------------------------------
unsigned char n,m,l,step,color =0;
unsigned int count =0,temp_1=0,temp_2=0;
//----------------------------------------------
/*font du lieu chi lap trinh cho chu IN HOA,
neu muon cho chu thuong thi tao them font chu IN THUONG
cho bang ma font */
//FONT TIENG VIET 24 CHU CAI
unsigned char code lib_font[]={
0x00,0x00,0x00,0x10,0x38,0x7C,0xFE,0xC6,0xC6,0xFE, 0xFE,0xC6,0xC6,0x00,0x00,0x00
,0x00,0x00,0x00,0xF8,0xFE,0xC6,0xC6,0xFC,0xFC,0xC6 ,0xC6,0xFE,0xFC,0x00,0x00,0x00
,0x00,0x00,0x00,0x7C,0xFE,0xC0,0xC0,0xC0,0xC0,0xC0 ,0xC0,0xFE,0x7C,0x00,0x00,0x00
,0x00,0x00,0x00,0xF8,0xFC,0xC6,0xC6,0xC6,0xC6,0xC6 ,0xC6,0xFC,0xF8,0x00,0x00,0x00
,0x00,0x00,0x00,0xFE,0xFE,0xC0,0xC0,0xF8,0xF8,0xC0 ,0xC0,0xFE,0xFE,0x00,0x00,0x00
,0x00,0x00,0x00,0xFE,0xFE,0xC0,0xC0,0xFC,0xFC,0xC0 ,0xC0,0xC0,0xC0,0x00,0x00,0x00
,0x00,0x00,0x00,0x7C,0xFE,0xC0,0xC0,0xC0,0xCE,0xC6 ,0xC6,0xFE,0x7C,0x00,0x00,0x00
,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xFE,0xFE,0xC6 ,0xC6,0xC6,0xC6,0x00,0x00,0x00
,0x00,0x00,0x00,0x7E,0x3C,0x18,0x18,0x18,0x18,0x18 ,0x18,0x3C,0x7E,0x00,0x00,0x00
,0x00,0x00,0x00,0x7E,0x7E,0x18,0x18,0x18,0x18,0x98 ,0xD8,0xF8,0x70,0x00,0x00,0x00
,0x00,0x00,0x00,0xC6,0xCC,0xD8,0xF0,0xE0,0xE0,0xF0 ,0xD8,0xCC,0xCE,0x00,0x00,0x00
,0x00,0x00,0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC2 ,0xC6,0xFE,0xFE,0x00,0x00,0x00
,0x00,0x00,0x00,0xC6,0xC6,0xEE,0xFE,0xD6,0xC6,0xC6 ,0xC6,0xC6,0xC6,0x00,0x00,0x00
,0x00,0x00,0x00,0xC6,0xC6,0xE6,0xE6,0xF6,0xDE,0xCE ,0xCE,0xC6,0xC6,0x00,0x00,0x00
,0x00,0x00,0x00,0x7C,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6 ,0xC6,0xFE,0x7C,0x00,0x00,0x00
,0x00,0x00,0x00,0xFC,0xFE,0xC6,0xC6,0xFE,0xFC,0xC0 ,0xC0,0xC0,0xC0,0x00,0x00,0x00
,0x00,0x00,0x00,0x7C,0xFE,0xC6,0xC6,0xC6,0xD6,0xDA ,0xCC,0xF6,0x7B,0x00,0x00,0x00
,0x00,0x00,0x00,0xFC,0xFE,0xC6,0xC6,0xFE,0xFC,0xD8 ,0xDC,0xCE,0xC6,0x00,0x00,0x00
,0x00,0x00,0x00,0x7C,0xFE,0xC0,0xC0,0xFC,0x7E,0x06 ,0x06,0xFE,0x7C,0x00,0x00,0x00
,0x00,0x00,0x00,0x7E,0x7E,0x5A,0x18,0x18,0x18,0x18 ,0x18,0x18,0x18,0x00,0x00,0x00
,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6 ,0xC6,0xFE,0x7C,0x00,0x00,0x00
,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xEE ,0x7C,0x38,0x10,0x00,0x00,0x00
,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xD6,0xFE ,0xEE,0xC6,0xC6,0x00,0x00,0x00
,0x00,0x00,0x00,0xC6,0xC6,0x6C,0x38,0x10,0x10,0x38 ,0x6C,0xC6,0xC6,0x00,0x00,0x00
,0x00,0x00,0x00,0x66,0x66,0x66,0x7E,0x3C,0x18,0x18 ,0x18,0x3C,0x7E,0x00,0x00,0x00
,0x00,0x00,0x00,0xFE,0xFE,0x06,0x0C,0x18,0x30,0x60 ,0xC0,0xFE,0xFE,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00};
unsigned char code lib_dis []={"ABCDEFGHIJKLMNOPQRSTUVWXYZ "};
unsigned char code lib_out []={" DEMO @"};
unsigned char data_out [5];
unsigned char data_temp[5];
void delay_ms(unsigned int data_in)
{
unsigned int i,j;
for(i=0;i<=data_in;i++)
for(j=0;j<=33;j++);
}
//------------------------------------------------------
void out_serial(unsigned char data_in,unsigned char loop)
{
unsigned char i,j;
for(i=0;i<=loop;i++)
{
j = data_in;
j = j>>i;
j &= 0x01;
if(j ==0)
{
data_x =0;
data_d =0;
clk =0;
clk =1;
}
else
{
if(color==0) //RED
{
data_d =1;
data_x =0;
clk =0;
clk =1;
}
else
if(color==1) //GREEN
{
data_d =0;
data_x =1;
clk =0;
clk =1;
}
else
{
data_d =1; //YELLOW
data_x =1;
clk =0;
clk =1;
}
}
}
}
//----------------------------------------------------------
void tra_ma (unsigned char data_in)
{
unsigned char i,j,k=0;
for(i=data_in;i<=(data_in + 4);i++)
{
data_temp[k] = lib_out[i];
k ++;
}
for(i=0;i<=4;i++)
{
for(j=0;j<=26;j++)
{
if(data_temp[i] == lib_dis[j])
data_out[i] = j;
}
}
}
//------------------------------------------------------------
void next_led(unsigned char data_in,unsigned char dich_bit)
{
out_serial(data_in,7-dich_bit);
}
//------------------------------------------------------------
void hien_thi(unsigned char hang,unsigned char dich_bit)
{
unsigned char i;
for(i=0;i<=3;i++)
{
out_serial(lib_font[(data_out[4-i])*16+hang],7);
}
next_led (lib_font [(data_out[0])*16+hang],dich_bit);
}
//-----------------------------------------------------
void change_color () interrupt 1 //ngat timer0
{
TR0 =0;
TH0=0x3C;
TL0=0xB0;
TR0=1;
count ++;
if(count == 40) //delay 50.000uS * 80 = 2s (Crystal = 22.1184MHz)
{
count =0;
color ++;
if(color==3)
color=0;
}
}
//---------------------------------------------------
void stop_data()
{
unsigned char i,k,u;
for(k=0;k<=150;k++)
{
for(u=0;u<=15;u++)
{
for(i=0;i<=3;i++)
{
out_serial(lib_font[(data_out[3-i])*16+u],7);
}
delay_ms(2);
P0 =255;
s_clk =0;
s_clk =1;
P0 =u;
}
}
}
//------------------------------------------------------
void down_up()
{
unsigned int u,i,j,k,v;
tra_ma(4);
for(k=0;k<=15;k++)
{
for(j=0;j<=20;j++)
{
v = 0;
for(u=0;u<=15;u++)
{
if(u>=15-k)
{
for(i=0;i<=3;i++)
{
out_serial(lib_font[(data_out[3-i])*16 + v],7);
}
delay_ms(2);
P0 =255;
s_clk =0;
s_clk =1;
P0 =u;
v++;
}
}
}
}
for(k=0;k<=15;k++)
{
for(j=0;j<=20;j++)
{
v = k;
for(u=0;u<=15;u++)
{
if(u <= 15-k)
{
for(i=0;i<=3;i++)
{
out_serial(lib_font[(data_out[3-i])*16 + v],7);
}
delay_ms(2);
P0 =255;
s_clk =0;
s_clk =1;
P0 =u;
v++;
}
}
}
}
}
void up_down()
{
unsigned int u,i,j,k,v;
tra_ma(4);
for(k=0;k<=15;k++)
{
for(j=0;j<=20;j++)
{
v = 15-k;
for(u=0;u<=15;u++)
{
if(u<=k)
{
for(i=0;i<=3;i++)
{
out_serial(lib_font[(data_out[3-i])*16 + v],7);
}
delay_ms(2);
P0 =255;
s_clk =0;
s_clk =1;
P0 =u;
v++;
}
}
}
}
tra_ma(4);
for(k=0;k<=15;k++)
{
for(j=0;j<=20;j++)
{
v = 0;
for(u=0;u<=15;u++)
{
if(u>=k)
{
for(i=0;i<=3;i++)
{
out_serial(lib_font[(data_out[3-i])*16 + v],7);
}
delay_ms(2);
P0 =255;
s_clk =0;
s_clk =1;
P0 =u;
v++;
}
}
}
}
}

thui anh xem lại cái hình ý tưởng quét matrix theo hàng với hiệu ứng dịch kí tự từ phải qua trái.



Leave a comment: