Mivel a témában nem találtam nagyon semmit itt a fórumon ezért gondoltam közkincsé teszem a dolgot.
A MAX6953(i2c) és 6952(SPI) arra adatott, hogy 5x7-es Led mátrixot vezéreljen. Fontos hogy a LED matrix ROW chatode-os legyen. Egyszerre négy digitet hajt egy IC. Cool:) Az adatlapban benne van minden, milyen huligán dolgot tud, és ingyenes minta rendelhető. 3 hét , de ingyen van. Külső körítés 7 db alkatrész:)
Egy nagyon alap programot mellékelek, ami scrollozza a szöveget.
Igaz csak karakteresen kezeli a kijelzőt(egyelőre), de lehet grafikusan is, de az már nem egyszerű történet, de LEHET. Lásd apllication notes a MAXIM oldalán.
Én a Kingbright TA40-11SRWA kijelzőit használtam. A panel is ehhez készült. Ha valakit érdekel annak megadom hol gyártattam. Után lehet rendelni! Vagy ha kell valakinek az Eagle brd állományt is odaadom szívesen.
No a progi.... Lehet cincálni átírni. Sőt várok javaslatot is ha van elegánsabb megoldás. Bocsi az angol kommentért...
Kód: Egész kijelölése
$regfile = "m168def.dat"
$crystal = 4000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
$lib "i2c.lbx"
Config Sda = Portc.4
Config Scl = Portc.5
Config Twi = 100000 'calculate from bit rate register and system clock
Twbr = 12 'bit rate register
Twsr = 0 'prescaler registers
I2cinit
Dim Text_len As Byte
Dim I As Byte
Const Board01 = &HA0
Const Digit0 = &H63
Const Digit1 = &H62
Const Digit2 = &H61
Const Digit3 = &H60
Dim Text As String * 40
Dim Text_tmp(40) As String * 1
Declare Sub I2cwrite(byval Addr As Byte , Byval Digit As Byte , Txt() As String )
'-----------------Board conf----------
I2cstart
I2cwbyte Board01 'Board adress
I2cwbyte &H01 'Hx01 register address
I2cwbyte &HFF 'Hx01 register data (intensity dig0-1)
I2cwbyte &HFF 'Hx02 register data (intensity dig2-3)
I2cwbyte &H01 'Hx03 register data (scan limit)
I2cwbyte &H29 'Hx04 register data (config register)
I2cstop
Waitms 10
'-------------------------------------
Wait 2
Text = " HELLO WORLD. I'm a info display ^" ' ^ this character have to show end of text
Text_len = Len(text)
For I = 1 To Text_len
Text_tmp(i) = Mid(text , I , , 1) 'Load text_tmp array with text
Next
Do
For I = 1 To Text_len
If Text_tmp(i) = "^" Then Exit For
Call I2cwrite(board01 , Digit3 , Text_tmp(i))
If Text_tmp(i + 1) = "^" Then Exit For
Call I2cwrite(board01 , Digit2 , Text_tmp(i + 1))
If Text_tmp(i + 2) = "^" Then Exit For
Call I2cwrite(board01 , Digit1 , Text_tmp(i + 2))
If Text_tmp(i + 3) = "^" Then Exit For
Call I2cwrite(board01 , Digit0 , Text_tmp(i + 3))
Waitms 300 'scroll speed
Next
Loop
Sub I2cwrite(byval Addr As Byte , Byval Digit As Byte , Txt() As String )
I2cstart
I2cwbyte Addr
I2cwbyte Digit
I2cwbyte Txt
I2cstop
Waitms 10
end sub
Ennyi kb....
BY
KN