tlc5920 16x8 led driver/controller

Daniel Valuch balu na k-net.fr
Úterý Srpen 28 07:32:06 CEST 2018


pisal som to pred 10 rokmi, ale reverznut by nemalo byt tazke :-)

hodiny    equ 30h    ;aktualny cas
minuty    equ 32h
sekundy    equ 34h
medzi_low equ 36h
medzi_high equ 37h
GPS_status equ 38h
sek_tmp1 equ 39h
sek_tmp2 equ 3Ah

timeshift bit 7Ch    ;time shift with respect to GMT. 0 = GMT+1, 1 = GMT+2
timeshift_in bit p3.5    ;timeshift input

text    equ 40h    ; zaciatok 32B bloku s aktualnym textom

disp    equ 40h ;zaciatok pamate s datami pre displej
disp1    equ 40h    ; znak1 H displeja 1
disp2    equ 48h    ; znak1 H displeja 2
disp3    equ 50h    ; znak1 H displeja 3
disp4    equ 58h    ; znak1 H displeja 4
disp5    equ 60h    ; znak1 H displeja 5
disp6    equ 68h    ; znak1 H displeja 6
disp7    equ 70h    ; znak1 H displeja 7
disp8    equ 78h    ; znak1 H displeja 8


znak1    equ 80h ; zaciatok dat (bit 0) pre znak1
znak2    equ 90h ; zaciatok dat (bit 0) pre znak2
znak3    equ 0A0h ; zaciatok dat (bit 0) pre znak3
znak4    equ 0B0h ; zaciatok dat (bit 0) pre znak4

latch    bit P2.7
blank    bit P2.5
sclk    bit P2.6
csel0    bit P2.4
csel1    bit P2.3
csel2    bit P2.2

RCAP2H    equ 0CBh
RCAP2L    equ 0CAh
T2MOD    equ 0C9H
T2CON    equ 0C8H
TR2    bit 0C8h.2

task1flag bit 78h
task2flag bit 79h
task3flag bit 7Ah
task4flag bit 7Bh


pocet_znakov equ 32 ; pocet znakov na displeji


     org 0

     jmp init

     ;interrupt handles
     org 0bh        ;------- timer 0 interrupt handle
     mov TL0,#Low T0_const
     mov TH0,#High T0_const
     push 0h    ;push registra R0
     push 1h    ;push registra R1

         jb task1flag,task1
     jb task2flag,task2
         jb task3flag,task3
     jb task4flag,task4

     setb task1flag
     clr task2flag
     clr task3flag
     clr task4flag
     jmp von_z_int

task1:
     clr task1flag
     setb task2flag
     clr task3flag
     clr task4flag

     ;
     mov R0,#znak1
     mov R1,#16

;    setb blank

loop3:    mov P0, na R0
     setb sclk
     inc R0
     clr sclk
     djnz R1,loop3

     setb latch
     clr latch

     clr csel0
     clr csel1
     clr csel2
;    clr blank

     jmp von_z_int

task2:
     clr task1flag
     clr task2flag
     setb task3flag
     clr task4flag

     ;
     mov R0,#znak2
     mov R1,#16

;    setb blank

loop4:    mov P0, na R0
     setb sclk
     inc R0
     clr sclk
     djnz R1,loop4

     setb latch
     clr latch

     setb csel0
     clr csel1
     clr csel2
;    clr blank

     jmp von_z_int

task3:
     clr task1flag
     clr task2flag
     clr task3flag
     setb task4flag

     mov R0,#znak3
     mov R1,#16

;    setb blank

loop5:    mov P0, na R0
     setb sclk
     inc R0
     clr sclk
     djnz R1,loop5

     setb latch
     clr latch

     clr csel0
     setb csel1
     clr csel2
;    clr blank

     jmp von_z_int

task4:
     setb task1flag
     clr task2flag
     clr task3flag
     clr task4flag

     ;
     mov R0,#znak4
     mov R1,#16

;    setb blank
loop6:    mov P0, na R0
     setb sclk
     inc R0
     clr sclk
     djnz R1,loop6

     setb latch
     clr latch

     setb csel0
     setb csel1
     clr csel2
;    clr blank

     jmp von_z_int



von_z_int:
     clr blank
     pop 1h ;pop registra R1
     pop 0h ;pop registra R1
     reti


On 27/08/2018 21:58, David Belohrad wrote:
> Ahojte,
>
> ma prosim nekdo zkusenosti s tl5920?
>
> www.ti.com/lit/ds/symlink/tlc5920.pdf
>
>
> nevim jak spravne formulovat muj dotaz. ... nefunguje to a asi nerozumim, jak to ma fungovat. Datasheet je velice skoupy na informace. a at delam co delam, led matrix zobrazuje hovadiny. Vyrobil jsem kus systemverilog kodu, ktery dava 'blank' signal trvale na log. L. Necham vzdy do 16 bitoveho registru nacist pro dany radek tu 16-bitovou informaci, po kazdych 16 bitech vytvorim puls na LATCH (transision L->H->L), a na kazdych 16-bitech cykluji csel vzdy dvakrat (tedy mezi dvema latch impulzy ma csel hodnotu 0,1 pak 2,3 pak 4,5), a tedy jeden 'frame' vyzaduje 4x latch - celkove 64 bitu poslanych na kazdy frame, ktery cykluje csel od nuly do sedmi.
>
> Kdyz to spustim a divam se na data na SIN/SOUT, vsechno vypada perfektne, logicky. Ovsem diody si delaji co chteji. nektere z nich slabe sviti, nektere silne, skoro to vypada, jako kdyby nebyl dostatecny proud tema diodama, nebo dochazelo k nejakemu mixu mezi logikou CSEL pinu a seriove linky. Napada me jenom, ze signal BLANK proste z nejakeho neznameho duvodu musi byt take pouzivan. Ja jej mam trvale na nule, protoze chci mit ty diody neustale zapnute.
>
> Tak me napadlo, nema k tomuto driveru nekdo kod napsany pro ... cokoliv? arduino/jakykoliv mikrokontroler, abych si mohl proverit jestli casuji jak mam? K cemu je BLANK?
>
> ztratil jsem s tou hovadinou cely den
>
> diiky.
>
> .d.
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list




Další informace o konferenci Hw-list