Wiring-MAX7219 LED Display
Wiring-MAX7219 LED Display
A wiring V1.0 (Atmega128) panel és a MAX 7219 illesztésében kérnék segítséget. Jelenleg ott tartok, hogy az Arduino-s alkalmazások 90-95%-a lefordítható a 0027-es fordítóval és szépen futnak. Az SPI-s MAX7219-es 7szegmenses LED kijelzővel mások is csak szenvednek. A fórumon alapnak a "MATRIX" és a SPRITE" Demokat javasolják átdolgozni. Próbáltam, csak villódzás, esetleg 0,5-1 sec villanás a kiírandó karakterből és nincs tovább. Ha valakit érdekel, vagy sok ideje van sokat segíthetne, mert már meg is terveztem a nyákot és csak utóellenőrzésnek szántam a próbapanelt, itt viszont megállt a tudomány! Köszi!
Re: Wiring-MAX7219 LED Display
Jó lenne tudni mivel próbálkoztál eddig?
Itt van 1 példa:
Interfészek LED kijelzők a MAX7219 vezető
http://www.gammon.com.au/forum/?id=11516
Mivel 16Bítet 1*re kel kiküldeni.
Ellenőrizd le:
Itt van 1 példa:
Interfészek LED kijelzők a MAX7219 vezető
http://www.gammon.com.au/forum/?id=11516
Mivel 16Bítet 1*re kel kiküldeni.
Ellenőrizd le:
Kód: Egész kijelölése
void sendByte (const byte reg, const byte data)
{
digitalWrite (SS, LOW);
SPI.transfer (reg);
Itt nem mehet az SS, HIGH-be automatikusan!
SPI.transfer (data);
digitalWrite (SS, HIGH);
} // end of sendByte
Re: Wiring-MAX7219 LED Display
Köszi válaszod! Igen innen indultam, ez volt az alap. Egyből a 7-szegmenses kijelzőkre koncentráltam, miután nem ment, vissza az alapokhoz, a mátrixhoz. Most ott tartok, hogy a mátrixból bármelyik LED vezérelhető, ami egyben szegmensként is fölfogható. Tehát igazából a kérdés inkább az, hogy miért akartam a készet átvenni, ahelyett hogy sajátot kreáltam volna.
Ez valahogy így néz ki a Wiring-ben. Azért még egyszer nekifutok a karakter definiálásnak, majd visszateszem a 7 szegmenses kijelzőket és jelentkezem újra. Köszönöm!
Kód: Egész kijelölése
#include <Matrix.h>
#include <Sprite.h>
Matrix myMatrix = Matrix(25, 26, 24); /25-DATA, 24-SS, 26-CLK
void setup()
{
}
void loop()
{
myMatrix.clear();
delay(1000);
myMatrix.write(1, 1, HIGH);
myMatrix.write(1, 2, HIGH);
myMatrix.write(1, 3, HIGH);
myMatrix.write(1, 4, HIGH);
myMatrix.write(1, 5, HIGH);
myMatrix.write(1, 6, HIGH);
myMatrix.write(1, 7, HIGH);
myMatrix.write(1, 0, HIGH);
myMatrix.write(0, 1, HIGH);
myMatrix.write(0, 2, HIGH);
myMatrix.write(0, 3, HIGH);
myMatrix.write(0, 4, HIGH);
myMatrix.write(0, 5, HIGH);
myMatrix.write(0, 6, HIGH);
myMatrix.write(0, 7, HIGH);
myMatrix.write(0, 0, HIGH);
delay(1000);
}Re: Wiring-MAX7219 LED Display
Először be kellene állítani a MAX7219-es működését.
Valami ilyesmi:

