Fórum témák

» Több friss téma
Fórum » LCD kijelző vezérlése, életre keltése
Lapozás: OK   7 / 72
(#) zenetom válasza brato hozzászólására (») Aug 25, 2009 /
 
Na valahogy sikerült az inicializálás
Most már 2 részben fogadja el az ASCII kódokat és jól is jeleníti meg
(#) zenetom válasza zenetom hozzászólására (») Aug 26, 2009 /
 
Csakhogy lássátok nem csak szövegelek...

Kép(4).jpg
    
(#) Zuzmo_farok hozzászólása Aug 27, 2009 /
 
sziasztok.
nagyjából sikerült szóra bírni ezt a kijelzőt.
sajnos azonban csak függőleges csíkokat tudtam vele rajzolni, atmega32-vel kezeltem 8mhz-es belső oszcillátorral.
szerintetek elképzelhető hogy ennek az IC-nek túl kevés 8mhz-n az avr?
gondoltam rá hogy egy arm-al kipróbálom 40Mhz-s órajellel, hátha, csak még nem épült meg a panelja technikai okok miatt.
lehet az a baja, hogy van alsó órajel határa..1.08MHz a pixel shifteléshez. amit 8mhz-n nem tud az avr.
mást nem tudok kitalálni..
4 napot végig szívtam vele, hogy tudjam kezelni, erre semmi csak csíkok.
Ha a kezemmel közel vagyok, akkor tudok kockákat is rajzolni, amit furcsállok nagyon. mhz-s jelet csak nem tud leszedni rólam..
ha valakinek van egy jó progija hozzá szívesen venném áttanulmányozásra .
köszi!
(#) pipi válasza Zuzmo_farok hozzászólására (») Aug 27, 2009 /
 
Hali!
az ilyen kijelzőknél a min/max időzítéseket be kell tartani
valami hasonló vezérlésű van a http://www.mikrocontroller.net/topic/25099-en
adatlap szerint esetleg kéne mellé egy hd61830 vezérlő, ezt már egyszerűbb kezelni, találsz rá progikat
(#) zenetom hozzászólása Aug 30, 2009 /
 
Bár ez már jobban programozás kérdése, de hátha tud valaki segíteni.
Szóval egy programot írok LPT portra egy LCD kijelzőnek, aminek 4 adatbite van, tehát ha beleszámoljuk az Enable és R/S lábat, akkor is elfér az LPT 8 adatbuszán. Viszont ha az Enable lábat is az adatbuszon viszem, akkor nem tudom hogy jelenik meg a kimeneteten a kiküldött sorozat, tehát pl az LPT-n ha a D0...D3-ig az adatokat küldöm, D4-en az Enable, D5-ön pedig az R/S van akkor hogyan működne ez az egész.
Vagy pedig a 8 adatbitet csak adatok átvitelére használnám, és az enable ill. a R/S lábnak a control biteken (abból 4 van az LPT porton) küldeném az utasítást, tehát először kiküldené az adatot az adatbiteken, majd az LCD-n a beolvasáshoz a control biten küldeném a jelet.
Remélem érthető voltam.
(#) bbalazs_ válasza zenetom hozzászólására (») Aug 30, 2009 /
 
Maszkolas a titok nyitja.
Vagy hasznalsz siman egy memoriapuffert, oda maszkolsz vagy ott billegteted a bitet, aztan azt a pufferbyte-ot irod ki egy az egyben a portra.

De ha jobban megnezed az LPT portot, talalsz ott meg kimeneti biteket. Ketsegkivul az elerhetoseguk bonyolultabb, de ilyenkor neked nem 'zavar be' az adatbit.
(#) zenetom válasza bbalazs_ hozzászólására (») Aug 30, 2009 /
 
Idézet:
„De ha jobban megnezed az LPT portot, talalsz ott meg kimeneti biteket”
vagyis a control bitek...nem?
(#) Stadi válasza zenetom hozzászólására (») Aug 30, 2009 /
 
Mind a vezérlő, mind az adat porton keresztül megoldható a feladat. Egyikre sem tudsz csak egy bitet kiírni. Az előzőleg kiírt byte-ot kell tárolnod (esetleg mindig visszaolvasgatni, de az bonyolult), abban átállítani a megfelelő bitet, majd a megváltoztatott byte-ot kiírod a megfelelő portra.
(#) zenetom válasza Stadi hozzászólására (») Aug 30, 2009 /
 
Úgy döntöttem hogy az adat biteken (tehát a 8 bit-ből csak az alsó 4-et használom, a többi 0 lesz), ott adom ki az adat/parancs-kódokat és a control bit-ből az egyik az Enable lábra megy, a másik a R/S-re. Viszont így talán a sebesség kisebb lesz, mert végülis két portot használok (a control biteknek a címe $37a).
(#) Stadi válasza zenetom hozzászólására (») Aug 30, 2009 /
 
Idézet:
„Viszont így talán a sebesség kisebb lesz”


Valóban eggyel több regiszter írás műveletet kell végrehajtani, de lehet, hogy még így is be kell majd iktatnod néhány ms várakozást (az "Enable alacsonyra" művelet elé, és/vagy két komplett írási ciklus közé). Nekem legalábbis az volt a tapasztalatom DOS alatt, 8 bites kommunikációval, hogy már a PIII gépek LPT portja is túl gyors(an írható), és kimaradnak/nem törlődnek egyes karakterek, ha késleltetés nélkül vezérlem a kijelzőt.
(#) zenetom válasza Stadi hozzászólására (») Aug 30, 2009 /
 
Na a végleges terv: az 5. adatbit a Register Select (RS), az első négy az adatokért felelős, a control bitek elsője az Enable. Egy régebbi programommal, amivel egyesével lehet pipálgatni a kimeneteket, sikerül minden rajta, inicializálás, írás is, de most egyelőre szenvedek programozás terén, remélem csak elírtam valamit
(#) Stadi válasza zenetom hozzászólására (») Aug 30, 2009 /
 
Milyen nyelven próbálkozol? Esetleg lassítsd le a vezérlést úgy, hogy multiméterrel vagy LEDdel is meg tudd szemlélni a kimeneteket (utóbbi esetben vigyázva arra, hogy ne terheld túl a portot). A parancsregiszter első (=0.) bitje invertál, azaz ide 0-t írva jelenik meg a magas szint a csatlakozón.
(#) zenetom válasza Stadi hozzászólására (») Aug 30, 2009 /
 
Delphi 7-ben programozok.
Régebben nagyájbból valahogy sikerült megállapítani hogy melyik bithez mit kell küldeni, bár lehet hogy csak nállam vagy ennyire össze-vissza.
Tehát a control bitek:

---------------------bin dec
egyiken sincs: 1011 11

0-ás kimenet: 1010 10
1-es kimenet: 1001 9
2-es kimenet: 1111 15
3-es kimenet: 0011 3

mindegyiken: 0100 4
(#) Stadi válasza zenetom hozzászólására (») Aug 30, 2009 /
 
És most mi nem megy? Azon kívül, hogy a kijelző... Lassítsd le a vezérlést és mérj ki mindent. Pl. iktass be ShowMessage parancsokat vagy ha nagyon vágod a Delphit, akkor használhatod a debuggerét lépésenkénti végrehajtással. Az oldalamon van egy ábra, ami segít láttatni, melyik bit hol és hogy "jön ki". Bár nem tudom, pontosan hol akadtál meg.
(#) zenetom válasza Stadi hozzászólására (») Aug 30, 2009 /
 
A szokásos parajelenség...
Szóval inicialaizálni kéne a kijelzőt (7db kódot kiküldeni egymás után) amiket egy konstans tömbből küldenék ki for ciklussal, de valamiért nem jó, pedig minden egyes kiküldés előtt beraktam egy showmessage-t is (végülis csak eggyet kell ugye mert ciklusba van )
De ha én magam egyesével szépen beírom a decimális számot és úgy küldöm ki akkor működik. Valahol a ciklusban lehet a hiba, dehát ez olyan egyszerű, ebben nem lehet hiba. Hát nekem ez magas, bugos a delphi
(#) zenetom válasza zenetom hozzászólására (») Aug 30, 2009 /
 
Meglepő fordulat: valóban kell egy kis sleep...
szerk.: Meglepő fordulat 2: így se jó
(#) Stadi válasza zenetom hozzászólására (») Aug 31, 2009 /
 
Csatolok egy fájlt. Igaz, Pascalban írtam (úgy 3 éve) és 8-bites vezérléssel, tehát 1:1-ben nem tudod felhasználni, de a lényeg látszik. Most, hogy kipróbáltam, a resetlcd meghívása utáni késleltetést meg kellett növelnem, mert az első sornak kb. a felét lehagyta (6xx MHz-es PIII, talán 133-as FSBs gépen). Tehát oda kell figyelni az időzítésekre. (Nem véletlenül vannak a program elejére kigyűjtve konstansba...)

Tudom, hogy meg tudod csinálni.

LCD.PAS
    
(#) zenetom válasza Stadi hozzászólására (») Aug 31, 2009 /
 
Ha minden egyes kiküldött jel után 100 milliszekundomot várok, akkor működnie kéne nem?
(#) Stadi válasza zenetom hozzászólására (») Aug 31, 2009 /
 
Nem értem, minek ennyire sietni. (=100ms ) Mondtam, hogy lassítsd le a kommunikációt annyira, hogy ki tudd mérni. Akár ShowMessage minden port írás után. Biztos meg fogod találni a bibit.
(#) zenetom válasza Stadi hozzászólására (») Aug 31, 2009 /
 
Feladom
Minden egyes kiküldött akármi előtt shomessage, aztán mérés multival a lábakat, aztán showmessage leokézása, aztán következő adat beírása aztán kiküldése, persze közbe showmessage + mérsések. De egyenként állítom be hogy melyik kimenten legyen jel (mint ha manuálisan, Topi cikkei között lévő kapcsolással csinálnám) akkor meg jó. Régen csinált már egy program nekem ekkora fejtörést.
(#) Stadi válasza zenetom hozzászólására (») Aug 31, 2009 /
 
Most ezt nem értem. Ha ugyanazt méred minden lábon, mint amit "kézi vezérlésnél" (ugyanazt méred?), akkor tegyél be minden port írás után 1000ms késleltetést.
(#) zenetom válasza Stadi hozzászólására (») Aug 31, 2009 /
 
Nem elég a showmessage? Az addig szünetelteti amíg le nem okézom, addig meg a multival mértem. Most képzeld el, egy adat kiküldéséhez 3 showmessage és minden showmessage után méregetés minden lábnál
(#) Stadi válasza zenetom hozzászólására (») Aug 31, 2009 /
 
Az 1000ms-t arra írtam, mikor nincs ShowMessage. Egyébként igen, ha egy adat 3 portírás, akkor annyi ShowMessage is kell és ugyanennyi mérés. Valami nagyon egyszerű dolog nem klappol Nálad, és azt csak ilyen szöszmötöléssel fogod tudni kimérni. De ha ezzel kezdted volna, mikor először mondtam, már rég kész lennéll szvsz...
(#) zenetom válasza Stadi hozzászólására (») Aug 31, 2009 /
 
nekem itt valami nagyon gyanús. Inicializálás után ha egy karaktert akarok kiirni akkor először valami furcsa alakzatot ír ki aztán már kiirja a jó betűt
(#) Stadi válasza zenetom hozzászólására (») Aug 31, 2009 /
 
Inicializálás után mennyit vársz? Van közötte ShowMessage? Hány byte-ot kell kiírni az inicializáláshoz? Általában kell valahol hosszabb ideig várni. Ha 1 byte-os az inicializálás, akkor utána. Ha több byte-os, akkor az adatlap szerint kellene eljárni. Ha meg mindig ugyanazt írja ki először, akkor meg lehet keresni, mi a kódja és abból is lehet következtetni a hibára.
(#) zenetom válasza Stadi hozzászólására (») Aug 31, 2009 /
 
érdekes módon 7*4 bitet küldök ki és azt elfogadta manuálisan, de valahol itt a hiba, mintha hiányozna valami. Még nézegetem a programot hátha rájövök.
(#) Stadi válasza zenetom hozzászólására (») Aug 31, 2009 /
 
Szerintem ne a programot nézegesd, hanem ami kijön belőle. És ha fáradt vagy, inkább folytasd alvás után, friss fejjel. Nehogy füstöljön a kijelző. Vki már járt így... :no:
(#) zenetom válasza Stadi hozzászólására (») Aug 31, 2009 /
 
De nem birom abbahagyni. Lehet reggelig itt ülök.
(#) Stadi válasza zenetom hozzászólására (») Aug 31, 2009 /
 
Melyik reggelig? Bocs, de ez nagyon magas labda volt, nem tudtam kihagyni...
(#) zenetom válasza Stadi hozzászólására (») Aug 31, 2009 1 /
 
Sajnos csak holnapig, vagyis máig Kedden suli
Következő: »»   7 / 72
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