Wiring-MAX7219 LED Display

Avatar
octopus
Újonc
Újonc
Hozzászólások: 11
Csatlakozott: 2011. január 5. szerda, 7:00

Wiring-MAX7219 LED Display

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

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!
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Wiring-MAX7219 LED Display

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

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:

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
Avatar
octopus
Újonc
Újonc
Hozzászólások: 11
Csatlakozott: 2011. január 5. szerda, 7:00

Re: Wiring-MAX7219 LED Display

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

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.

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);
}
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!
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Wiring-MAX7219 LED Display

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

Először be kellene állítani a MAX7219-es működését.

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 setup
:roll:
Avatar
octopus
Újonc
Újonc
Hozzászólások: 11
Csatlakozott: 2011. január 5. szerda, 7:00

Re: Wiring-MAX7219 LED Display

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

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.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Wiring-MAX7219 LED Display

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

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
A hozzászólást 1 alkalommal szerkesztették, utoljára kapu48 2013. február 14. csütörtök, 11:23-kor.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Wiring-MAX7219 LED Display

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

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?
Avatar
octopus
Újonc
Újonc
Hozzászólások: 11
Csatlakozott: 2011. január 5. szerda, 7:00

Re: Wiring-MAX7219 LED Display

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

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.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Wiring-MAX7219 LED Display

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

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.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Wiring-MAX7219 LED Display

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

Csak szemléltető.

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 Wiringes változaton még dolgozni kel!
:wink:
A hozzászólást 6 alkalommal szerkesztették, utoljára kapu48 2013. február 15. péntek, 9:49-kor.
Avatar
octopus
Újonc
Újonc
Hozzászólások: 11
Csatlakozott: 2011. január 5. szerda, 7:00

Re: Wiring-MAX7219 LED Display

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

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.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Wiring-MAX7219 LED Display

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

Decode mode-ban nem kel a CHR Tábla.

És jóval egyszerűbb a számok kirakása.
Avatar
octopus
Újonc
Újonc
Hozzászólások: 11
Csatlakozott: 2011. január 5. szerda, 7:00

Re: Wiring-MAX7219 LED Display

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

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.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Wiring-MAX7219 LED Display

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

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.

:o
Avatar
octopus
Újonc
Újonc
Hozzászólások: 11
Csatlakozott: 2011. január 5. szerda, 7:00

Re: Wiring-MAX7219 LED Display

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

Hát, akkor sem megy.... De inkább holnap folytassuk, mert most talán megy.
Válasz küldése