Valami ilyesmi:
Kód: Egész kijelölése
void setup ()
{
SPI.begin ();
sendByte (MAX7219_REG_SCANLIMIT, 3); // show 4 digits
sendByte (MAX7219_REG_DECODEMODE, 0xFF); // use digits (not bit patterns)
sendByte (MAX7219_REG_DISPLAYTEST, 0); // no display test
sendByte (MAX7219_REG_INTENSITY, 7); // character intensity: range: 0 to 15
sendByte (MAX7219_REG_SHUTDOWN, 1); // not in shutdown mode (ie. start it up)
} // end of setupRe: Wiring-MAX7219 LED Display
Elnézést a késői reakcióért, de utána néztem az eddigi szenvedéseimnek. Ez a segítség az Arduino-n tökéletesen fut, sőt itt az összes minta alkalmazás jó. Ez az alap tesztpanel. Erről már csak a táp és a port csatlakozókat dugom át a Wiringbe és folytatom a teszteket. Alkalmaztam a "LedControl" projectet, itt be végig tudtam paraméterezni a MAX7219-et, sor, oszlop fényerő. Szépen futott, de csak a szegmens teszt digitenként külön, külön és egyszerre. Karakter semmi, a melléklet az eddig működő részt tartalmazza.
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Re: Wiring-MAX7219 LED Display
Ne haragudj, de nem értem a programod logikáját!
Lehet nem figyeltem! Milyen kijelződ van?
7 szegmenses LED, Dekóder üzemmódban?
7 szegmenses LED, Szegmens üzemmódban?
8*8 LED Mátrix Pont üzemmódban?
Kellene 1 folyamat ábrát készítened.
Ezen a doksi alapján:
http://datasheets.maximintegrated.com/e ... AX7221.pdf
Lehet nem figyeltem! Milyen kijelződ van?
7 szegmenses LED, Dekóder üzemmódban?
7 szegmenses LED, Szegmens üzemmódban?
8*8 LED Mátrix Pont üzemmódban?
Kellene 1 folyamat ábrát készítened.
Ezen a doksi alapján:
http://datasheets.maximintegrated.com/e ... AX7221.pdf
A hozzászólást 1 alkalommal szerkesztették, utoljára kapu48 2013. február 14. csütörtök, 11:23-kor.
Re: Wiring-MAX7219 LED Display
Ez alib:
LedControl.cpp - A library for controling Leds with a MAX7219/MAX7221
PDF.: 13. oldal
Serially Interfaced, 8-Digit LED Display Drivers
Szerinti bekötést vezérli?
LedControl.cpp - A library for controling Leds with a MAX7219/MAX7221
PDF.: 13. oldal
Serially Interfaced, 8-Digit LED Display Drivers
Szerinti bekötést vezérli?
Re: Wiring-MAX7219 LED Display
Igen, ez az áramkör van megépítve, eltérés 6 digit, 0-5 ig. A vezérlés az Arduinoval tökéletesen ment. Most ezt a részét még egyszer este leellenőrzöm, mert rég volt.
Re: Wiring-MAX7219 LED Display
Viszont akkor át kellene írni a setup, és vezérlés részt.
1 Vezérlő, 6 Digit alkalmazására!
Mert ez most csak n * 8 Digitet kezelle.
És mért nem használod a MAX Hardweres 7szegmenses dekóder részét?
PDF.: Table 5. Code B Font
Ha nem kellenek különleges karakterek, egyszerűbb lenne az egész program.
1 Vezérlő, 6 Digit alkalmazására!
Mert ez most csak n * 8 Digitet kezelle.
És mért nem használod a MAX Hardweres 7szegmenses dekóder részét?
PDF.: Table 5. Code B Font
Ha nem kellenek különleges karakterek, egyszerűbb lenne az egész program.
Re: Wiring-MAX7219 LED Display
Csak szemléltető.
Bascom-ban 8 segmens, No Decode mode
A Wiringes változaton még dolgozni kel!

