LẬP TRÌNH VI ĐIỀU KHIỂN 8051 Mục tiêu: Hiển thị chữ tiếng việt lên led ma trận sử dụng led ma trận 8x8, chữ chạy từ phải qua trái cho dễ đọc.. Hiệu ứng: Chữ thường dài hơn phần hiển thị
Trang 1LẬP TRÌNH VI ĐIỀU KHIỂN 8051
Mục tiêu: Hiển thị chữ tiếng việt lên led ma trận
sử dụng led ma trận 8x8, chữ chạy từ phải qua trái (cho dễ đọc)
Hiệu ứng: Chữ thường dài hơn phần hiển thị, nên sau khi hiển thị tất cả các cột, sau khi cột cuối cùng trôi hết thì
mới lặp lại Có thể hiển thị nhiều chuỗi nối tiếp nhau
Điều khiển: Mạch tự động chạy, có 2 nút bấm: 1 nút pause/unPause; và 1 nút next (để sang ngay chuỗi tiếp theo)
nhưng thấy hơi bé để hiển thị tiếng việt
Cuối cùng thì quyết định dùng 2 hàng led8x8 thì mới đủ độ cao để hiển thị tiếng việt có dấu
Mạch thật: chưa làm ^^
Mạch mô phỏng: sử dụng AT89C51 và 5 IC loại 74HC595, 4 con cuối dùng để xác định 1 cột cần quét, con đầu tiên
dùng để đưa dữ liệu các bít cần sáng trong cột đang quét
ở mạch trên, led sáng thì dữ liệu xuất bít 0
clr sh_cp ; dua chan sh xuong muc thap,chan xac nhan bit
clr st_cp ; xoa chan chot
Trang 2out1byte:
mov b,#8 ; xuat 8 bit trong A ra 1 con 595
loop_out: ; vong lap 2
rlc a ; dua 1 bit trong a vao cy mov dl,c ; chuyen 1 bit vao chan dl
setb sh_cp ; dua xung xac nhan de dua 1 bit vao vdk clr sh_cp ; xac nhan xong 1 bit duoc dua vao vdk djnz b,loop_out; nhay khi khong bang 0 de dua 8 bit vao vdk
ret
XuatDL:
mov a,r4 rlc a mov r4,a mov a,r3 rlc a mov r3,a mov a,r2 rlc a mov r2,a mov a,r1 rlc a mov r1,a mov a,r1 acall out1byte mov a,r2 acall out1byte mov a,r3 acall out1byte mov a,r4 acall out1byte mov a,r0 movc a,@a+dptr acall out1byte setb st_cp ; dua xung vao chan st_cp de xuat du lieu ra led clr st_cp
;db
7h,0ebh,0edh,0ebh,7h,0ffh,1h,0f3h,0e7h,0cfh,9fh,1h,0ffh,1h,0efh,0efh,0efh,1h,0ffh,0f1h,0e0h,0c0h,81h,3h,81h,0c0h,0e0h,0f1h,0ffh,1h,6dh,6dh,6dh,0ffh,1h,0f3h,0e7h,0cfh,0e7h,0f3h,1h,0ffh,0ffh,1h,7fh,7fh,7fh,0ffh,7h,0ebh,0edh,0ebh,7h,0ffh,1h,0f3h,0e7h,0cfh,0e7h,0f3h,1h,0ffh,40h,0ffh
;db 00000111B, 11101011B, 11101101B, 11101011B, 00000111B, 11111111B,
11111111B, 00000001B, 11110111B, 11101011B, 11011101B, 10111111B,01100111B, 11000011B, 11000011B, 11000011B, 11100111B, 11111111B,11111111B, 11110001B, 11100000B, 11000000B, 10000001B, 00000011B,10000001B, 11000000B, 11100000B, 11110001B, 11111111B, 00000001B,01101101B, 01101101B, 01101101B, 11111111B, 00000001B, 11110011B,11100111B, 11001111B, 11100111B, 11110011B, 00000001B, 11111111B,11111111B, 00000001B, 01111111B, 01111111B, 01111111B, 11111111B,00000111B, 11101011B, 11101101B, 11101011B, 00000111B, 11111111B,00000001B, 11110011B, 11100111B, 11001111B, 11100111B, 11110011B,00000001B, 11111111B, 01000000B, 11111111B
Trang 3Có thể dùng excel để vẽ chữ như hình dưới, sau đó nối các bít theo cột dọc để có dữ liệu cho code asm viết trên keil ở ảnh dưới thử viết chữ có dấu thì k0 ổn lắm, vì chỉ cao 8 đèn nên rất khó thể hiện dấu tiếng Việt
Quyết định dùng 2 hàng led8x8 thì mới đủ độ cao để hiển thị tiếng việt có dấu như sau:
Mạch mô phỏng sử dụng 6 IC loại 74HC595 để điều khiển hàng và cột, 4 con cuối dùng để chọn hàng cần quét, 2 con đầu dùng để đưa dữ liệu ra 2 hàng led
Code asm cho mạch này là:
; DAT TEN CHO CAC CHAN
CHOT595 BIT P2.2
Trang 4CLR CLOCK595 ; DUA CHAN SH XUONG MUC THAP,CHAN XAC NHAN BIT
JB F0, END_SHOW_STR1
ACALL DISPLAY DJNZ STRING_LENGTH, AGAIN1 DJNZ LOOP_TIME, LOOP_STRING1
JB F0, END_SHOW_STR2 ACALL DISPLAY DJNZ STRING_LENGTH, AGAIN2 DJNZ LOOP_TIME, LOOP_STRING2
JB F0, END_SHOW_STR3 ACALL DISPLAY DJNZ STRING_LENGTH, AGAIN3 DJNZ LOOP_TIME, LOOP_STRING3
CPL PAUSE
Trang 5IF_NEXT:
JB PAUSE,END_NEXT
WAIT_NEXT:
ACALL DISPLAY JNB P3.3, WAIT_NEXT
MOV B,#8 ; XUAT 8 BIT TRONG A RA 1 CON 595
LOOP_OUT: ; VONG LAP 2
RLC A ; DUA 1 BIT TRONG A VAO CY MOV DU_LIEU,C ; CHUYEN 1 BIT VAO CHAN DU_LIEU SETB CLOCK595 ; DUA XUNG XAC NHAN DE DUA 1 BIT VAO VDK CLR CLOCK595 ; XAC NHAN XONG 1 BIT DUOC DUA VAO VDK DJNZ B, LOOP_OUT ; NHAY KHI KHONG BANG 0 DE DUA 8 BIT VAO VDK RET
MOV A,COUNTER ;LAY GIA TRI BIEN DEM
MOVC A,@A+DPTR ;LAY DATA
CJNE A,#0,FOR_DELAY
END_DELAY:
RET
Trang 6MYDATA1: ;'DO DUY COP - HOC VI DIEU KHIEN'; LENGTH=240
dw 0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH
dw 0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH
dw 0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH
dw 0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH
DB 0EFH,0EEH, 0FH,0E0H, 0FH,0E0H,0EFH,0EEH,0CFH,0E6H, 1FH,0F0H, 3FH,0F8H,0FFH,0FFH; 159
DB 0F7H,0F0H, 53H,0E0H, 4BH,0EFH, 63H,0EFH, 47H,0EFH, 53H,0E0H,0FBH,0F0H,0FFH,0FFH; 231
DB 0EFH,0EFH, 0FH,0E0H, 0FH,0E0H,0FFH,0FEH, 7FH,0FFH, 7FH,0E0H,0FFH,0E0H,0FFH,0FFH; 104 H
DB 0FFH,0F0H, 7FH,0E0H, 7FH,0EFH, 7FH, 2FH, 7FH, 2FH, 7FH,0E0H,0FFH,0F0H,0FFH,0FFH; 228
DB 0FFH,0F0H, 7FH,0E0H, 7FH,0EFH, 7FH,0EFH, 7FH,0EFH, 7FH,0E6H,0FFH,0F6H,0FFH,0FFH; 99 C
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH; 32 (SPACE)
DB 0FFH,0FFH, 7FH,0F8H, 7FH,0F0H,0FFH,0E7H,0FFH,0E7H, 7FH,0F0H, 7FH,0F8H,0FFH,0FFH; 118 V
DB 0FFH,0FFH, 7FH,0EFH, 4FH,0E0H, 4FH,0E0H,0FFH,0EFH,0FFH,0FFH,0FFH,0FFH; 105 I
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH; 32 (SPACE)
DB 0FFH,0F1H,0FFH,0E0H, 5FH,0EEH, 5FH,0EFH, 0FH,0F0H, 0FH,0E0H,0DFH,0EFH,0FFH,0FFH; 166
DB 0FFH,0FFH, 7FH,0EFH, 4FH,0E0H, 4FH,0E0H,0FFH,0EFH,0FFH,0FFH,0FFH,0FFH; 105 I
DB 0FBH,0F0H, 53H,0E0H, 47H,0EDH, 6FH,0EDH, 4FH,0EDH, 5FH,0E4H,0FFH,0F4H,0FFH,0FFH; 210
DB 7FH,0F0H, 7FH,0E0H,0FFH,0EFH,0FFH,0EFH, 7FH,0F0H, 7FH,0E0H,0FFH,0EFH,0FFH,0FFH; 117 U
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH; 32 (SPACE)
DB 0EFH,0EFH, 0FH,0E0H, 0FH,0E0H,0FFH,0FDH,0FFH,0F8H, 7FH,0E2H, 7FH,0E7H,0FFH,0FFH; 107 K
DB 0EFH,0EFH, 0FH,0E0H, 0FH,0E0H,0FFH,0FEH, 7FH,0FFH, 7FH,0E0H,0FFH,0E0H,0FFH,0FFH; 104 H
DB 0FFH,0FFH, 7FH,0EFH, 4FH,0E0H, 4FH,0E0H,0FFH,0EFH,0FFH,0FFH,0FFH,0FFH; 105 I
DB 0FFH,0F0H, 5FH,0E0H, 4FH,0EDH, 6FH,0EDH, 4FH,0EDH, 5BH,0E4H,0EBH,0F4H,0F3H,0FFH; 211
DB 7FH,0FFH, 7FH,0E0H,0FFH,0E0H, 7FH,0FFH, 7FH,0FFH, 7FH,0E0H,0FFH,0E0H,0FFH,0FFH; 110 N MYDATA2:
;'Thi tr?c nghi?m trên máy' length=202
dw 0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH
dw 0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH
dw 0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH
dw 0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH
db 0ffh,0ffh, 8fh,0ffh,0cfh,0efh, 0fh,0e0h, 0fh,0e0h,0cfh,0efh, 8fh,0ffh,0ffh,0ffh; 84 T;//84 T
db 0efh,0efh, 0fh,0e0h, 0fh,0e0h,0ffh,0feh, 7fh,0ffh, 7fh,0e0h,0ffh,0e0h,0ffh,0ffh; 104 h;//104 h
db 0ffh,0ffh, 7fh,0efh, 4fh,0e0h, 4fh,0e0h,0ffh,0efh,0ffh,0ffh,0ffh,0ffh; 105 i;//105 i
db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh; 32 (space);//32
db 7fh,0ffh, 7fh,0ffh, 1fh,0f0h, 0fh,0e0h, 7fh,0efh, 7fh,0e7h,0ffh,0f7h,0ffh,0ffh; 116 t;//116 t
db 7fh,0efh, 7fh,0e0h,0ffh,0e0h, 7fh,0eeh, 7fh,0ffh, 7fh,0fch,0ffh,0fch,0ffh,0ffh; 114 r;//114 r
db 0ffh,0f3h, 6fh,0e1h, 4fh,0edh, 57h,0edh, 4bh,0f0h,0ebh,0e0h,0ffh,0efh,0ffh,0ffh; 175 ;//7855 ?
db 0ffh,0f0h, 7fh,0e0h, 7fh,0efh, 7fh,0efh, 7fh,0efh, 7fh,0e6h,0ffh,0f6h,0ffh,0ffh; 99 c;//99 c
db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh; 32 (space);//32
db 7fh,0ffh, 7fh,0e0h,0ffh,0e0h, 7fh,0ffh, 7fh,0ffh, 7fh,0e0h,0ffh,0e0h,0ffh,0ffh; 110 n;//110 n
db 0ffh,0d8h, 7fh, 90h, 7fh,0b7h, 7fh,0b7h,0ffh, 80h, 7fh,0c0h, 7fh,0ffh,0ffh,0ffh; 103 g;//103 g
db 0efh,0efh, 0fh,0e0h, 0fh,0e0h,0ffh,0feh, 7fh,0ffh, 7fh,0e0h,0ffh,0e0h,0ffh,0ffh; 104 h;//104 h
db 0ffh,0ffh, 7fh,0efh, 4fh,0e0h, 4fh,0e0h,0ffh,0efh,0ffh,0ffh,0ffh,0ffh; 105 i;//105 i
db 0ffh,0f0h, 5fh,0e0h, 4fh,0edh, 6fh, 2dh, 4fh, 2dh, 5fh,0e4h,0ffh,0f4h,0ffh,0ffh; 214 ;//7879 ?
db 7fh,0e0h, 7fh,0e0h, 7fh,0feh,0ffh,0f0h, 7fh,0feh, 7fh,0e0h,0ffh,0e0h,0ffh,0ffh; 109 m;//109 m
db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh; 32 (space);//32
db 7fh,0ffh, 7fh,0ffh, 1fh,0f0h, 0fh,0e0h, 7fh,0efh, 7fh,0e7h,0ffh,0f7h,0ffh,0ffh; 116 t;//116 t
db 7fh,0efh, 7fh,0e0h,0ffh,0e0h, 7fh,0eeh, 7fh,0ffh, 7fh,0fch,0ffh,0fch,0ffh,0ffh; 114 r;//114 r
db 0ffh,0f0h, 5fh,0e0h, 4fh,0edh, 6fh,0edh, 4fh,0edh, 5fh,0e4h,0ffh,0f4h,0ffh,0ffh; 162 ;//234 ê
db 7fh,0ffh, 7fh,0e0h,0ffh,0e0h, 7fh,0ffh, 7fh,0ffh, 7fh,0e0h,0ffh,0e0h,0ffh,0ffh; 110 n;//110 n
db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh; 32 (space);//32
db 7fh,0e0h, 7fh,0e0h, 7fh,0feh,0ffh,0f0h, 7fh,0feh, 7fh,0e0h,0ffh,0e0h,0ffh,0ffh; 109 m;//109 m
db 0ffh,0f3h, 7fh,0e1h, 7fh,0edh, 6fh,0edh, 67h,0f0h,0f3h,0e0h,0fbh,0efh,0ffh,0ffh; 170 ;//225 á
db 0cfh,0e7h, 8fh,0e3h, 3fh,0f8h, 7fh,0fch, 3fh,0f8h, 8fh,0e3h,0cfh,0e7h,0ffh,0ffh; 88 X;//88 X
db 0efh,0efh, 0fh,0e0h, 0fh,0e0h,0efh,0efh,0ffh,0efh,0ffh,0e7h,0ffh,0e3h,0ffh,0ffh; 76 L;//76 L
db 0ffh,0feh,0ffh,0feh,0ffh,0feh,0ffh,0feh,0ffh,0feh,0ffh,0feh,0ffh,0feh,0ffh,0ffh; 45 -;//45 -
db 0fh,0fch, 0fh,0f8h,0ffh,0f3h,0ffh,0e7h,0ffh,0f3h, 0fh,0f8h, 0fh,0fch,0ffh,0ffh; 86 V;//86 V
db 0efh,0eeh, 0fh,0e0h, 0fh,0e0h,0efh,0eeh,0cfh,0e6h, 1fh,0f0h, 3fh,0f8h,0ffh,0ffh; 159 ;//272 Ð
db 0efh,0efh, 0fh,0e0h, 0fh,0e0h,0ffh,0feh, 3fh,0f8h, 0fh,0e1h,0cfh,0e7h,0ffh,0ffh; 75 K;//75 K
dw 0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH
dw 0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH
dw 0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH
dw 0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH,0FFFFH
Trang 7Nảy sinh vấn đề là ngồi tạo hình dáng tiếng việt cho bảng chữ cái tiếng Việt thì thật mệt
Chợt nhớ ra hồi sv có viết 1 chươn trình (sử dụng thư viện có sẵn của VietRes) để tạo tiếng Việt trên Turbo C Chương trình viết trên TC, chạy trên dos và có giao diện tiếng Việt như sau:
Nguyên lý là khi chạy chương trình thì ta sẽ cho BIOS trỏ sang font tiếng Việt, chạy xong thì lại dùng lại font cũ của BIOS
File font.h đó như sau:
Trang 8/*## */ 0, 0, 0, 0,108,108,254,108,108,108,254,108,108, 0, 0, 0 ,
0, 0, 24, 24,124,198,194,192,124, 6,134,198,124, 24, 24, 0 , /*%% */ 0, 0, 0, 0, 0, 0,194,198, 12, 24, 48,102,198, 0, 0, 0 , /*&& */ 0, 0, 0, 0, 56,108,108, 56,118,220,204,204,118, 0, 0, 0 , /*'' */ 0, 0, 0, 48, 48, 48, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0 , /*(( */ 0, 0, 0, 0, 12, 24, 48, 48, 48, 48, 48, 24, 12, 0, 0, 0 , /* */ 0, 0, 0, 0, 48, 24, 12, 12, 12, 12, 12, 24, 48, 0, 0, 0 , /*** */ 0, 0, 0, 0, 0, 0,102, 60,255, 60,102, 0, 0, 0, 0, 0 , /*++ */ 0, 0, 0, 0, 0, 0, 24, 24,126, 24, 24, 0, 0, 0, 0, 0 , /*,, */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 48, 0, 0 , /* */ 0, 0, 0, 0, 0, 0, 0, 0,254, 0, 0, 0, 0, 0, 0, 0 , /* */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 0, 0, 0 , /*// */ 0, 0, 0, 0, 2, 6, 12, 24, 48, 96,192,128, 0, 0, 0, 0 , /*00 */ 0, 0, 0, 0,124,198,206,222,246,230,198,198,124, 0, 0, 0 , /*11 */ 0, 0, 0, 0, 24, 56,120, 24, 24, 24, 24, 24,126, 0, 0, 0 , /*22 */ 0, 0, 0, 0,124,198, 6, 12, 24, 48, 96,198,254, 0, 0, 0 , /*33 */ 0, 0, 0, 0,124,198, 6, 6, 60, 6, 6,198,124, 0, 0, 0 , /*44 */ 0, 0, 0, 0, 12, 28, 60,108,204,254, 12, 12, 30, 0, 0, 0 , /*55 */ 0, 0, 0, 0,254,192,192,192,252, 6, 6,198,124, 0, 0, 0 , /*66 */ 0, 0, 0, 0, 60, 96,192,192,252,198,198,198,124, 0, 0, 0 , /*77 */ 0, 0, 0, 0,254,198, 6, 12, 24, 48, 48, 48, 48, 0, 0, 0 , /*88 */ 0, 0, 0, 0,124,198,198,198,124,198,198,198,124, 0, 0, 0 , /*99 */ 0, 0, 0, 0,124,198,198,198,126, 6, 6, 12,120, 0, 0, 0 , /*:: */ 0, 0, 0, 0, 0, 24, 24, 0, 0, 0, 24, 24, 0, 0, 0, 0 , /*;; */ 0, 0, 0, 0, 0, 24, 24, 0, 0, 0, 24, 24, 48, 0, 0, 0 , /*<< */ 0, 0, 0, 0, 6, 12, 24, 48, 96, 48, 24, 12, 6, 0, 0, 0 , /*== */ 0, 0, 0, 0, 0, 0, 0,126, 0, 0,126, 0, 0, 0, 0, 0 , /*>> */ 0, 0, 0, 0, 96, 48, 24, 12, 6, 12, 24, 48, 96, 0, 0, 0 , /*?? */ 0, 0, 0, 0,124,198,198, 12, 24, 24, 0, 24, 24, 0, 0, 0 , /*@@ */ 0, 0, 0, 0,124,198,198,222,222,222,220,192,124, 0, 0, 0 , /*AA */ 0, 0, 0, 0, 16, 56,108,198,198,254,198,198,198, 0, 0, 0 , /*BB */ 0, 0, 0, 0,252,102,102,102,124,102,102,102,252, 0, 0, 0 , /*CC */ 0, 0, 0, 0, 60,102,194,192,192,192,194,102, 60, 0, 0, 0 , /*DD */ 0, 0, 0, 0,248,108,102,102,102,102,102,108,248, 0, 0, 0 , /*EE */ 0, 0, 0, 0,254,102, 98,104,120,104, 98,102,254, 0, 0, 0 , /*FF */ 0, 0, 0, 0,254,102, 98,104,120,104, 96, 96,240, 0, 0, 0 , /*GG */ 0, 0, 0, 0, 60,102,194,192,192,222,198,102, 58, 0, 0, 0 , /*HH */ 0, 0, 0, 0,198,198,198,198,254,198,198,198,198, 0, 0, 0 , /*II */ 0, 0, 0, 0, 60, 24, 24, 24, 24, 24, 24, 24, 60, 0, 0, 0 , /*JJ */ 0, 0, 0, 0, 30, 12, 12, 12, 12, 12,204,204,120, 0, 0, 0 , /*KK */ 0, 0, 0, 0,230,102,108,108,120,108,108,102,230, 0, 0, 0 , /*LL */ 0, 0, 0, 0,240, 96, 96, 96, 96, 96, 98,102,254, 0, 0, 0 , /*MM */ 0, 0, 0, 0,198,238,254,254,214,198,198,198,198, 0, 0, 0 , /*NN */ 0, 0, 0, 0,198,230,246,254,222,206,198,198,198, 0, 0, 0 , /*OO */ 0, 0, 0, 0, 56,108,198,198,198,198,198,108, 56, 0, 0, 0 , /*PP */ 0, 0, 0, 0,252,102,102,102,124, 96, 96, 96,240, 0, 0, 0 , /*QQ */ 0, 0, 0, 0,124,198,198,198,198,214,222,124, 12, 14, 0, 0 , /*RR */ 0, 0, 0, 0,252,102,102,102,124,108,102,102,231, 0, 0, 0 , /*SS */ 0, 0, 0, 0,124,198,198, 96, 56, 12,198,198,124, 0, 0, 0 , /*TT */ 0, 0, 0, 0,126,126, 90, 24, 24, 24, 24, 24, 60, 0, 0, 0 , /*UU */ 0, 0, 0, 0,198,198,198,198,198,198,198,198,124, 0, 0, 0 , /*VV */ 0, 0, 0, 0,198,198,198,198,198,198,108, 56, 16, 0, 0, 0 , /*WW */ 0, 0, 0, 0,198,198,198,198,214,214,254,124,108, 0, 0, 0 , /*XX */ 0, 0, 0, 0,198,198,108, 56, 56, 56,108,198,198, 0, 0, 0 , /*YY */ 0, 0, 0, 0,102,102,102,102, 60, 24, 24, 24, 60, 0, 0, 0 , /*ZZ */ 0, 0, 0, 0,254,198,140, 24, 48, 96,194,198,254, 0, 0, 0 , /*[[ */ 0, 0, 0, 0, 60, 48, 48, 48, 48, 48, 48, 48, 60, 0, 0, 0 , /*\\ */ 0, 0, 0, 0,128,192,224,112, 56, 28, 14, 6, 2, 0, 0, 0 , /*]] */ 0, 0, 0, 0, 60, 12, 12, 12, 12, 12, 12, 12, 60, 0, 0, 0 , /*^^ */ 0, 0, 16, 56,108,198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , /* */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0 , /*`` */ 0, 0, 48, 48, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , /*aa */ 0, 0, 0, 0, 0, 0, 0,120, 12,124,204,204,118, 0, 0, 0 , /*bb */ 0, 0, 0, 0,224, 96, 96,120,108,102,102,102,124, 0, 0, 0 , /*cc */ 0, 0, 0, 0, 0, 0, 0,124,198,192,192,198,124, 0, 0, 0 , /*dd */ 0, 0, 0, 0, 28, 12, 12, 60,108,204,204,204,118, 0, 0, 0 , /*ee */ 0, 0, 0, 0, 0, 0, 0,124,198,254,192,198,124, 0, 0, 0 , /*ff */ 0, 0, 0, 0, 56,108,100, 96,240, 96, 96, 96,240, 0, 0, 0 , /*gg */ 0, 0, 0, 0, 0, 0, 0,118,204,204,204,124, 12,204,120, 0 , /*hh */ 0, 0, 0, 0,224, 96, 96,108,118,102,102,102,230, 0, 0, 0 , /*ii */ 0, 0, 0, 0, 24, 24, 0, 56, 24, 24, 24, 24, 60, 0, 0, 0 , /*jj */ 0, 0, 0, 0, 6, 6, 0, 14, 6, 6, 6, 6,102,102, 60, 0 , /*kk */ 0, 0, 0, 0,224, 96, 96,102,108,120,108,102,230, 0, 0, 0 , /*ll */ 0, 0, 0, 0, 56, 24, 24, 24, 24, 24, 24, 24, 60, 0, 0, 0 , /*mm */ 0, 0, 0, 0, 0, 0, 0,236,254,214,214,214,198, 0, 0, 0 , /*nn */ 0, 0, 0, 0, 0, 0, 0,220,102,102,102,102,102, 0, 0, 0 , /*oo */ 0, 0, 0, 0, 0, 0, 0,124,198,198,198,198,124, 0, 0, 0 , /*pp */ 0, 0, 0, 0, 0, 0, 0,220,102,102,102,124, 96, 96,240, 0 , /*qq */ 0, 0, 0, 0, 0, 0, 0,118,204,204,204,124, 12, 12, 30, 0 , /*rr */ 0, 0, 0, 0, 0, 0, 0,220,118,102, 96, 96,240, 0, 0, 0 , /*ss */ 0, 0, 0, 0, 0, 0, 0,124,198,112, 28,198,124, 0, 0, 0 , /*tt */ 0, 0, 0, 0, 16, 48, 48,252, 48, 48, 48, 54, 28, 0, 0, 0 , /*uu */ 0, 0, 0, 0, 0, 0, 0,204,204,204,204,204,118, 0, 0, 0 , /*vv */ 0, 0, 0, 0, 0, 0, 0,102,102,102,102, 60, 24, 0, 0, 0 , /*ww */ 0, 0, 0, 0, 0, 0, 0,198,198,214,214,254,108, 0, 0, 0 , /*xx */ 0, 0, 0, 0, 0, 0, 0,198,108, 56, 56,108,198, 0, 0, 0 , /*yy */ 0, 0, 0, 0, 0, 0, 0,198,198,198,198,126, 6, 12,248, 0 , /*zz */ 0, 0, 0, 0, 0, 0, 0,254,204, 24, 48,102,254, 0, 0, 0 , /*/* /* */ 0, 0, 0, 0, 14, 24, 24, 24,112, 24, 24, 24, 14, 0, 0, 0 , /*|| */ 0, 0, 0, 0, 24, 24, 24, 24, 0, 24, 24, 24, 24, 0, 0, 0 , /* */ 0, 0, 0, 0,112, 24, 24, 24, 14, 24, 24, 24,112, 0, 0, 0 , /*~~ */ 0, 0, 0, 0,118,220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , /*•• */ 0, 0, 0, 0, 0, 0, 16, 56,108,198,198,254, 0, 0, 0, 0 ,
Trang 9/*‚‚ */ 0, 0, 0, 0, 24, 24,126, 24, 24, 0, 0,255, 0, 0, 0, 0 , /*ƒƒ */ 0, 0, 0, 0, 0,118,220,216,216,216,220,118, 0, 0, 0, 0 , /*„„ */ 0, 0, 0, 0, 0,252,198,252,198,198,252,192,192,192, 0, 0 , /*…… */ 0, 0, 0, 0,108,108, 0, 56, 24, 24, 24, 24, 60, 0, 0, 0 , /*†† */ 0, 0, 0, 24, 60,102, 0, 56, 24, 24, 24, 24, 60, 0, 0, 0 , /*‡‡ */ 0, 0, 0, 0,108,222, 26, 26,126,216,216,218,108, 0, 0, 0 , /*ˆˆ */ 0, 0, 0, 0,204,204, 0,124,198,198,198,198,124, 0, 0, 0 , /*‰‰ */ 0, 0, 0, 48,120,204, 0,204,204,204,204,204,118, 0, 0, 0 , /*ŠŠ */ 0, 0, 0, 0,198,198, 0,198,198,198,198,126, 6, 12,120, 0 , /*‹‹ */ 0, 0, 24, 24, 24,124,198,192,192,198,124, 24, 24, 24, 0, 0 , /*ŒŒ */ 0, 0, 0, 56,108,100, 96,240, 96, 96,102,230,188, 0, 0, 0 , /*•• */ 0, 0, 0,102,102,102, 60, 24,126, 24, 60, 24, 24, 0, 0, 0 , /*ŽŽ */ 1, 31, 63, 31, 7, 7, 15, 1, 3, 3, 5, 5, 9, 9, 17, 17 , /*•• */ 0,248,248,248,192,192,224, 0,128,128, 64, 64, 32, 32, 16, 16 , /*•• */ 0, 0, 0, 0, 0, 0, 54,108,216,108, 54, 0, 0, 0, 0, 0 , /*‘‘ */ 0, 0, 0, 0, 0, 0,216,108, 54,108,216, 0, 0, 0, 0, 0 , /*’’ */ 0, 0, 0, 0, 24, 24, 24,126, 24, 24, 24, 0,126,126, 0, 0 , /*““ */ 0, 0, 0, 0, 96, 48, 24, 12, 24, 48, 96, 0,124,124, 0, 0 , /*”” */ 0, 0, 0, 0, 12, 24, 48, 96, 48, 24, 12, 0,124,124, 0, 0 , /*•• */ 24, 24, 24, 60, 60,126,126,255, 24, 24, 24, 24, 24, 24, 24, 24 , /*–– */ 24, 24, 24, 24, 24, 24, 24, 24,255,126,126, 60, 60, 24, 24, 24 , /*—— */ 0, 0, 0, 0, 0, 64,112,124,255,124,112, 64, 0, 0, 0, 0 , /*˜˜ */ 0, 0, 0, 0, 0, 2, 14, 62,255, 62, 14, 2, 0, 0, 0, 0 , /*™™ */ 0, 0,108, 56, 0, 56,108,198,198,254,198,198,198, 0, 0, 0 , /*šš */ 0, 16, 56,108, 0, 56,108,198,198,254,198,198,198, 0, 0, 0 , /*›› */ 0, 16, 56, 68,254,102, 98,104,120,104, 98,102,254, 0, 0, 0 , /*œœ */ 0, 16, 56, 68, 56,108,198,198,198,198,198,108, 56, 0, 0, 0 , /*•• */ 0, 0, 3, 1, 58,108,198,198,198,198,198,108, 56, 0, 0, 0 , /*žž */ 0, 0, 3, 1,199,198,198,198,198,198,198,198,124, 0, 0, 0 , /*ŸŸ */ 0, 0, 0, 0,248,108,102,102,254,102,102,108,248, 0, 0, 0 , /* aw */ 0, 0, 0, 0,108, 56, 0,120, 12,124,204,204,118, 0, 0, 0 , /*¡¡ aa*/ 0, 0, 0, 0, 56,108, 0,120, 12,124,204,204,118, 0, 0, 0 , /*¢¢ ee*/ 0, 0, 0, 0, 56,108, 0,124,198,254,192,198,124, 0, 0, 0 , /*££ oo*/ 0, 0, 0, 0, 56,108, 0,124,198,198,198,198,124, 0, 0, 0 , /*¤¤ ow*/ 0, 0, 0, 0, 0, 3, 1,126,198,198,198,198,124, 0, 0, 0 , /*¥¥ uw*/ 0, 0, 0, 0, 0, 3, 1,206,204,204,204,204,118, 0, 0, 0 , /*¦¦ dd*/ 0, 0, 0, 0, 12, 62, 12, 60,108,204,204,204,118, 0, 0, 0 , /*§§ af*/ 0, 0,192, 96, 48, 0, 0,120, 12,124,204,204,118, 0, 0, 0 , /*¨¨ ar*/ 0, 0, 56, 8, 16, 0, 0,120, 12,124,204,204,118, 0, 0, 0 , /*©© ax*/ 0, 0, 0,118,220, 0, 0,120, 12,124,204,204,118, 0, 0, 0 , /*ªª as*/ 0, 0, 6, 12, 24, 0, 0,120, 12,124,204,204,118, 0, 0, 0 , /*«« aj*/ 0, 0, 0, 0, 0, 0, 0,120, 12,124,204,204,118, 0, 48, 48 , /*¬¬ awf*/ 0, 0, 96, 16, 76, 56, 0,120, 12,124,204,204,118, 0, 0, 0 , /* awr*/ 0, 0, 7, 1,110, 56, 0,120, 12,124,204,204,118, 0, 0, 0 , /*®® awx*/ 0, 0,118,220,108, 56, 0,120, 12,124,204,204,118, 0, 0, 0 , /*¯¯ aws*/ 0, 0, 12, 16,108, 56, 0,120, 12,124,204,204,118, 0, 0, 0 , /*°° */ 68, 17, 68, 17, 68, 17, 68, 17, 68, 17, 68, 17, 68, 17, 68, 17 , /*±± */ 170, 85,170, 85,170, 85,170, 85,170, 85,170, 85,170, 85,170, 85 , /*²² */ 119,221,119,221,119,221,119,221,119,221,119,221,119,221,119,221 , /*³³ */ 255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0 , /*´´ */ 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255 , /*µµ awj*/ 0, 0, 0, 0,108, 56, 0,120, 12,124,204,204,118, 0, 48, 48 , /*¶¶ aaf*/ 0, 0,192, 96, 56,108, 0,120, 12,124,204,204,118, 0, 0, 0 , /*·· aar*/ 0, 0, 7, 1, 58,108, 0,120, 12,124,204,204,118, 0, 0, 0 , /*¸¸ aax*/ 0, 0,118,220, 56,108, 0,120, 12,124,204,204,118, 0, 0, 0 , /*¹¹ */ 54, 54, 54, 54, 54, 54, 54,246, 6,246, 54, 54, 54, 54, 54, 54 , /*ºº */ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 , /*»» */ 0, 0, 0, 0, 0, 0, 0,254, 6,246, 54, 54, 54, 54, 54, 54 , /*¼¼ */ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,246, 6,254, 0, 0 , /*½½ aas*/ 0, 0, 6, 12, 56,108, 0,120, 12,124,204,204,118, 0, 0, 0 , /*¾¾ aaj*/ 0, 0, 0, 0, 56,108, 0,120, 12,124,204,204,118, 0, 48, 48 , /*¿¿ */ 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128 , /*ÀÀ */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 , /*ÁÁ */ 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,255 , /* */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,255 , /*Ãà */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255 , /*ÄÄ */ 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0 , /*ÅÅ */ 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , /*ÆÆ ef*/ 0, 0,192, 96, 48, 0, 0,124,198,254,192,198,124, 0, 0, 0 , /*ÇÇ er*/ 0, 0, 56, 8, 16, 0, 0,124,198,254,192,198,124, 0, 0, 0 , /*ÈÈ */ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, 48, 63, 0, 0 , /*ÉÉ */ 0, 0, 0, 0, 0, 0, 0, 63, 48, 55, 54, 54, 54, 54, 54, 54 , /*ÊÊ */ 54, 54, 54, 54, 54, 54, 54,247, 0,255, 0, 0, 0, 0, 0, 0 , /*ËË */ 0, 0, 0, 0, 0, 0, 0,255, 0,247, 54, 54, 54, 54, 54, 54 , /*ÌÌ */ 54, 54, 54, 54, 54, 54, 54, 55, 48, 55, 54, 54, 54, 54, 54, 54 , /*ÍÍ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0 , /*ÍÍ */ 0, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0 , 0, 0, 0 , /*ÏÏ ex*/ 0, 0, 0,118,220, 0, 0,124,198,254,192,198,124, 0, 0, 0 , /*ÐÐ es*/ 0, 0, 6, 12, 24, 0, 0,124,198,254,192,198,124, 0, 0, 0 , /*ÑÑ ej*/ 0, 0, 0, 0, 0, 0, 0,124,198,254,192,198,124, 0, 24, 24 , /*ÒÒ eef*/ 0, 0,192, 96, 56,108, 0,124,198,254,192,198,124, 0, 0, 0 , /*ÓÓ eer*/ 0, 0, 7, 1, 58,108, 0,124,198,254,192,198,124, 0, 0, 0 , /*ÔÔ eex*/ 0, 0,118,220, 56,108, 0,124,198,254,192,198,124, 0, 0, 0 , /*ÕÕ ees*/ 0, 0, 6, 12, 56,108, 0,124,198,254,192,198,124, 0, 0, 0 , /*ÖÖ eej*/ 0, 0, 0, 0, 56,108, 0,124,198,254,192,198,124, 0, 24, 24 , /*×× if*/ 0, 0,192, 96, 48, 0, 0, 56, 24, 24, 24, 24, 60, 0, 0, 0 , /*ØØ ir*/ 0, 0, 56, 8, 16, 0, 0, 56, 24, 24, 24, 24, 60, 0, 0, 0 , /*ÙÙ */ 255,192,192,192,192,192,192,207,207,192,192,192,192,192,192,255 , /*ÚÚ */ 254, 6, 6, 6, 6, 6, 6,230,230, 6, 6, 6, 6, 6, 6,254 , /*ÛÛ */ 255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0 , /*ÜÜ ix*/ 0, 0, 0,118,220, 0, 0, 56, 24, 24, 24, 24, 60, 0, 0, 0 , /*ÝÝ is*/ 0, 0, 6, 12, 24, 0, 0, 56, 24, 24, 24, 24, 60, 0, 0, 0 , /*ÞÞ ij*/ 0, 0, 0, 0, 24, 24, 0, 56, 24, 24, 24, 24, 60, 0, 24, 24 ,
Trang 10Trong file này, mảng FontArray có cấu trúc là 16*256 phần tử, xác định hình dạng cho 256 phần tử trong bảng
mã ascii Mỗi phần tử ascii biểu diễn bởi ma trận 16x8 (16 hàng, mỗi hàng 8 bít), mỗi kí tự ascii sẽ gồm 16 con số trong mảng, mỗi số là 1 hàng (số 1 byte có 8 bít) trong ma trận 16x8 này
Trong khi đó, khi đưa dữ liệu ra ma trận led8x8 thì ta phải đưa dữ liệu ở cột dọc, vậy cần xử lý file này để có dữ liệu mong muốn
Code bằng php như sau để dựng cái ma trận này lên, tách ra 2 hàng dữ liệu 8 bít:
Trang 110, 0, 0, 0, 0, 0, 0,110,115, 99, 99, 99,222, 0, 0, 0 255,128,129,131,135,143,159,191,128,129,131,135,143,159,128,255
255, 1,129,193,225,241,249,253, 1,129,193,225,241,249, 1,255 255,128,159,143,135,131,129,128,191,159,143,135,131,129,128,255
255, 1,249,241,225,193,129, 1,253,249,241,225,193,129, 1,255
0, 0, 0, 0, 0, 0, 24, 12,254, 12, 24, 0, 0, 0, 0, 0 255,128,129,131,135,143,159,159,131,131,131,131,131,131,128,255
255, 1,129,193,225,241,249,249,193,193,193,193,193,193, 1,255 255,128,131,131,131,131,131,131,159,159,143,135,131,129,128,255