Phần mềm magic LED board

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.

pdf7 trang | Chia sẻ: thanhle95 | Lượt xem: 444 | Lượt tải: 1download
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