Thông báo

Collapse
No announcement yet.

Led matrix giao tiếp Rom 24Cxx và giao tiếp máy tính

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Led matrix giao tiếp Rom 24Cxx và giao tiếp máy tính

    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:
    ;================== 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 kèm theo

    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
    ;--------
    file thứ 2

    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
    đâ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
    Attached Files
    8051 là con em viết thành thạo. em sẵn sàng giúp đỡ các pác nếu em có thể
    liên lạc với em qua địa chi email: Mob: 01882.076.989

  • #2
    Cảm ơn bác!!! Mình ngâm cứu xem có gì nhờ bác giúp đở nha. Topic rất hay

    Comment


    • #3
      anh hoangphat oi! Em dang lam bang ma tran 8x40 chay ca 2 mau va dieu khien bang may tinh(danh dong chu nao thi chay dong do) e dung 10 con 74hc595 de giai ma( 5 cho do va 5 cho xanh) 10 con uln2803 mac voi 74hc595 de hut dong , con hang thi noi qua 8 con trasitor 2N2222. a giup e lap trinh dc k ạ . e thank a

      Comment


      • #4
        thank pác trước nha. nhungpác Hoangphat không giới thiệu cho ae tham khảo pp quét hàng mà dùng quét cột này thì phát triển bảng lớn sẽ gặp phức tạp
        chỉ có tâm hồn là nơi duy nhất: có thể biến thiên đường thành địa ngục và ngược lại có thể biến địa ngục hóa thiên đường
        Everything should be made as simple as possible, but not simpler

        Comment

        Về tác giả

        Collapse

        hoangphat đam mê về ngành điện tử Tìm hiểu thêm về hoangphat

        Bài viết mới nhất

        Collapse

        Đang tải...
        X