Tóm tắt
Theo cách thông thường để lập trình cho bảng LED quảng cáo, người ta phải lập trình
cho vi điều khiển bằng ngôn ngữ Assembly, C. Để lập trình được người lập trình phải hiểu
được họ vi điều khiển sử dụng và có kỹ năng lập trình Assembly hay C. Đây là công việc không
dễ đối với các kỹ thuật viên ít kinh nghiệm và là công việc rất tốn thời gian đối với các kỹ thuật
viên có kinh nghiệm. Phần mềm Magic LED Board được thiết kế ra để giúp các kỹ thuật viên
thiết kế các bảng LED quảng cáo không phải lập trình C hay Assembly, phần mềm Magic LED
Board sẽ làm thay công việc đó. Trong bài báo này tác giả trình bày các bước để xây dựng
phần mềm và phần mềm được viết bằng Visual Basic 6.0.
7 trang |
Chia sẻ: thanhle95 | Lượt xem: 557 | Lượt tải: 1
Bạn đang xem nội dung tài liệu Phần mềm magic LED board, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Tạp chí Khoa học Đại học Thủ Dầu Một Số 4(39)-2018
49
PHẦN MỀM MAGIC LED BOARD
Nguyễn Văn Sơn(1)
(1) Trường Đại học Thủ Dầu Một
Ngày nhận bài: 20/8/2018; Ngày gửi phản biện 15/9/2018; Chấp nhận đăng 20/11/2018
Email: sonnv@tdmu.edu.vn
Tóm tắt
Theo cách thông thường để lập trình cho bảng LED quảng cáo, người ta phải lập trình
cho vi điều khiển bằng ngôn ngữ Assembly, C. Để lập trình được người lập trình phải hiểu
được họ vi điều khiển sử dụng và có kỹ năng lập trình Assembly hay C. Đây là công việc không
dễ đối với các kỹ thuật viên ít kinh nghiệm và là công việc rất tốn thời gian đối với các kỹ thuật
viên có kinh nghiệm. Phần mềm Magic LED Board được thiết kế ra để giúp các kỹ thuật viên
thiết kế các bảng LED quảng cáo không phải lập trình C hay Assembly, phần mềm Magic LED
Board sẽ làm thay công việc đó. Trong bài báo này tác giả trình bày các bước để xây dựng
phần mềm và phần mềm được viết bằng Visual Basic 6.0.
Từ khóa: bảng LED, lập trình, phần mềm Magic LED Board
Abstract
MAGIC LED BOARD SOFT
In the usual way to program the LED board, one must program the microcontroller in
assembly language or C language. To program, the programmer must understand the
microcontroller family to use and have the skill programming. This is not easy for less experienced
technicians and is a very time consuming job for experienced technicians. The Magic LED Board
software is designed to help technicians design non-C or Assembly LED advertising boards that
will replace the work. In this article, the author presents steps for building software and software
written in Visual Basic 6.0.
1. Giới thiệu
Phần mềm Magic LED Board được thiết kế ra để giúp các kỹ thuật viên thiết kế các bảng
LED quảng cáo không phải lập trình C hay Assembly, phần mềm sẽ làm thay công việc đó.
Phần mềm Magic LED Board cho phép các kỹ thuật viên mô tả các trạng thái sáng của các
LED, thời gian trễ chuyển trạng thái sáng các LED, số chương trình chạy độc lập giữa các LED
là 03 chương trình, số LED của mỗi chương trình là tùy ý và tất nhiên LED của chương trình
này không được trùng với LED của chương trình kia, chạy mô phỏng các chương trình sáng
LED trên phần mềm, phần mềm có công cụ chuyển đổi mô tả các chương trình sáng LED thành
file ngôn ngữ lập trình Assembly (file .ASM) và file HEX (.HEX) , kỹ thuật viên dùng file
HEX đã được tạo ra để nạp cho vi điều khiển. Với phần mềm Led Magic Board việc thiết kế
bảng LED quảng cáo trở nên đơn giản, nhanh chóng và thú vị. Đi đôi với phần mềm Magic
LED Board là một board mạch LED được thiết kế tương thích với phần mềm.
Nguyễn Văn Sơn Phần mềm Magic LED board
50
2. Nội dung
Phần mềm Magic LED Board tác giả đã viết bằng Visual Basic 6.0, có giao diện đồ họa
trên hình 1, trên giao diện này ta thấy: (1) Nút radio Pro1, Pro2, Pro3 để chọn chương trình 1,2
hoặc 3. Số chương trình tối đa có thể là 3, có thể chỉ sử dụng 1 chương trình; (2) Nút radio
Delay1, Delay2, Delay3 để chọn delay tương ứng với Pro1, Pro2, Pro3, thời gian trễ của delay
được đặt trong menu Tools/ Set Delay, thời gian trễ từ 25ms đến 5000ms; (3) Các nút lệnh có
số từ 1 đến 24 dùng để on/off các LED nằm tương ứng ngay bên trên; (4) Nút lệnh Enter dùng
để nhập 1 dòng trạng thái on/off các LED đã thiết lập, mỗi lần nhấn nút Enter ta thấy số tổng số
bước của chương trình (ở góc trên bên phải giao diện đồ họa) tăng lên 1 đơn vị; (5) Nút PLAY
dùng để chạy mô phỏng chương trình đã soạn với delay đã chọn; (6) Nút STEP dùng để chạy
mô phỏng chương trình từng bước một, mục đích dùng để kiểm tra xem có lỗi ở một bước nào
đó; (7) Nút STOP để dừng chạy mô phỏng; (8) Thanh menu có menu File và menu Tools; (9)
Menu File có New để thiết lập mới từ đầu, Save As để lưu chương trình đã soạn dưới dạng file
.led, Open để mở chương trình đã lưu, Exit: tắt phần mềm; (10) Menu Tools có Set Delay để
thiết lập thời gian trễ, Creat ASM File: tạo file ASM và lưu file ASM, Creat Hex File: tạo file
HEX và lưu file HEX, Program: Nạp file HEX vào vi điều khiển.
Hình 1. Màn hình giao diện phần mềm Magic LED Board.
Hình 2. Các mục trong menu File và menu Tools.
Tạp chí Khoa học Đại học Thủ Dầu Một Số 4(39)-2018
51
Hình 3. Cửa sổ SET DELAY cho phép chọn các delay từ 25ms đến 5000ms.
Ví dụ ta sẽ thiết kế 24 LED chạy thành 3 chương trình độc lập: Prog 1 gồm LED1 đến
LED7 sáng xen kẻ và đuổi nhau gồm 3 dòng thời gian trễ 100ms. Prog 2 gồm LED8 đến
LED17 chỉ 1 LED sáng tuần tự dịch sang phải có 10 dòng, thời gian trễ 250ms. Prog 3 gồm
gồm LED18 đến LED24 sáng dịch dần qua phải và tắt dịch dần qua phải gồm tất cả 14 dòng,
thời gian trễ 300ms. Khi soạn thảo xong ta lưu thành file .led, trong file này một dòng các bit
1,0 cùng với delay tương ứng như trong bảng 1 dưới đây. Dòng đầu tiên: 100 3 là delay1
100ms, có 3 trạng thái (3 dòng); 250 10 là delay2 250ms, có 10 trạng thái; 300 14 là delay3
300ms, có 14 trạng thái.
Bảng 1. File .led lưu các dòng trạng thái sáng tắt của LED cùng với delay.
100 3 250 10 300 14
000000000000000000010101 DELAY1
000000000000000000101010 DELAY1
000000000000000001010100 DELAY1
000000010000000000000000 DELAY2
000000001000000000000000 DELAY2
000000000100000000000000 DELAY2
000000000010000000000000 DELAY2
000000000001000000000000 DELAY2
000000000000100000000000 DELAY2
000000000000010000000000 DELAY2
000000000000001000000000 DELAY2
000000000000000100000000 DELAY2
000000000000000010000000 DELAY2
100000000000000000000000 DELAY3
110000000000000000000000 DELAY3
111000000000000000000000 DELAY3
111100000000000000000000 DELAY3
111110000000000000000000 DELAY3
111111000000000000000000 DELAY3
111111100000000000000000 DELAY3
011111100000000000000000 DELAY3
001111100000000000000000 DELAY3
000111100000000000000000 DELAY3
000011100000000000000000 DELAY3
000001100000000000000000 DELAY3
000000100000000000000000 DELAY3
000000000000000000000000 DELAY3
Nguyễn Văn Sơn Phần mềm Magic LED board
52
Nhấn menu Tools/ Creat asm file file asm được tạo ra. File Assembly được tạo ra nhờ
một văn bản các lệnh Assembly khung, các dữ liệu là các trạng thái sáng tắt của LED của một
chương trình cùng với thời gian trễ là delay tương ứng được điền vào khung chương trình
Assembly đó để tạo ra một file Assembly hoàn chỉnh như thấy trong file Assembly trong bảng
2 dưới đây, còn các dữ liệu thay đổi theo chương trình được gạch dưới chân và tô đậm.
Bảng 2. File Assembly (. asm) được tạo ra bằng phần mềm Magic LED Board.
BITACTIVE1 BIT 03H
BITACTIVE2 BIT 04H
BITACTIVE3 BIT 05H
SOBUOC1 EQU 30H
SOBUOC2 EQU 31H
SOBUOC3 EQU 32H
DELAY1 EQU 33H
DELAY2 EQU 34H
DELAY3 EQU 35H
MN1_3 EQU 36H
MN1_2 EQU 37H
MN1_1 EQU 38H
MN2_3 EQU 39H
MN2_2 EQU 3AH
MN2_1 EQU 3BH
MN3_3 EQU 3CH
MN3_2 EQU 3DH
MN3_1 EQU 3EH
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP ISRT0
ORG 0030H
MAIN:
MOV IE,#82H
MOV TMOD,#01H
MOV TH0,#HIGH(-25000)
MOV TL0,#LOW(-25000)
SETB TR0
CLR BITACTIVE1
CLR BITACTIVE2
CLR BITACTIVE3
MOV R5,#0
MOV R6,#0
MOV R7,#0
MOV SOBUOC1, #4
MOV SOBUOC2, #22
MOV SOBUOC3, #13
MOV DELAY1, #2
MOV DELAY2, #20
MOV DELAY3, #12
MOV R2, #2
MOV R3, #20
MOV R4, #12
MOV MN1_3, #000H
MOV MN1_2, #000H
MOV MN1_1, #00FH
MOV MN2_3, #000H
MOV MN2_2, #07FH
MOV MN2_1, #0F0H
MOV MN3_3, #0FFH
MOV MN3_2, #080H
MOV MN3_1, #000H
LOOP:
JNB BITACTIVE1, L1
LCALL ACTIVE1
L1:
JNB BITACTIVE2, L2
LCALL ACTIVE2
L2:
JNB BITACTIVE3, LOOP
LCALL ACTIVE3
JMP LOOP
ISRT0:
CLR TF0
MOV TH0,#HIGH(-25000)
MOV TL0,#LOW(-25000)
CJNE R2,#0,T1
JMP TT1
T1:
DJNZ R2, TT1
MOV R2, DELAY1
SETB BITACTIVE1
TT1:
CJNE R3,#0,T2
JMP TT2
T2:
DJNZ R3, TT2
MOV R3, DELAY2
SETB BITACTIVE2
TT2:
CJNE R4,#0,T3
JMP TT3
T3:
DJNZ R4, TT3
MOV R4, DELAY3
SETB BITACTIVE3
TT3:
RETI
ACTIVE1:
CLR BITACTIVE1
MOV A, P0
ORL A, MN1_3
MOV R0, A
MOV A, R5
LCALL LOOK_UP_1_3
CPL A
ANL A, R0
MOV P0, A
MOV A, P2
ORL A, MN1_2
MOV R0, A
MOV A, R5
LCALL LOOK_UP_1_2
CPL A
ANL A, R0
MOV P2, A
MOV A, P3
ORL A, MN1_1
MOV R0, A
MOV A, R5
LCALL LOOK_UP_1_1
CPL A
ANL A, R0
MOV P3, A
INC R5
MOV A, R5
CJNE A,SOBUOC1,EXITACTIVE1
Tạp chí Khoa học Đại học Thủ Dầu Một Số 4(39)-2018
53
MOV R5,#0
EXITACTIVE1:
RET
ACTIVE2:
CLR BITACTIVE2
MOV A, P0
ORL A, MN2_3
MOV R0, A
MOV A, R6
LCALL LOOK_UP_2_3
CPL A
ANL A, R0
MOV P0, A
MOV A, P2
ORL A, MN2_2
MOV R0, A
MOV A, R6
LCALL LOOK_UP_2_2
CPL A
ANL A, R0
MOV P2, A
MOV A, P3
ORL A, MN2_1
MOV R0, A
MOV A, R6
LCALL LOOK_UP_2_1
CPL A
ANL A, R0
MOV P3, A
INC R6
MOV A, R6
CJNE A,SOBUOC2,EXITACTIVE2
MOV R6,#0
EXITACTIVE2:
RET
ACTIVE3:
CLR BITACTIVE3
MOV A, P0
ORL A, MN3_3
MOV R0, A
MOV A, R7
LCALL LOOK_UP_3_3
CPL A
ANL A, R0
MOV P0, A
MOV A, P2
ORL A, MN3_2
MOV R0, A
MOV A, R7
LCALL LOOK_UP_3_2
CPL A
ANL A, R0
MOV P2, A
MOV A, P3
ORL A, MN3_1
MOV R0, A
MOV A, R7
LCALL LOOK_UP_3_1
CPL A
ANL A, R0
MOV P3, A
INC R7
MOV A, R7
CJNE A,SOBUOC3,EXITACTIVE3
MOV R7,#0
EXITACTIVE3:
RET
ORG 0200H
LOOK_UP_1_3:
INC A
MOVC A,@A+PC
RET
TABLE_1_3: DB 000H, 000H, 000H, 000H,
ORG 0400H
LOOK_UP_1_2:
INC A
MOVC A,@A+PC
RET
TABLE_1_2: DB 000H, 000H, 000H, 000H,
ORG 0600H
LOOK_UP_1_1:
INC A
MOVC A,@A+PC
RET
TABLE_1_1: DB 001H, 002H, 004H, 008H,
ORG 0800H
LOOK_UP_2_3:
INC A
MOVC A,@A+PC
RET
TABLE_2_3: DB 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H,
000H,
DB 000H, 000H, 000H, 000H, 000H, 000H,
ORG 0A00H
LOOK_UP_2_2:
INC A
MOVC A,@A+PC
RET
TABLE_2_2: DB 000H, 000H, 000H, 000H, 001H, 003H, 007H, 00FH, 01FH, 03FH, 07FH, 07FH, 07FH, 07FH, 07FH,
07EH,
DB 07CH, 078H, 070H, 060H, 040H, 000H,
ORG 0C00H
LOOK_UP_2_1:
INC A
MOVC A,@A+PC
RET
TABLE_2_1: DB 010H, 030H, 070H, 0F0H, 0F0H, 0F0H, 0F0H, 0F0H, 0F0H, 0F0H, 0F0H, 0E0H, 0C0H, 080H, 000H,
000H,
DB 000H, 000H, 000H, 000H, 000H, 000H,
ORG 0E00H
LOOK_UP_3_3:
INC A
Nguyễn Văn Sơn Phần mềm Magic LED board
54
MOVC A,@A+PC
RET
TABLE_3_3: DB 080H, 0C0H, 0E0H, 0F0H, 078H, 03CH, 01EH, 00FH, 007H, 003H, 001H, 000H, 000H,
ORG 1000H
LOOK_UP_3_2:
INC A
MOVC A,@A+PC
RET
TABLE_3_2: DB 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 080H, 080H, 080H, 080H, 000H,
ORG 1200H
LOOK_UP_3_1:
INC A
MOVC A,@A+PC
RET
TABLE_3_1: DB 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H,
END
Nhấn menu Tools/ Creat Hex File để tạo file HEX, bảng 3 là file HEX đã được tạo ra. Từ
file văn bản Assembly để chuyển thành file HEX ta thực hiện qua hai bước: (1) Chuyển tương
ứng các câu lệnh Assembly thành văn bản gồm các byte là các con số hexa; (2) Từ văn bản
gồm các byte là các con số hexa ta chuyển thành định dạng file HEX. Bản chất của file HEX là
file văn bản, mỗi dòng của file HEX gồm 6 bộ phận: 1. Bắt đầu bằng ký tự ASCII “:”; 2. Số
byte dữ liệu của dòng bằng 02 số hexa; 3. Địa chỉ: Địa chỉ gồm 04 số hexa, địa chỉ là địa chỉ
của byte dữ liệu đầu tiên của dòng; 4. Loại record (Record gồm 02 số hexa, 02 số hexa này từ
00 – 05, có nghĩa có 06 loại record: 00: record data; 01: record chấm hết file (end of file); 02:
record địa chỉ segment mở rộng; 03: record địa chỉ segment bắt đầu; 04: record địa chỉ tuyến
tính mở rộng; 05: record địa chỉ tuyến tính bắt đầu; 5. Dữ liệu (data): n byte dữ liệu biểu diễn
bằng 2n con số hexa); 6. Checksum: là tổng và bù 2 của 4 bộ phận đứng trước chỉ trừ bộ phận
1, ví dụ một dòng file HEX là: :0300300002337A1E là vì 03 + 00 + 30 + 00 + 02 + 33 + 7A =
E2, và bù 2 của E2 là 1E.
Sau đây là 1 file HEX đơn giản gồm 04 dòng, mỗi dòng gồm 06 bộ phận như đã mô tả ở
trên, trừ dòng cuối cùng chỉ có 05 bộ phận vì đây là dòng kết thức file HEX không có bộ phận
data, và mọi file HEX có dòng cuối cùng đều giống nhau.
:10010000214601360121470136007EFE09D2190140
:100110002146017EB7C20001FF5F16002148011988
:10012000194E79234623965778239EDA3F01B2CAA7
:100130003F0156702B5E712B722B732146013421C7
:00000001FF
Bảng 3. File HEX được tạo ra từ phần mềm Magic LED Board.
:03000000020030CB
:03000B00020092E5
:1000300075A882758901758C9E758A58D28CC20309
:10004000C204C2057D007E007F0075300475311644
:1000500075320D75330275341475350C7A027B14C4
:100060007C0275360075370075380F753900753AA2
:100070007F753BF0753CFF753D80753E0030030396
:100080001200BF3004031200F03005F1120121020A
:10009000007DC28D758C9E758A58BA00030200A639
:1000A000DA04AA33D203BB00030200B2DB04AB3490
:1000B000D204BC00030200BEDC04AC35D20532C25F
:1000C00003E5804536F8ED120200F458F580E5A00E
Tạp chí Khoa học Đại học Thủ Dầu Một Số 4(39)-2018
55
:1000D0004537F8ED120400F458F5A0E5B04538F8BE
:1000E000ED120600F458F5B00DEDB530027D00229A
:1000F000C204E5804539F8EE120800F458F580E5B1
:10010000A0453AF8EE120A00F458F5A0E5B0453BD8
:10011000F8EE120C00F458F5B00EEEB531027E0088
:1001200022C205E580453CF8EF120E00F458F58038
:10013000E5A0453DF8EF121000F458F5A0E5B045F4
:100140003EF8EF121200F458F5B00FEFB532027F0F
:0201500000228B
:07020000048322000000004E
:07040000048322000000004C
:07060000048322010204083B
:10080000048322000000000000000000000000003F
:09081000000000000000000000DF
:100A0000048322000000000103070F1F3F7F7F7F48
:090A10007F7F7E7C78706040005D
:100C0000048322103070F0F0F0F0F0F0F0F0E0C06B
:090C10008000000000000000005B
:100E000004832280C0E0F0783C1E0F07030100003D
:101000000483220000000000000000808080800037
:101200000483220000000000000000000000000035
:00000001FF
Một khi file HEX được tạo ra ta có thể dùng một phần mềm bất kỳ để nạp (program) cho
vi điều khiển.
3. Kết luận
Phần mềm Magic LED Board đã được sử dụng trong thực tế trong khoảng thời gian dài
cho thấy phần mềm hoạt động ổn định và chính xác.Tuy nhiên để phần mềm có tính đa năng
hơn, phần mềm Magic LED Board cần tích hợp công cụ nạp cho vi điều khiển, đây là công việc
cần phát triển trong thời gian sắp tới. Nếu hoàn thành tích hợp công cụ nạp cho vi điều khiển
như đã nói trên như vậy sau khi soạn thảo các dòng trạng thái sáng tắt LED, chạy mô phỏng
trên phần mềm để điều chỉnh delay cho phù hợp, thì kỹ thuật viên chỉ cần nhấn một nút là xong,
một công việc quá đơn giản cho kỹ thuật viên.
TÀI LIỆU THAM KHẢO
[1]. I. Scott Mackenzie (1995). The Microcontroller” Prentice Hall
[2]. Tài liệu vi điều khiển AT89S52. Truy cập ngày 10/01/2017 nguồn
https://www.keil.com/dd/docs/datashts/atmel/at89s52_ds.pdf
[3]. Tài liệu định dạng file HEX. Truy cập ngày 10/02/2017 nguồn