Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   1213 / 1213
(#) tki válasza Pali79 hozzászólására (») Sze, 13:54 /
 
Ja, nem árt legalább megnézni, amit elküldünk.

Egyébként így, homályosan is 40 ki- és 40 bemenetnek tűnik jó sok címzéssel és chip select lábbal.

Erre mondtam-mondtuk, hogy a feladatot kell először elmesélni, mert első ránézésre ez az egész cucc shift-regiszter IC-kkel százszor egyszerűbben megoldható, ahhoz alig néhány láb kell. De lehetnek még követelmények, amik bonyolítják a megoldást.
A hozzászólás módosítva: Sze, 13:55
(#) otvenkilenc válasza Lali67 hozzászólására (») Sze, 19:11 /
 
Nekem az órarutin működik ezzel:
'DEFINE I2C_HOLD 1 'Adás ideje alatt az órajel mennyi
'ideig van alacsony szinten
'IDO
LCD_HOUR VAR BYTE
LCD_MIN VAR BYTE
LCD_SEC VAR BYTE
DUMY VAR BYTE


'I2C BUSZ Ricoh óra ic kiolvasás és írás
SDA VAR PORTC.4
SCL VAR PORTC.3

I2CRead SDA, SCL, $64, $0, [LCD_SEC, LCD_MIN, LCD_HOUR]

I2CWrite SDA, SCL, $64, $0, [LCD_SEC, LCD_MIN, LCD_HOUR] 'IDO BEALLITASA

INIT_RICOH:
I2CWrite SDA, SCL, $64, $F0, [$20] 'FORMATUM BEALLITASA
Return
(#) otvenkilenc válasza Máté Tibor Zoltán hozzászólására (») Sze, 19:15 /
 
A grafikus kijelzőben van egy karakterkészlet csak a karaktereket kell megcímezni. Ha egyéb más szimbólumot akarsz megjeleníteni, akkor azt leszoktam tölteni a PIC program indulásakor a kijelzőbe.
(#) tki válasza otvenkilenc hozzászólására (») Sze, 19:50 /
 
Amúgy kell valamire az a grafikus kijelző? Eddig csak egyetlen szám kiírásáról esett szó. Mellesleg a modul RS, R/W, E (vagy EN) lábai nagyon úgy néz ki, hogy be sincsenek kötve, ha már a D0..D7 lábak igen, és még a CS1 és CS2 is kellhet, ha van, de azt nem bírom kivenni a képen - az RST meg nem túl érdekes. Kicsit túl sok lába van és némileg szokatlan a sorrendjük - lehet, hogy nemcsak párhuzamos meghajtást tud. Majd újabb pár nap után talán kiderül, csak kinek van cérnája egy ilyen kommunikációhoz...
(#) otvenkilenc válasza tki hozzászólására (») Sze, 21:08 /
 
Részlet az LCD kezelésre és I2C re

A hétköznapi karakteres kijelzőt 4 bites módban használom. Ez a láb kiosztás de mindenki úgy használja ahogy neki éppen kedve van. Nálam ez a kiosztás:

  1. DEFINE  LCD_DREG        PORTD   ' adatregiszter port
  2. DEFINE  LCD_BITS        4               '       'hánybites az adat
  3. DEFINE  LCD_DBIT        4                       ' Melyik bitnél kezdődik az adat itt A4 nél
  4. DEFINE  LCD_RSREG       PORTD   ' melyik vezérlő regiszter
  5. DEFINE  LCD_RSBIT       1               ' Az RS bit a PORTD.1 kimenet kék lcd 4
  6. DEFINE  LCD_RWREG       PORTD
  7. DEFINE  LCD_RWBIT       2               ' RW bit a PORTD.2 piros lcd 5
  8. DEFINE  LCD_EREG        PORTD
  9. DEFINE  LCD_EBIT        3                       ' Engedélyező kimenet PORTD.3 zöld lcd 6
  10. DEFINE  LCD_LINES       2               ' Kétsoros LCD
  11.  
  12. DEFINE WATCHDOG TRUE
  13.  
  14. csipogo         VAR PORTD.0             '19  láb  buzzer  narancssárga
  15. RS                      VAR PORTD.1             '20. láb' lcd 4 láb kék
  16. '--------------------------------------------------------
  17. RW                      VAR PORTD.2             '21. láb  lcd 5 láb piros
  18. E                       VAR PORTD.3             '22. láb  lcd 6 láb zöld
  19. '                       VAR PORTC.4             '23. láb  SDI/SDA
  20. '                       VAR PORTC.5             '24. láb  SDO
  21. '                       VAR PORTC.6             '25. láb  TX
  22. '                       VAR PORTC.7             '26. láb  RX
  23. '                       VAR PORTD.4             '27. láb  LCD D4
  24. '                       VAR PORTD.5             '28. láb  LCD D5
  25. '                       VAR PORTD.6             '29. láb  LCD D6
  26. '                       VAR PORTD.7             '30  láb  LCD D7
  27. '                                                       '31 GND
  28. '                                                       '32 +
  29. ford_be         VAR PORTB.0             '33  láb INTERUPT
  30. balra                   VAR PORTB.1             '34  láb sárga        1 nyomógombok
  31. jobbra          VAR PORTB.2             '35  láb kék  2
  32. Elfogad         VAR PORTB.3             '36. láb zöld 3      
  33. Kilep                   VAR PORTB.4             '37. láb piros 4
  34. '                       VAR PORTB.5             '38. láb
  35. '                       VAR PORTB.6             '39. láb PGC
  36. '                       VAR PORTB.7             '40. láb PGD
  37.  
  38.  
  39. jobbra_ny         VAR BYTE
  40. balra_ny          VAR BYTE
  41. csillag   VAR BYTE
  42. algomb    VAR BYTE
  43.  
  44. jobbra_ny = 126 '  Ez a karakter ASCCII kódja
  45. balra_ny  = 127 '
  46. OK              = 33 ' !
  47. csillag = 42 '*
  48.  
  49. ----------  Letöltöm a hosszú ó  betü karakter mintáját. A motor indítási kérésnél ott van hogyan kell  formailag megadni hogy ez jelenjen meg kijelzőn: Valóban indít?  
  50.  
  51. LCDOut $02,$04,$00,$0E,$11,$11,$0E,$00 'ó (ASCII $05) ó
  52.  
  53. A grafikus annyiban bonyolultabb, hogy ki kell jelölnöd, hogy a felső vagy az alsó tömbbe írsz.
  54.  
  55.  
  56. 'Input  ford_be
  57. Input   jobbra
  58. Input   balra
  59. Input   elfogad
  60. Input   Kilep
  61. Output  PORTD.4
  62. Output  RS
  63. Output  RW
  64. Output  E
  65.  
  66.  
  67.  Itt töltöm le az ékezetes betüket az Lcd-b és
  68. motor_indit_kerdes:
  69.         inditani = 0
  70.         LCDOut $fe, 1                   ' Törli az  LCD -t
  71.         LCDOut $FE,$80," Val",$05,"ban indit?" ', DEC sz
  72.         LCDOut $FE,$C0," ",csillag," Igen ", ok," Nem"
  73.         sz=sz+1
  74.  
  75. Ricoh óra ic
  76. DEFINE  I2C_HOLD   1    ' Adás ideje alatt az óra jel mennyi
  77.                                         ' ideig van alacsony szinten
  78.  
  79. IDO
  80. LCD_HOUR        VAR     BYTE
  81. LCD_MIN         VAR     BYTE
  82. LCD_SEC         VAR     BYTE
  83.  
  84.  
  85. 'I2C BUSZ
  86. SDA             VAR     PORTC.4
  87. SCL             VAR     PORTC.3
  88.  
  89. I2CRead SDA, SCL, $64, $0, [LCD_SEC, LCD_MIN, LCD_HOUR]
  90.  
  91. INIT_RICOH:
  92.  I2CWrite SDA, SCL, $64, $F0, [$20]     'FORMATUM BEALLITASA
  93. Return
  94.  
  95. ---------------------
  96. De lehet használnia PIC belső I2C modulját is.  Az kicsit macerásabb.
  97. ' Regiszter jelző bitjeinek meghatározása
  98. SSPIF    VAR     PIR1.3          ' SSP (I2C) megszakitás flag
  99. BF         VAR     SSPSTAT.0       ' SSP (I2C) Buffer tele jelző bit
  100. R_W      VAR     SSPSTAT.2       ' SSP (I2C) Olvas/Ir
  101. D_A       VAR     SSPSTAT.5       ' SSP (I2C) Adat/Cím
  102. CKP       VAR     SSPCON.4        ' SSP (I2C) SCK órajel polaritás jelző bit
  103. WCOL    VAR     SSPCON.7        ' SSP (I2C) SSPBUF-be irást jelző bit
  104. SSPOV   VAR     SSPCON.6        ' SSP (I2C) Vétel túlcsordolás jelző
  105. SSPEN    VAR     SSPCON.5        ' SSP (I2C) I2C mód Engedélyezés
  106. ' ezzel a bittel engedélyezem a 18. és 23 láb I2C módban való működését
  107. ' ha nem teszem a lábak hagyományos I/O -ban múködnek!!!
  108. '
  109. 'Write 1,2                                      ' EEPROM 1, cellába 2 -t teszek eszközcím
  110. 'Read 1,EEADR                           ' Cím beolvasás
  111. 'I2Caddress = EEADR                     ' cím beállitás bekapcsoláskor
  112. ' kiosztáskor figyelni az azonos címekre!
  113.  
  114. '  I2C slave  mód és fizikai cím beállítás
  115. '  Az SSPADD regiszterbe került értéket hasonlitja össze a master-által
  116. '  elküldöttel. Az SSPADD -ban lévő érték a fizikai címe az eszköznek
  117. '  PIC 16F87X  Databook 73. oldal ha egyezik bebillenti a SSPSTAT 5,
  118. '  bitejét ez most egy D_A nevú bitváltozó
  119.  
  120.         SSPADD = I2Caddress             ' az eszközcime, ezt elküldheti egy másik ezsköz is
  121.                                         ' Kiirja EEPROM-ba újrainditás után az új cimen van
  122.                                         ' ez lehet egy ön RESET is! ha régi cím nem egyezik
  123.                                         ' a küldöttel! Egyik láb a MCRL - re kötve!
  124.         SSPCON2 = 0             ' általános hivás cim tiltva, erre nem válaszol
  125.         SSPCON = $36            ' I2C slave-hez 7 bites címzést használok
  126.                                         ' elég a 127 eszköz egy dróton bocs 2 -n
  127.         readcnt = 0             ' Byte számláló nullázás
  128.  
  129.  '**************************************************************************
  130.  
  131.          i2cslave:                      ' I2C slave szubrutin
  132.  
  133.                 SSPIF = 0       ' megszakítás jelzö bit törlés
  134.        IF R_W = 1 Then i2crd   ' ha R/W bit egy akkor olvasni akar a MASTER
  135.         IF BF = 0 Then i2cexit  ' ha a buffer üres (nincs adat) vissza
  136.        IF D_A = 1 Then i2cwr   ' Adat kérés jött és nem cím!!
  137.                                 ' Ha a puuferban lévő adat egyezik
  138.                                 ' a cimmel a következőt kell tenni
  139.  
  140.         IF SSPBUF != I2Caddress Then i2cexit    ' Törli a Címet a bufferből
  141.  
  142.                                         ' mert az jön először!!!
  143.         readcnt = 0             ' majd törli a  Byte számlálót mert a cím
  144.                                         ' BYTE eggyel növelte!
  145.         GoTo i2cexit
  146.  
  147. i2cwr:                                  ' I2C adat irás az eszközbe
  148.         datain = SSPBUF         ' Puffer tartalom változóba
  149.         GoTo i2cexit                    ' és vissza
  150.  
  151. i2crd:                                  ' I2C adat olvasás az eszközről
  152.         IF D_A = 0 Then         ' adat jött az offset értéke!!
  153.                 readcnt = 0             ' a Byte számláló törlése
  154.         EndIF
  155.                                                 ' adat küldés a BYTE számláló szerint
  156.         SSPBUF = dataout[readcnt]       ' Adat a Ki/Bemeneti bufferbe index szerint
  157.         CKP = 1                         ' SCL drót H szinten
  158.         readcnt = readcnt + 1           ' Byte számláló növelés
  159.        
  160.         'GoTo i2cexit                   '
  161. ' most csak 1 BYTE-ot küldünk mert a MASTER annyiszor fogja kérni ahány
  162. ' Byte kell neki ez igy nézki a MASTER program ban:
  163. ' I2CRead SDA,SCL,$02,[STR a\8] azaz 8 BYTE-t kér
  164. i2cexit:
  165.                 Return


Részletek egy programból
A hozzászólás módosítva: Csü, 5:16
Moderátor által szerkesztve
(#) Máté Tibor Zoltán válasza Pali79 hozzászólására (») Sze, 21:43 /
 
Megpróbáltam egy .pdf fájlt létrehozni remélem sikerrel.

w.pdf
    
(#) Pali79 válasza Máté Tibor Zoltán hozzászólására (») Sze, 21:47 /
 
Igazából nem lett jobb a minőség sajnos. Milyen programmal készült a rajz?
(#) otvenkilenc válasza Máté Tibor Zoltán hozzászólására (») Sze, 22:03 /
 
Mi a feladat? A PIC egy LCD- hajt meg. De jó volna tudni, hogy az a sok ic milyen tipusú. legalább az egyikét. Kettő 5 helyiértékes kijelző multiplex meghajtásának néz ki. A PIC belső számlálóit jelenití meg. Multiplex kijelző vezérlésnek látszik.
(#) Máté Tibor Zoltán válasza Pali79 hozzászólására (») Sze, 22:10 /
 
A rajz a Dip Trace prorammal készült. (Minden korlátlan benne). De még egyszer megpróbáltam és most csatolom is.

w.pdf
    
(#) otvenkilenc válasza Máté Tibor Zoltán hozzászólására (») Sze, 22:14 /
 
De mi lenne a cél?
(#) Moderátor hozzászólása otvenkilenc hozzászólására (») Csü, 5:17
 
Kérjük, kód beillesztésénél használd a [ code] és [ /code] tag-eket!
(#) Máté Tibor Zoltán válasza otvenkilenc hozzászólására (») Csü, 6:16 /
 
Ha feltudnék tölteni egy használható elvi tervet a PIC program megírásához kellene a segítség!
(#) Bakman válasza Máté Tibor Zoltán hozzászólására (») Csü, 7:02 /
 
A rajz továbbra is olvashatatlan. Mennyire megy a PIC programírás és/vagy valamilyen nyelven a programozás?
(#) Máté Tibor Zoltán válasza otvenkilenc hozzászólására (») Csü, 7:08 /
 
Szeretnék feltölteni egy használható elvi tervet! De addig is a "felső" IC csoport 74HC138 hex 3 -ról 8 kimenetre dekóder míg az "alsó" IC csoport 74HC151 8 -ról 1 kimenetre dekóder. A PIC-en belül kellene az egyik számlálót előre-hátra léptetni (0-39) és a számláló értékét HEX formátumban PORTC - re kitenni. Ezek címzik a fenti IC csoportokat. Különböző egyéb műveletekhez kellene egy másik PIC - en belüli előre-hátra léptethető számláló (0-7). Ezek pillanatnyi értékéhez lenne programozva a műveleti nyomógombok. A kimenetek PORTD jelennek meg. Ezt egy bus meghajtó küldi tovább. A nyomógombok PORTA bemeneten vannak. Mivel a PIC belső világát még nem teljesen értem, de rendelkezem PLC programozási képesítéssel ezért mindig így gondolkodom. A kijelzőn a (0-39) számláló értéke jelenne meg (1-40) formátumban valamint a visszatérő értékek. Kijelző meghajtó PORTB. A kijelzőn egyszerre lenne látható a 40 kimenet és a hozzá tartozó visszatérő érték.
(#) Pali79 válasza Máté Tibor Zoltán hozzászólására (») Csü, 7:18 /
 
Sajnos most sem lett jobb. Próbáld meg a lapméretet nagyobbra állítani. Most A4-es, legalább A2-re, hátha úgy jobb lesz.
(#) otvenkilenc válasza Máté Tibor Zoltán hozzászólására (») Csü, 9:18 /
 
"A kijelzőn a (0-39) számláló értéke jelenne meg (1-40) formátumban valamint a visszatérő értékek. " Ez HEX formában?


"A kijelzőn egyszerre lenne látható a 40 kimenet és a hozzá tartozó visszatérő érték."
Ha jól értem 40 kijelzőn illetve ponton szeretnéd megjeleniteni a PIC-ben lévő kettő számláló HEx értékét?
A visszatérő érték az honnan tér vissza?
(#) Máté Tibor Zoltán válasza Bakman hozzászólására (») Csü, 13:38 /
 
Tisztelt Bakman és többi segítőkész FÓRUM tag! úgy érzem hozzátok képest nagy a hátrányom ezért egy időre eltűnök, hogy majd jobban felkészülve visszatérhessek.
(#) Bakman válasza Máté Tibor Zoltán hozzászólására (») Csü, 16:13 /
 
Ne tűnj el, hanem kezdd az ismerkedést az elején. Segítünk abban is.
(#) Máté Tibor Zoltán válasza otvenkilenc hozzászólására (») Pé, 9:46 /
 
Elképzelésem!
128*64 Pixel kijelzőn 20 db 5*7 pixel karakterek 8 sorban. A karakterek között 1 pixel szünet
A sorok között 1 pixel szünet
kivéve a 4. és 5. sor ahol a sor között 2 pixel szünet

1. sor kimenetek tízes 40-21 Címe: A0 - A4 PIC TIME 1 hozza létre
2. sor kimenetek egyes 40-21 Címe: A0 - A4 PIC TIME 1 hozza létre
3. sor kimenetek 1-8 PIC TIME 2 hozza létre
4. sor a visszatérő adat értéke A megcímzett egység aktuális állapota Csak egy L vagy H
5. sor a visszatérő adat értéke A megcímzett egység aktuális állapota Csak egy L vagy H
6. sor kimenetek 1-8 PIC TIME 2 hozza létre
7. sor kimenet tízes 1-20 Címe: A0 - A4 PIC TIME 1 hozza létre
8. sor kimenetek egye 1-20 Címe: A0 - A4 PIC TIME 1 hozza létre

A nyomógombok (Rafi) 2 kimenetű prellmentes Nyomásra L
Minden PIC TIME számlálónak beállítva.

PORTA.0 Bemenet S0 (A nyomógombok egyik kimenete közösítve. (Ha szükséges!)
PORTA.1 Bemenet S1 PIC TIME 1 léptetés Előre (0-39) kijelzőn (1-40)
PORTA.2 Bemenet S2 PIC TIME 1 léptetés Hátra (39-0) kijelzőn (40-1)
PORTA.3 Bemenet S3 PIC TIME 2 léptetés Előre (0-7) kijelzőn (1-8)
PORTA.4 Bemenet S4 PIC TIME 2 léptetés Hátra (7-0) kijelzőn (8-1)
PORTA.5 Bemenet S5 (lejjebb létrehozott műveletek végrehajtása)


PORTB.0 Kimenet D0 (Kijelző D0)
PORTB.1 Kimenet D1 (Kijelző D1)
PORTB.2 Kimenet D2 (Kijelző D2)
PORTB.3 Kimenet D3 (Kijelző D3)
PORTB.4 Kimenet D4 (Kijelző D4)
PORTB.5 Kimenet D5 (Kijelző D5)
PORTB.6 Kimenet D6 (Kijelző D6)
PORTB.7 Kimenet D7 (Kijelző D7)

PORTC.0 Kimenet A0 (TIME 1
PORTC.1 Kimenet A1 (TIME 1
PORTC.2 Kimenet A2 (TIME 1
PORTC.3 Kimenet A3 (TIME 1
PORTC.4 Kimenet A4 (TIME 1
PORTC.5 Kimenet A5 (TIME 1
PORTC.6 (Jelenleg nem használt
PORTC.7 (Jelenleg nem használt

PORTD.0 Bemenet Px Visszatérő adat (L vagy H)
PORTD.1 Kimenet HA S5 (L) Egy impulzus (L)
PORTD.2 Kimenet HA S5 (L) ÉS T2 (0) Egy impulzus (L)
PORTD.3 Kimenet HA S5 (L) ÉS T2 (1) Egy impulzus (L)
PORTD.4 Kimenet HA S5 (L) ÉS T2 (2) Egy impulzus (L)
PORTD.5 Kimenet HA S5 (L) ÉS T2 (3) Egy impulzus (L)
PORTD.6 Kimenet HA S5 (L) ÉS T2 (4) VAGY HA S5 (L) ÉS T2 (5) Egy impulzus (L)
PORTD.7 Kimenet HA S5 (L) ÉS T2 (6) VAGY HA S5 (L) ÉS T2 (7) Egy impulzus (L)

PORTE.0 Kimenet Gondolom a kijelzőhöz kell! De hogyan?
PORTE.1 Kimenet Gondolom a kijelzőhöz kell! De hogyan?
PORTE.2 Kimenet Gondolom a kijelzőhöz kell! De hogyan?

Az impulzus hosszt a PIC TIME 0 állítaná be.
Ez az idő nem kritikus TTL és CMOS bemeneteket vezérel.
A karaktergenerátort a PIC valamelyik nem felejtő memóriája tartalmazná.
A pic PIC16F877A (Kezdőknek ajánlott elnyűhetetlensége és sok IO miatt!)
Dolgozom egy elfogadhatóan feltölthető elvi terven és, ha kész azonnal feltöltöm.
De addig is itt van egy. Hátha megfelelő.
Addig is minden köszönetem.

Fórun(1).pdf
    
(#) Máté Tibor Zoltán válasza Máté Tibor Zoltán hozzászólására (») Pé, 10:10 /
 
Az előző Fórum(1) -ben a kijelző Dx kimenetek sorrendje nem megfelelő! Helyesen Fórum(2) .ben

Fórum(2).pdf
    
(#) Máté Tibor Zoltán válasza Bakman hozzászólására (») Pé, 10:15 / 1
 
Köszönöm a biztatást a segítséget! Élve az ajánlattal lejjebb már fel is töltöttem amire gondolok:
(#) KoblogPerGyok válasza Máté Tibor Zoltán hozzászólására (») Pé, 12:31 /
 
Szia!

Írni szerettem volna neked privátban, hogy ne add fel, meg itt vagyunk, de megtették mások.

A projekt (bármi is legyen, mert nem tudom mit kell tennie pontosan) megoldhatónak tűnik. Azonban mi van meg eddig?

Csak mert:
Például a Portc 5 bitje, amit írtál nem elég a timer 1-ben lévő számláló (39-ig) megjeleníteni. Ha jól sejtem akkor 31-ig lehet elszámolni 5 biten binárisan. Szóval kell még egy bit. De csak átfutottam a dolgot, nem értem pontosan mit szeretnél. De amit láttam, abból kezdek sejteni dolgokat.

Ami a legfontosabb:
Ekkora projekthez már lehet jobb, ha szimulálással kezd neki az ember, de azt is úgy, hogy részegységekre bont mindent. A kód lehet nem is olyan nagy gond, de azért a nyomógomboknál és a számlálásoknál oda kell figyelni, ha interrupt-ok lesznek.

Szóval amit én javaslok neked:

MPLAB-X, és IPE. Én ebben írnám a programokat.
Proteus... Na, ha az ismeri ezt a PIC-et, akkor nyert ügyed van. Jobb, mint a deszka modell, mert ott kontakt hibák fognak megőrjíteni.
Logikai analizátor, ami ilyenkor sokkal jobb, mint az oszcilloszkóp, bár a modern digitális szkópok eleve tudnak ilyet.
De ha deszka modellel is csinálod, én elsőként a kijelzőnek állnék neki, mert szerintem az a mecerásabb, a többi meg majdnem sima ügy.

Ha lesz majd PIC+ kijelző, akkor az MCLR lábra még vissza kell térni kicsit.
(#) KoblogPerGyok válasza Máté Tibor Zoltán hozzászólására (») Pé, 13:19 /
 
Mert például, ha jól láttam a rajzot:

Bővebben: Link

Akkor ilyen kijelző lenne.

Na ez SPI-n is, és 4 biten is el tud ketyegni. Máris felszabadulna pár láb esetleg. SPI-hez mennyi láb kell pontosan? Clock, Data, és a /CS láb, ha egyirányú a kommunikáció.
De ekkor ha jól emlékszem a PIC lábai fixen vannak, azaz nem minden lába lehet a PIC-nek erre a célra. Bár a dsPIC128-nál volt pin mapping-re lehetőség, de nem kellene addig belemenni.

De ha más is a kijelző, azok is SPI-n, vagy I2C-n is tudnak kommunikálni szerintem.
A hozzászólás módosítva: Pé, 13:26
(#) KoblogPerGyok válasza Máté Tibor Zoltán hozzászólására (») Pé, 13:24 /
 
Elsőként ennek a felélesztésével foglalkoznék, mert SPI-n lehetne kommunikálni vele, logikai analizátorral sokat lehet tanulni belőle, a másik, amit nem értek, hogy ez tartalmaz sok karaktert eleve. Neked azok nem elegek? Szerintem igen.
(#) tki válasza Máté Tibor Zoltán hozzászólására (») Pé, 13:29 /
 
1. Tudni kell kommunikálni és elmondani a funkcióját az eszköznek - nem a hogyanokat, hanem a miérteket. Egy kezdőnél ez alapvető, mert előbb a rossz elképzeléseket kell kigyomlálni a tervekből.

2. Körvonalazódik, hogy a bemenetek valamilyen funkciója lesz a kimenetek állapota (pl. magas szintet kap egy bemenet, de csak akkor jelenik meg a kimeneten, ha jóváhagyja a kezelő a gombokkal vagy ilyesmi), de erről még mindig nem tudtunk meg többet. Nem mindegy, hogy milyen az a jel, mennyi idő van a mintavételekre stb.

3. Második PIC-re szinte biztos nem lesz szükség, így, ha jól értettem, hogy a PORTD-n az azzal való kommunikáció a cél, akkor a PORTD lábaira sem.

4. El kell dönteni, hogy logikai kapukat használ az ember vagy mikrokontrollert (PLC-s előélet, ugye) - pl. a nyomógombokhoz nem kell külső (ilyen) prellmentesítés és kapuk.

5. Aztán felhasznált IC-k kövületek mikrokontrolleres környezetben rengeteg címzéssel és engedélyező lábbal. Értem, hogy a 74HC138 alkalmazása azt jelenti, hogy valószínűleg elég egyszerre IC-nként egy láb kiválasztása a kimeneten, de mindent belevéve shift regiszterekkel akkor is egy általánosabb és egyszerűbb megoldást kapsz.

Ajánlom a CD4014 és CD4094 párost, vagy a 74HC165 és 74HC595-öt (ez nagyobb terhelhetőségű, LED-eket is meg tud hajtani), ill. a sok-sok kapcsolásból néhánynak a tanulmányozását, ami az interneten található velük.

6. A kijelzőre, ahogy sejthető volt, nem elég biteket küldeni a D0..D7-en keresztül, hanem parancsokat kell küldeni, amik tartalmazzák a biteket. Ehhez valóban több láb bekötése szükséges, de még nem néztem utána. Nem derült ki, hogy a feladathoz kell-e egyáltalán grafikus modul vagy elég egy karakteres is, vagy azért kell ezt a konkrét típust kell használni, mert már adott, nem eztán kell megvásárolni, hanem van otthon (bár a karakteres modulok általában nagyon olcsók). Azokban is lehet néhány karaktert definiálni, pl. szép nyilakat vagy ilyesmit, de csak nyolcat (ha jól emlékszem). Ha elég a karakteres, akkor érdemes a HD44780 kontroller használatának utánanézni, szinte mindegyik karakteres modulban az van. A "karaktergenerátort" pedig simán tartalmazni fogja az a kód, ami kiírja a karaktereket a kijelzőre, semmilyen EEPROM vagy más tároló nem szükséges hozzá (ahogy már n-szer elhangzott).

7. Ahogy elhangzott, az in-circuit programozás miatt a programozó lábakat kicsit másképpen kell bekötni és a PGD és PGC-re is oda kell figyelni - egyfelől, hogy a programozást ne zavarják meg a rákötött áramkörök, másfelől hogy a programozó lábaival se legyünk inkorrektek. Erről is sok infó létezik, alapprobléma PIC-eknél. Én már régen játszottam ezzel, de biztosan van, aki naprakész benne.

8. Egy ilyen programot ennyi tudással kevés esélyed van megírni, érdemes lenne előtte egyszerű alapkapcsolásokkal tanulni pár hónapot. A címszavakat össze tudjuk szedni, hogy mi kell mindehhez - és persze sok minden kész van már a világban, pl. az LCD vagy a shift regiszterek kezelése, úgyhogy többnyire csak össze kell ollózni meglevő kódokból, de valamennyire érteni kell nemcsak a problémákat, hanem általában a programozást is.
(#) Máté Tibor Zoltán válasza tki hozzászólására (») Pé, 20:30 /
 
Helló!
Egyik hozzászólásomban írtam van PLC programozói képesítésem ezért néha úgy gondolkodom. Azt hittem egyszerűbb mindent a PIC-en belül elintézni. Pl: A címet (A0,A1,A2,A3,A4,A5) a PIC belső itt TIME1 számlálója hozza létre amely a PIC-en belül valamilyen trükkel a rajzon látható módon vezérli a 40 kimenetet és a 40 bemenetet és még a kijelzőre is kiírja az értéket. (PLC -be már benne vannak a különböző átalakítók. Pl: OMRON)
Nem tudom a PIC is ugyanúgy dolgozik-e mint a PLC. A PLC -n a program állandóan fut és bemeneti változásokra reagál és hajtja végre. A kimenetet vagy egyből kiteszi a kimenetre vagy átmeneti tárolóba.
PIC nélkül hogyan oldom meg a kijelző meghajtását?
128*64 pixel amelyre vizszíntes soronként 20, függőleges soronként 8 karakter kerülne.
Ezek jelzik a 40 (4*20), (tízes, egyes) címeket valamint a 40 (2*20) művelet számot és a un. visszatérő adat (a megcímzett egység) állapotát. 40 (2*20)
A rajzban találtam egy hibát. Mivel a kijelzőn a címek értéke mindig látszik az aktuális kimenetet villogtatom.
A módosított rajzot most feltöltöm.

Fórum 3.pdf
    
(#) Bakman válasza Máté Tibor Zoltán hozzászólására (») Pé, 20:48 / 1
 
Idézet:
„Nem tudom a PIC is ugyanúgy dolgozik-e mint a PLC. A PLC -n a program állandóan fut és bemeneti változásokra reagál és hajtja végre. A kimenetet vagy egyből kiteszi a kimenetre vagy átmeneti tárolóba.”
A PIC-ben is állandóan fut a program. A PLC-ben a processzor többé-kevésbé úgy működik, mint a PIC-ben, de a PLC programozási módok miatt az apró lépések el vannak rejtve előled. PIC-kel is megoldható hasonló programozási mód, lásd Flowcode nevű program.

A hozzászólásaidból látszik, ez lenne az első projekt PIC-kel. Tedd alacsonyabbra a lécet mert csak csalódás lesz a vége, soha nem fogsz a végére jutni. A kapcsolási rajzban is vannak hibák, már első ránézésre is. Rég foglalkoztam ilyen kijelzővel de emlékeim szerint az RS, DSB, E lábakat is kötelező használni, különben nem fog működni a kijelző.

Legyen PIC16F877A ahogy eredetileg képzelted. Talán jobb is, hogy egy régebbi, egyszerűbb kontrollerrel kezdesz, ettől szinte csak összetettebbek vannak. Szerezz be egy próbapanelt (pl.: BB-102), 5 V-os tápegységet, összekötő vezetéket (RC-40-20/MM), LED-et, ellenállást (330 Ω). PIC programozó is kelleni fog. Ha ezek megvannak, készíts egy olyan programot, amivel villogtatsz egy LED-et (0.5 mp OFF, 0.5 mp ON).
(#) Pali79 válasza Máté Tibor Zoltán hozzászólására (») Szo, 7:53 /
 
Haladj fokozatosan, ahogyan már mások is javasolták. Majdnem napra pontosan 10 éve írtam ezt a cikket a grafikus kijelzőkről.
Bővebben: Link
Az ott leírtak simán átültethetőek a 877A-ra is. Próbáld meg ezt működésre bírni, először statikus kijelzéssel. Aztán jöhet egy gomb az egyik bemenetre, hogy lépeptni tudd a számlálót és az értékeket kiküldeni a kijelzőre. És így tovább.
Következő: »»   1213 / 1213
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem