MẠCH QUANG BÁO HIỂN THỊ LED MA TRẬN
CHƯƠNG 8
LƯU ĐỒ GIẢI THUẬT VÀ
CHƯƠNG TRÌNH HOẠT ĐỘNG
Ý TƯỞNG THIẾT KẾ PHẦN MỀM:
Bảng quang báo chạy text với font tiếng Việt và tiếng Anh, chạy từ trái sang
phải, từ phải sang trái, chạy từ trên xuống dưới, từ dưới lên trên.
Tạo font chữ và giải mã.
Vi điều khiển lưu vào vùng nhớ trong ROM sau đó vi điều khiển lấy dữ liệu
điều khiển hiển thị ra màn hình led ma trận thông qua mạch công suất và mạch hiển
thị.
8.1.
LƯU ĐỒ GIẢI THUẬT.
1 .Quy trình hoạt động của hệ thống:
Hình 8.1 Quy trình hoạt động của hệ thống
- 54 -
MẠCH QUANG BÁO HIỂN THỊ LED MA TRẬN
2.Lưu đồ chương trình chính:
Hình 8.2: Lưu đồ chương trình chính.
3. Lưu đồ chương trình: chạy_chữ.
- 55 -
MẠCH QUANG BÁO HIỂN THỊ LED MA TRẬN
Hình 8.5: Lưu đồ chương trình chạy_chữ.
- 56 -
MẠCH QUANG BÁO HIỂN THỊ LED MA TRẬN
8.2. CHƯƠNG TRÌNH HOẠT ĐỘNG.
#include <16f877a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,
NOLVP, NOCPD, NOWRT
#use delay(clock=12000000)
//khai bao mang
int const
quet[]={0b11111110,0b11111101,0b11111011,0b11110111,0b11101111,0b11011111
,0b10111111,0b01111111};
int const mang0[]={0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,128,190,72,72,72,72,136,
0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,156,162,130,186,34,28,
0,0,0,0,0,145,83,85,89,81,145,
0,0,0,0,0,145,81,95,81,81,145,
0,0,0,0,152,164,132,152,160,36,24,
0,0,0,0,0,2,2,2,2,2,94,
0,0,0,0,0,145,83,85,89,81,145,
0,0,0,0,0,0,0,0
};
int const mang1[]={0,0,0,0,0,0,0,0,
0,128,142,82,87,82,82,142,
0,0,0,17,10,251,36,36,36,36,35,
0,0,0,0,206,81,65,225,65,81,206,
0,0,0,0,0,40,40,232,40,37,34,
0,0,0,0,0,147,148,144,151,148,99,
0,0,0,0,0,147,180,212,148,148,147,
0,0,0,0,232,136,136,136,136,133,130,
0,0,0,0,0,145,83,85,89,81,145,
0,0,0,0,0,195,36,32,39,36,203,
0,0,0,0,0,0,0,0
};
- 57 -
MẠCH QUANG BÁO HIỂN THỊ LED MA TRẬN
int const mang2[]={0,0,0,0,0,0,0,0,
5,10,131,68,68,196,68,67,
0,0,0,0,0,68,76,84,100,68,68,
0,0,0,0,243,20,20,125,20,20,243,
0,0,0,0,0,122,138,139,138,138,122,
0,0,0,0,0,162,162,156,136,136,136,
0,0,0,0,0,28,34,2,58,34,28,
0,0,0,0,139,136,136,248,136,136,136,
0,0,0,0,0,227,20,16,23,20,227,
0,0,0,0,0,137,138,248,136,138,137,
0,0,0,0,0,0,0,0
};
int const mang3[]={0,0,0,0,0,0,0,0,
4,2,137,154,170,203,138,138,
0,0,0,0,0,78,81,193,89,81,78,
0,0,0,0,62,9,9,9,9,9,8,
0,0,0,0,0,0,2,0,0,2,0 ,
0,0,0,0,0,151,176,211,144,144,151,
0,0,0,0,0,78,209,81,95,81,81,
0,0,0,0,0,4,0,0,0,4,0,
0,0,0,0,0,56,69,5,5,69,56,
0,0,0,0,0,242,66,66,66,66,66,
0,0,0,0,0,0,0,0
};
int const mang4[]={0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,64,160,234,42,235,42,42,234,64,
0,0,0,28,162,162,162,162,162,28,
0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,124,16,16,16,16,16,
0,0,0,0,0,20,20,245,22,20,20,
0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,34,162,190,162,162,162,
- 58 -
MẠCH QUANG BÁO HIỂN THỊ LED MA TRẬN
0,0,0,0,0,157,162,162,190,162,162,
0,0,0,0,0,0,0,0
};
int const mang5[]={0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,29,36,36,28,4,5,
0,0,0,0,7,8,0,7,8,8,7,
0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,81,81,95,81,81,81,
0,0,0,0,0,1,1,1,1,1,1 ,
0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,147,180,212,151,148,148 ,
0,0,0,0,0,8,13,10,8,8,8 ,
0,0,0,0,0,0,0,0
};
void chot0()
{
output_high(pin_c0);
output_low(pin_c0);
}
void chot1()
{
output_high(pin_c1);
output_low(pin_c1);
}
void chot2()
{
output_high(pin_c2);
output_low(pin_c2);
}
void chot3()
{
- 59 -
MẠCH QUANG BÁO HIỂN THỊ LED MA TRẬN
output_high(pin_c3);
output_low(pin_c3);
}
void chot4()
{
output_high(pin_c4);
output_low(pin_c4);
}
void chot5()
{
output_high(pin_c5);
output_low(pin_c5);
}
void main(void)
{
int m,i,a;
set_tris_b(0x00);
set_tris_c(0x00);
set_tris_d(0x00);
output_b(0x00);
output_c(0x00);
output_d(0x00);
while(1)
{
for(m=0;m<=20;m++)
{
for(i=0;i<=7;i++)
{
output_b(mang0[a+i]);
chot0();
output_b(mang1[a+i]);
- 60 -
MẠCH QUANG BÁO HIỂN THỊ LED MA TRẬN
chot1();
output_b(mang2[a+i]);
chot2();
output_b(mang3[a+i]);
chot3();
output_b(mang4[a+i]);
chot4();
output_b(mang5[a+i]);
chot5();
output_d(quet[i]);
delay_ms(2);
output_b(0x00);
chot0();
chot1();
chot2();
chot3();
chot4();
chot5();
output_d(0xff);
delay_us(2);
}
}
a++;
if(a==104)
a=0;
}
}
- 61 -