Bascom-ban 8 segmens, No Decode mode
Kód: Egész kijelölése
' Here is the basic code you need to interface.
'Max7219_7Szegmen.bas
'--- Alapadatok ---
'$regfile = "M128def.dat" 'Chip
'$crystal = 11059200
$regfile = "M64def.dat" 'Chip
'$crystal = 8000000 'Sebesség
$crystal = 16000000
'$regfile = "M16def.dat" 'Chip
'$crystal = 14745600 'Sebesség
'$regfile = "M644def.dat" 'Chip
'$crystal = 20000000
'$baud = 19200
$swstack = 64
$hwstack = 64
$framesize = 40
' 7-SEGMENT CHARACTER Tábla
' DPABCDEFG
Const Segm_0 = &B01111110 ' 0
Const Segm_1 = &B00110000 ' 1
Const Segm_2 = &B01101101 ' 2
Const Segm_3 = &B01111001 ' 3
Const Segm_4 = &B00110011 ' 4
Const Segm_5 = &B01011011 ' 5
Const Segm_6 = &B01011111 ' 6
Const Segm_7 = &B01110000 ' 7
Const Segm_8 = &B01111111 ' 8
Const Segm_9 = &B01111011 ' 9
Const Segm_min = &B00000001 ' -
Const Segm_e = &B01001111 ' E
Const Segm_h = &B00110111 ' H
Const Segm_l = &B00001110 ' L
Const Segm_p = &B01100111 ' P
Const Segm_blank = &B00000000 ' blank
Const Segm_dp = &B10000000 ' Dp
Const Segm_a = &B01110111 ' A
Const Segm_b = &B00011111 ' b
Const Segm_c = &B00001101 ' c
Const Segm_d = &B00111101 ' d
Const Segm_f = &B01000111 ' F
Const Segm_s = &B01011011 ' S
Const Segm_z = &B01101101 ' Z
Const Segm_o = &B00011101 ' o
Const Segm_o = &B00010101 ' n
Const Segm_o = &B00011100 ' u
Const Segm_cf = &B01100011 ' ° fok
Const Segm__ = &B00001000 ' _
Const Segm_c_ = &B01001110 ' (
Const Segm_zj = &B01111000 ' )
' DPABCDEFG
Const Segmens_a = &B01000000 ' a _
Const Segmens_b = &B00100000 ' b |
Const Segmens_c = &B00010000 ' c |
Const Segmens_g = &B00000001 ' g _
Const Segmens_f = &B00000010 ' f |
Const Segmens_e = &B00000100 ' e |
Const Segmens_d = &B00001000 ' d _
Const Segmens_dp = &B10000000 ' dp .
' Itt az alap kódot kell a felületen.
' Just bit bang a port ....you dont need the SPI interface.
' Csak egy kicsit bang kikötőben .... ön dont szükség van az SPI interface.
Dim Disp_num As Byte , Disp_data As Byte , I As Byte , J As Byte
Dim Char_on As Byte , Char_d As Byte , D_data(8) As Byte , Char As Byte , Ic As Byte
' Mega16: Max7_cs = PORTB.3, MOSI = PORTB.5, SCK = PORTB.7,
'Mega644 lábkiosztás
'Disp_en Alias Portb.3 ' chip-select for display driVer
'Ser_clk Alias Portb.7 ' clk for display driver
'Ser_data Alias Portb.5 ' data for display driver
'MEGAM644
'Config Portb.7 = Output 'SCK
'Config Portb.5 = Output 'MOSI
'Config Portb.3 = Output 'define here Pin for MAX7216 CS- of M16 = PortB.3
'Mega64 lábkiosztás
Disp_en Alias Portb.4 ' chip-select for display driVer
Ser_clk Alias Portb.1 ' clk for display driver
Ser_data Alias Portb.2 ' data for display driver
'MEGA128, és M64
Config Portb.1 = Output 'SCK
Config Portb.2 = Output 'MOSI
Config Portb.4 = Output ' define here Pin for MAX7216 CS- of M16 = PortB.3
Gosub Max7219_setup
' Print Számok 1 – 8.
Char_on = 8
D_data(1) = Segm_1
D_data(2) = Segm_2
D_data(3) = Segm_3
D_data(4) = Segm_4 + Segm_dp
D_data(5) = Segm_5
D_data(6) = Segm_6
D_data(7) = Segm_7
D_data(8) = Segm_8
Gosub Disp_writes
Do
Loop
End 'end program
'setup max7219 config. registers
Max7219_setup:
Disp_num = &H0C : Disp_data = 0 ' Shutdown On
Gosub Disp_write
' Disp_num = 9 : Disp_data = &B0011_1111 ' Decode "B" For 1st 6
' Disp_num = 9 : Disp_data = &B1111_1111 ' Decode "B" For 1st 8
Disp_num = 9 : Disp_data = &B0000_0000 ' No Decode mode
Gosub Disp_write
Disp_num = &H0A : Disp_data = &H0F ' Brightness Full
' Disp_num = &H0A : Disp_data = &H0A ' Brightness Közepes
Gosub Disp_write
Disp_num = &H0B : Disp_data = 7 ' # Digits 8
' Disp_num = &H0B : Disp_data = 5 ' # Digits 6
Gosub Disp_write
Disp_num = &H0F : Disp_data = 0 ' Test Off
Gosub Disp_write
Disp_num = &H0C : Disp_data = 1 ' Shutdown Off
Gosub Disp_write
For I = 1 To 8 'Charakter tömb törlése
D_data(i) = 0
Next I
Char_on = 8
Gosub Disp_writes 'Displaj törlése
Return
' Sends data to the Max7219 display driver
Disp_write:
Disable Interrupts
Reset Ser_data
Reset Ser_clk
Reset Disp_en
Shiftout Ser_data , Ser_clk , Disp_num , 1
Shiftout Ser_data , Ser_clk , Disp_data , 1
Set Disp_en
Enable Interrupts
Return
'Egész display sor irássa
Disp_writes:
' Disp_num = &H01
For I = 1 To Char_on
Disp_num = I
Disp_data = D_data(i) ' 1 első digit
Gosub Disp_write
' Disp_num = Disp_num + 1
Next I
Return
A hozzászólást 6 alkalommal szerkesztették, utoljára kapu48 2013. február 15. péntek, 9:49-kor.
Re: Wiring-MAX7219 LED Display
Milyen igazad van! Most estem haza, de átírom a setup-ot, és bőven elég az alap karakter készlet is, sőt csak a számok. Közben láttam a Bascom-os prg.-t ,de azt egy picit később nézem át.
Re: Wiring-MAX7219 LED Display
Decode mode-ban nem kel a CHR Tábla.
És jóval egyszerűbb a számok kirakása.
És jóval egyszerűbb a számok kirakása.
Re: Wiring-MAX7219 LED Display
Jó pár nap eltelt, ami hirtelen egyszerűnek tűnt, az egy nagy szenvedéssé vált. Menet közben kijelzőket is váltottam, szép nagyokra. Most azt kell mondanom, talán másoknak is, hogy a LED áram beállítás az egyik alap probléma volt. Természetesen az egyszerű megoldás sem ment a Wiring panelon. Ekkor elő vettem újra az Arduino-t, ez szintén megállt. Majd visszatettem a régi kicsi kijelzőket és láss csodát, ment szépen. most ott tartok, hogy újra a Wiring van az asztalon, 10Kohm (ISET) ellenállással, kicsi kijelzőkkel. Jelenleg azt csinálja amit akarok, de erre még alszom egyet és holnap prezentálom a prg.-t is. Most mellékesen: A Wiring 1.0 fordító kezeli az Arduinokat és még sok más panelt, de az Arduino Max7219teszt prg. a Wiringből fordítva sem fut az Arduinon.
Re: Wiring-MAX7219 LED Display
Biz Isten, nem értelek!
Ez az egyik legkönnyebben kezelhető eszköz!
Megfelelő setup után, csak kiküldöd a regiszter címét és a belevaló adatot.
Tovább semmi gond nincsen vele. A kijelző multiplexelését már elvégzi automatikusan.

Ez az egyik legkönnyebben kezelhető eszköz!
Megfelelő setup után, csak kiküldöd a regiszter címét és a belevaló adatot.
Tovább semmi gond nincsen vele. A kijelző multiplexelését már elvégzi automatikusan.
Re: Wiring-MAX7219 LED Display
Hát, akkor sem megy.... De inkább holnap folytassuk, mert most talán megy.
