intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Phần mềm magic Led Board

Chia sẻ: Thamoioii Thamoioii | Ngày: | Loại File: PDF | Số trang:7

34
lượt xem
1
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

Nội dung Text: Phần mềm magic Led Board

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

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2