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