Fórum témák
» Több friss téma |
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
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
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.
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...
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:
Részletek egy programból A hozzászólás módosítva: Csü, 5:16
Moderátor által szerkesztve
Megpróbáltam egy .pdf fájlt létrehozni remélem sikerrel.
Igazából nem lett jobb a minőség sajnos. Milyen programmal készült a rajz?
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.
A rajz a Dip Trace prorammal készült. (Minden korlátlan benne). De még egyszer megpróbáltam és most csatolom is.
De mi lenne a cél?
Kérjük, kód beillesztésénél használd a [ code] és [ /code] tag-eket!
Ha feltudnék tölteni egy használható elvi tervet a PIC program megírásához kellene a segítség!
A rajz továbbra is olvashatatlan. Mennyire megy a PIC programírás és/vagy valamilyen nyelven a programozás?
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.
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.
"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?
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.
Ne tűnj el, hanem kezdd az ismerkedést az elején. Segítünk abban is.
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.
Az előző Fórum(1) -ben a kijelző Dx kimenetek sorrendje nem megfelelő! Helyesen Fórum(2) .ben
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:
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.
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
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.
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.
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.
Idézet: 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.„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 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).
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. |
Bejelentkezés
Hirdetés |