như topic trước mình up là phần cơ bản về cách quét cách chạy hiệu ứng và mạch các loại từ nhỏ đến lớn
http://www.dientuvietnam.net/forums/...7/index44.html
mình lập topic này để tạo cơ hội để các bạn có thể tham khảo tốt hơn qua mục lục và phát triển đề tại lên 1 chút
chạy ngày và giờ, giao tiếp Rom 24cxx để lưu mã font, giao tiếp máy tính để thay đổi nội dung và font dễ dàng hơn
vì project mang tính chất tham khảo nên mình chỉ gói gọn lại trên 1 ví dụ là 1 bảng nhỏ(8x32 hoặc 16x64) để các bạn học hỏi và có thể tự phát triển nó lên
đây là bài đầ tiên của topic : led matrix 8x32 giao tiếp rom 24cxx
vì phát triển từ từ nên mình sửa dụng bộ nhớ nội để lưu mã font sau đó nạp nó vào rom (phần này làm lần đâu thôi thay thế cho việc nạp mã font từ máy tính vào rom)
phần hiển thị dc quét bằng phương pháp quét cột xuất dữ liệu ra hàng. dữ liệu dc ghi tạm vào ram nội ( ghi lần đâu lần sau sẽ ghi ội dung của dòng chữ tiếp theo vào ) và đọc ram và xuất ra led
ưu điểm để giảm đi thời gian đọc rom và xuất dữ liệu ( khi đọc rom mất 1 khoảng time ko đủ để quét và sẽ ko thấy dc nội dung) nội dung lưu vào ram và chỉ cần đọc trên ram xuất trực tiếp ra bảng led nên thời gian xuất rất ít đảm bảo dc việc hiển thị ko bị nháy
đây là phần mô phỏng và code
code kèm theo
file thứ 2
đây nó hơi phức tạp nhưg viết vậy để code nó gọn gàng hơn và nhìn vào hk bị rối :d các pác chịu khó nghiên cứu tí
code coppy về chỉ cần sửa các đường dẫn $INCLUDE(1:\2.asm) 1 là tên ổ đĩa ví dụ: D,E,F 2 là tên file
chúc các pác thành công :d
em đính kèm file em làm sẵn và mô phỏng để các pác nghiên cứu
ledmatrix giaotiep rom.zip
http://www.dientuvietnam.net/forums/...7/index44.html
mình lập topic này để tạo cơ hội để các bạn có thể tham khảo tốt hơn qua mục lục và phát triển đề tại lên 1 chút
chạy ngày và giờ, giao tiếp Rom 24cxx để lưu mã font, giao tiếp máy tính để thay đổi nội dung và font dễ dàng hơn
vì project mang tính chất tham khảo nên mình chỉ gói gọn lại trên 1 ví dụ là 1 bảng nhỏ(8x32 hoặc 16x64) để các bạn học hỏi và có thể tự phát triển nó lên
đây là bài đầ tiên của topic : led matrix 8x32 giao tiếp rom 24cxx
vì phát triển từ từ nên mình sửa dụng bộ nhớ nội để lưu mã font sau đó nạp nó vào rom (phần này làm lần đâu thôi thay thế cho việc nạp mã font từ máy tính vào rom)
phần hiển thị dc quét bằng phương pháp quét cột xuất dữ liệu ra hàng. dữ liệu dc ghi tạm vào ram nội ( ghi lần đâu lần sau sẽ ghi ội dung của dòng chữ tiếp theo vào ) và đọc ram và xuất ra led
ưu điểm để giảm đi thời gian đọc rom và xuất dữ liệu ( khi đọc rom mất 1 khoảng time ko đủ để quét và sẽ ko thấy dc nội dung) nội dung lưu vào ram và chỉ cần đọc trên ram xuất trực tiếp ra bảng led nên thời gian xuất rất ít đảm bảo dc việc hiển thị ko bị nháy
đây là phần mô phỏng và code
Code:
;================== Khai Bao ================== $INCLUDE(F:\VinhPhatElectronic\project 89S\Code\VPKBoard.asm) ORG 0000H SJMP BEGIN ORG 0023H LJMP SERIALPORT ORG 0030H BEGIN: ;---------------- SERIAL PORT -------------------- MOV TMOD, #20H MOV TH1, #0FDH MOV SCON, #50H MOV IE, #10010000B SETB TR1 ;---------------- RESET BOARD -------------------- MOV SO_HANG,#8 MOV SO_COT,#50;SO COT + 2 CHO DU 595 XUAT SETB MAU2;CHON MAU DO SETB MAU;CHON MAU DO ;------------- ;LCALL WRITE_DATA_IN; dong nay de nap du liu vao rom MOV ADDRESS_HIGH,#00 MOV ADDRESS_LOW,#00 LCALL COPPY MAIN: MOV VONGLAP0,#170 MOV LONG1,#40H RUN: ;MOV SPEED,#2 NHAN0:MOV R0,LONG1 LCALL CHAYCHU ;DJNZ SPEED,NHAN0 INC LONG1 DJNZ VONGLAP0,RUN SJMP MAIN CHAYCHU: ;MOV R0,#40H MOV R1,#0 SETB RED CLR CLK CLR SHW SETB CLK SETB SHW CLR RED lap: SETB CLK SETB SHW MOV A,@R0 CPL A MOV P0,A LCALL DELAYSCAN INC R0 INC R1 CLR CLK CLR SHW CJNE R1,#48,lap RET COPPY:;GHI VAO RAM MOV R0,#40H CLR LED0 lapS: LCALL READ ;BYTE READ MOV A,BYTE_READ MOV @R0,A INC R0 INC ADDRESS_LOW CJNE R0,#0F9H,lapS SETB LED0 RET ;============================================ WRITE_DATA_IN: ; GHI DU LIEU NHAP VAO TU P1 MOV ADDRESS_HIGH,#00H MOV ADDRESS_LOW,#00H MOV DPTR,#FONTCODE MOV R3,#0 ; MOV VONGLAP1,#64 ; ALL: MOV VONGLAP0,#200;255 NHANW: CLR LED1 MOV A,R3 MOVC A,@A+DPTR MOV BYTE_WRITE,A LCALL WRITE ; BYTE WRITE LCALL DELAY100MS INC R3 INC ADDRESS_LOW DJNZ VONGLAP0,NHANW ; INC ADDRESS_HIGH ;DJNZ VONGLAP1,ALL SETB LED1 RET ;============================================ DELAYSCAN: MOV R7,#23;25 DL1: MOV R6,#10 DL2: NOP ; 1MC NOP DJNZ R6,DL2 ; 2MC TOTAL = 4*255uS = 1000uS ~ 1mS DJNZ R7,DL1 RET ;+++++++++++++++++++++++++++++++++++++++ ;================== brower ================== $INCLUDE(F:\VinhPhatElectronic\project 89S\Code\EEPRomstandard.asm) ;================== delay ================== $INCLUDE(F:\VinhPhatElectronic\project 89S\Code\DELAY.asm) SERIALPORT: JB TI,TRANS MOV A,SBUF CJNE A,#"*",CODE0 CODE0: CLR RI RETI TRANS: CLR TI RETI TEST: DB 00000000B DB 00000001B DB 00000011B DB 00000111B DB 00001111B DB 00011111B DB 00111111B DB 01111111B DB 11111111B FONTCODE: db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 080h db 0E0h db 0FCh db 09Fh db 007h db 098h db 0E0h db 080h db 081h db 0FFh db 0FFh db 081h db 081h db 0FFh db 0E1h db 070h db 038h db 08Eh db 0FFh db 080h db 081h db 0FFh db 0FFh db 091h db 010h db 091h db 0FFh db 0FFh db 081h db 000h db 000h db 000h db 081h db 0FFh db 0FFh db 089h db 088h db 0F8h db 070h db 081h db 0FFh db 0FFh db 091h db 010h db 091h db 0FFh db 0FFh db 081h db 001h db 007h db 039h db 0C8h db 0F9h db 03Fh db 007h db 001h db 0C0h db 081h db 0FFh db 0FFh db 081h db 0C0h db 000h db 000h db 000h db 081h db 0FFh db 0FFh db 091h db 0B9h db 082h db 081h db 0FFh db 0FFh db 081h db 001h db 003h db 000h db 081h db 0FFh db 0FFh db 091h db 0B9h db 082h db 000h db 03Eh db 07Eh db 0C3h db 081h db 081h db 0C1h db 042h db 000h db 0C0h db 081h db 0FFh db 0FFh db 081h db 0C0h db 081h db 0FFh db 0FFh db 091h db 09Ch db 0EEh db 063h db 001h db 000h db 07Eh db 07Eh db 0C3h db 081h db 081h db 0C3h db 07Eh db 07Eh db 000h db 081h db 0FFh db 0E1h db 070h db 038h db 08Eh db 0FFh db 080h db 081h db 0FFh db 0FFh db 081h db 000h db 03Eh db 07Eh db 0C3h db 081h db 081h db 0C1h db 042h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h db 000h END
Code:
;ten file này là EEPRomstandard.asm lưu vào 1 file và ghi đường dẫn vào $INCLUDE(F:\VinhPhatElectronic\project 89S\Code\EEPRomstandard.asm) ;================== SUBROUNTINE ================== ; USE R4,R5,R6 ;-------- BYTE WRITE WRITE: LCALL START_BIT MOV A,#10100000B ; 4 BITS START MOV R4,#8H ; 4 BITS LCALL ROTATE LCALL SLAVE_ACK NOP NOP MOV A,ADDRESS_HIGH ; BYTE ADDRESS MOV R4,#8H LCALL ROTATE LCALL SLAVE_ACK ; SLAVE ACKNOWLEDGE NOP NOP MOV A,ADDRESS_LOW MOV R4,#8H LCALL ROTATE LCALL SLAVE_ACK MOV A,BYTE_WRITE ; BYTE DATA MOV R4,#8H LCALL ROTATE LCALL SLAVE_ACK ; SLAVE ACKNOWLEDGE LCALL STOP_BIT ; STOP BIT RET ;-------- BYTE READ READ: LCALL START_BIT MOV A,#10100000B ; 4 BITS START MOV R4,#8H ; 4 BITS LCALL ROTATE LCALL SLAVE_ACK ; SLAVE ACKNOWLEDGE MOV A,ADDRESS_HIGH ; BYTE ADDRESS MOV R4,#8H LCALL ROTATE LCALL SLAVE_ACK ; SLAVE ACKNOWLEDGE MOV A,ADDRESS_LOW MOV R4,#8H LCALL ROTATE LCALL SLAVE_ACK LCALL START_BIT ; NEW SRART BIT MOV A,#10100001B ; 4 BITS START MOV R4,#8H ; 4 BITS LCALL ROTATE LCALL SLAVE_ACK ; SLAVE ACKNOWLEDGE MOV R4,#8H READ_DATA: SETB SCL NOP MOV C,SDA CLR SCL MOV A,BYTE_READ RLC A ; ROTATE NEXT BIT MOV BYTE_READ,A ; SAVE ROTATED DATA DJNZ R4,READ_DATA LCALL NO_ACK ; NO ACKNOWLEDGE LCALL STOP_BIT RET ;-------- START BIT START_BIT: SETB SCL NOP NOP SETB SDA NOP CLR SDA NOP NOP CLR SCL NOP RET ;-------- STOP BIT STOP_BIT: NOP CLR SDA NOP NOP SETB SCL NOP SETB SDA NOP NOP RET ;-------- ROTATE ROTATE: CLR SCL NOP NOP RLC A MOV SDA,C NOP NOP SETB SCL NOP NOP DJNZ R4,ROTATE RET ;-------- SLAVE ACKNOWLEDGE SLAVE_ACK: CLR SCL NOP SETB SDA NOP NOP SETB SCL MOV C,SDA NOP; READ STATE OF SDA CLR SCL RET ;-------- NO ACK NO_ACK: SETB SDA NOP NOP SETB SCL NOP CLR SCL RET ;---------------------- DELAY100MS: MOV R5,#20 LOOPDELAY100: MOV R6,#250 DJNZ R6,$ DJNZ R5,LOOPDELAY100 RET ;--------
Code:
; file này là file khai báo lưu bằng tên VPKBoard.asm đường dẫn ghi vào dòng $INCLUDE(F:\VinhPhatElectronic\project 89S\Code\VPKBoard.asm) đầu code chính nhé :d ;XXXXXXXXXXXXX BIEN SU DUNG CHINH XXXXXXXXXXXXX D EQU 20H D1 BIT D.0 ERROR BIT D.1 CONNECT BIT D.2 ;==== EEPROM ==== BYTE_READ DATA 21H ; DU LIEU DOC TU ROM BYTE_WRITE DATA 22H ; DU LIEU GHI VAO ROM ADDRESS_HIGH DATA 23H ; DIA CHI BYTE ADDRESS_LOW DATA 24H ;==== MATRIX ==== SO_COT DATA 25H SO_HANG DATA 26H DINH_BO_DEM DATA 27H BIEN_TOC_DO DATA 28H BIENS DATA 29H MAU BIT BIENS.0 MAU2 BIT BIENS.1 ;==== BIEN PHU ==== LONG1 DATA 2AH LONG2 DATA 2BH SPEED DATA 2CH DEL0 DATA 2DH DEL1 DATA 2EH VONGLAP0 DATA 2FH VONGLAP1 DATA 30H ;==========[ VinhPhat Main Board ]============= PORT0 EQU P0 HANG EQU P0 ;============================================== PORT1 EQU P1 ;============================================== PORT2 EQU P2 CLK BIT P2.7 SHW BIT P2.6 RED BIT P2.5 GREEN BIT P2.4 ;============================================== PORT3 EQU P3 TX BIT P3.0 RX BIT P3.1 SDA BIT P3.2 SCL BIT P3.3 LEDCON BIT P3.4;BAO KET NOI VOI PC LED0 BIT P3.5;BAO TINH TRANG ROM LED1 BIT P3.6;BAO SAN SANG GHI ROM LED2 BIT P3.7;BAO SAN SANG DOC ROM ;============================================== INTERUP_SETTING: ;MOV TMOD,#01H ;SETB TF0 ;MOV IE,#10010000B ;MOV TH0,#HIGH(-100) ;MOV TL0,#LOW(-100) ;SETB TR0 MOV TMOD, #20H MOV TH1, #0FDH MOV SCON, #50H MOV IE, #10010000B SETB TR1 RET
code coppy về chỉ cần sửa các đường dẫn $INCLUDE(1:\2.asm) 1 là tên ổ đĩa ví dụ: D,E,F 2 là tên file
chúc các pác thành công :d
em đính kèm file em làm sẵn và mô phỏng để các pác nghiên cứu
ledmatrix giaotiep rom.zip
Comment