Led matrix MAX6953-al

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
kovacsna
Pákabűvész
Hozzászólások: 208
Csatlakozott: 2008. június 3. kedd, 6:00

Led matrix MAX6953-al

Hozzászólás Szerző: kovacsna »

Hello Mindenkinek.

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

Egy kérdesem volna csak. Talán bascomban (de lehet, hogy nem) láttam, hogy a string típusú váltózra lehetett elmenként is hivatkozni. Mintha tömb lenne. Van ilyen???
Ennyi kb....
BY
KN
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

A "MID"-re gondolsz?

Kód: Egész kijelölése

Action

The MID function returns part of a string (a sub string).

The MID statement replaces part of a string variable with another string.

 

 

Syntax

var = MID(var1 ,st [, l] )

MID(var ,st [, l] ) = var1

 

 

Remarks

var
 The string that is assigned.
 
Var1
 The source string.
 
st
 The starting position.
 
l
 The number of characters to get/set.
 

 

 

See also

LEFT , RIGHT

 

 

Example

Dim S As String * 15 , Z As String * 15

S ="ABCDEFG"

Z = Left(s , 5)

Print Z                                                     'ABCDE

Z = Right(s , 3) : Print Z

Z = Mid(s , 2 , 3) : Print Z

End
8)
Avatar
kovacsna
Pákabűvész
Hozzászólások: 208
Csatlakozott: 2008. június 3. kedd, 6:00

Hozzászólás Szerző: kovacsna »

Nem. Azt használom én is.
De akkor nem itt volt. Lehet hogy PHP-ban.
Így lehetett hivatkozni rá.

valami ="abcdef"

print valami(1) Kiirta hogy "a". stb.....
Avatar
kovacsna
Pákabűvész
Hozzászólások: 208
Csatlakozott: 2008. június 3. kedd, 6:00

Hozzászólás Szerző: kovacsna »

Az áramkör és szoftveres rész bővült mégy egy panellal. Tehat 8 digiten megy a kijelzés.
Hamarosan felteszem a szoftvert.
A grafikus kezelés is készül, ehhez viszont némi segítséget kérnék, attól aki profi VB-ben vagy C-ben.
Egy szoftverről lenne szó, ami az animációt és kijelzési képeket felbontja megadott struktúra szerint. Részletek, majd írok.
Illetve ötlet is kell, hogy ezeket miben lenne célszerű tárolni, ami gyors, stb.
Én flash-re gondoltam.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Mennyire kell gyors?
I2C EEPROM busz 400kHz-n lazán megy. Ez kb. 20kbit/s, 2k/sec-t simán tud olvasásban.

SD kártya 40 kByte/sec-l olvasható....
Avatar
kovacsna
Pákabűvész
Hozzászólások: 208
Csatlakozott: 2008. június 3. kedd, 6:00

Hozzászólás Szerző: kovacsna »

Az I2C-n megy a meghajtók vezérlése. Bár lehet, hogy lesz SPI-s verzió. Az még gyorsabb. Szóval az I2C-t hagynám csak a mehajtókhoz.
Lehet, hogy az SD kártya jó lesz!
A sebesség attól függ, mennyire akarom, hogy folyamatos legyen az animáció, és mekkora a kijelző.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Az emberi szem 25-30 hz felett nem lát:)
Az i2c prom is elég lehet....

sd kártya esetén meg pc kártyaolvasóval korlátlan terülteted van:)
Avatar
kovacsna
Pákabűvész
Hozzászólások: 208
Csatlakozott: 2008. június 3. kedd, 6:00

Hozzászólás Szerző: kovacsna »

Ez igaz, de mégis szaggatottnak látunk egy gyengébb animációt...
Félreértés ne essék nem FULL HD kijelző készül.:)

Az SD kártya lesz a megoldás. Még nem dolgoztam vele. Mennyire körülményes?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Használj AVR-DOS-t a BASCOMból.
A spi-t SW alapon állítsd be, akkor azonnal megy:).
SD FAT16 legyen (32...1024MB).

Azonnal megy.
AVR SRAMból 2k-t szánj rá (min. 1.2k kell), legkisebb IC: Mega32 / Mega328 lhet.
Avatar
kovacsna
Pákabűvész
Hozzászólások: 208
Csatlakozott: 2008. június 3. kedd, 6:00

Hozzászólás Szerző: kovacsna »

Hű az nagyon idegen pálya...
Soha nem is láttam még.

Ok, köszi.

M168 van egyelőre, az jó lesz.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

168-ra csak sima memóriaként kezelhető az SD.
Avatar
kovacsna
Pákabűvész
Hozzászólások: 208
Csatlakozott: 2008. június 3. kedd, 6:00

Hozzászólás Szerző: kovacsna »

Az nem jó....
Mondjuk a vezérlést még az STK500 látja el, szóval bármit használhatok.
Na nézek majd valamit.
Eestleg 16 bites procik?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

ATMega32?
AMega644, 1284 - ha még DIP tokos kell?

M128/1281/2561? - SMD

Ezek miért nem jók?


C-ben/Arduinoban a uFAT is jó nekd... Az M168 azonban könnyen kicsi lesz (láb plusz memória). Memória esetén a M328 jó alternatíva - csereszabatos a M68-l.
Avatar
kovacsna
Pákabűvész
Hozzászólások: 208
Csatlakozott: 2008. június 3. kedd, 6:00

Hozzászólás Szerző: kovacsna »

Az is jó...
Nagyon képlékeny a dolog....vezérlő oldalról.

A dip tok max a fejlesztés alatt jön jól, nem kell átalakítót gyártani:)

C-be nem akarok beleszaladni, bár lehet, hogy muszáj lesz.:)

Az milyen lenne, ha mondjuk még lenne egy szoftveres i2c busz pluszba és
Odatennék sramot, amibe beteszem egy CF-ről az adatot?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Minek?????

Az I2C elég gyors....
Az SD kártyától ne félj. Baromi egyszerű.
Kb 6 perc a élesztés, a mintaprogik alapján azonnal megy.
Miért akarod külön chipre tenni a memória kezelést? Csak lassítja a rendszert. Mind az I2C, mind a SPI megszakításban is működik! (nem időérzékeny, mert az órajel a jellel megy!

Sztem próbáld ki...
Timerben a kijelzőkezelés i2c-n, a főprogi meg a sdről.
Az alapötletet lesd meg, hogy kll ezt _hangra_. Az sokkal érzékenyebb!
http://avr.tavir.hu/modules.php?name=Co ... ge&pid=123
WaveShield
Válasz küldése