Fórum témák

» Több friss téma
Fórum » PIC vs. T6963C alapú grafikus LCD
Lapozás: OK   1 / 3
(#) Tomee hozzászólása Nov 13, 2005 /
 
Hali minden kedves olvasónak!

PIC mikrovezérlővel (16F877) szeretnék meghajtani egy T6963C chip-pel szerelt 240 x 128 karakteres grafikus LCD-t.

Kérdésem az lenne, hogy valaki csinált-e már valami hasonló projectet?
Hogyan kell felkonfigurálni az LCD-t, hogy sima karakteres üzemmódban fusson és bármiféle karaktereket tudjak ráírni?

Van három doksim, amik alapján próbálkozom, de sajnos nem igazán sikerül.

doksi_1

doksi_2

doksi_3

A legutóbbi alapján konfiguráltam fel és nem jó. Úgy néz ki, mintha a kijelzőnek nem lenne ideje dolgozni, de nem tudom.
És a status vizsgálat után azt adja vissza, hogy a kijelző ki van kapcsolva. (STA7=0)
(Szerintem a három közül ez a legjobb.)

Ilyen a kijelzőm.

Egyébként asm-ben írom a kódot.

Ha valaki tudna segíteni, azt nagyon megköszönném.
(#) Tomee válasza Tomee hozzászólására (») Nov 13, 2005 /
 
Dupla hozzászólás volt...
(#) Norberto válasza Tomee hozzászólására (») Nov 13, 2005 /
 
Hali!

Én PONT ugyanebben a gondban vagyok, nehéz ezeket a nagy kijelzőket működésre bírni. Én egylőre még nem is próbálkoztam vele...(nekem is T6963-ra épülő 240x128-as kijelzőm van)

Te egyébként használsz szoftveres késleltetést a programodban, vagy csak írod egymás után kifelé az utasításokat? Mert annyira rájöttem, hogy átlagosan 80msec az az idő, hogy az adatsínek rájöjjenek, hogy nekik szól valaki. Nameg ott van a C/D (parancs/adat) mód is...annak is megfelelően be kell állnia, hogy tudd konfigurálni.
(#) Tomee válasza Norberto hozzászólására (») Nov 13, 2005 /
 
HI!

Most, hogy mondod lehet, hogy kéne késleltetéseket használni, mivel, ha MPLAB ICD-vel debug-olok és lépésről-lépésre hajtom végre a program sorokat, akkor a status regiszterből döntő többséggel jó adatokat kapok vissza. (STA7=1)

Mindjárt meg is próbálkozok valami nagyobb késleltetéseket beállítani!
(#) Tomee válasza Tomee hozzászólására (») Nov 13, 2005 /
 
Raktam bele egy kis időt.

Így már sokkal jobb. A progit ahányszor lefuttatom mindig ugyan azt az eredményt kapom, nagy valószínűséggel késleltetés szükséges.
(#) Norberto válasza Tomee hozzászólására (») Nov 13, 2005 /
 
Az nagy baj lenne, ha elkérném a forráskódot?

Nem lemásolni akarom, csak próbálkozni, átnézni, kb. hogyan is lehetne működésre bírni. Én még ugyanis nem kezdtem el megírni a programot hozzá, pár napja csak az írott dokumentációival vagyok elfoglalva.
(#) Tomee válasza Norberto hozzászólására (») Nov 13, 2005 /
 
Persze, odaadom, illetve felrakom az oldalamra még egy pár másik grafikus LCD-s forráskóddal együtt.

A pontos linket majd ide kiírom.
(#) Norberto válasza Tomee hozzászólására (») Nov 13, 2005 /
 
Köszi szépen
(#) Tomee válasza Tomee hozzászólására (») Nov 13, 2005 /
 
egyébként lemásolhatod. Úgy se mükődik Majd ha kész lesz az alap minta kod akkor úgy is kint lesz. Ehhez a vezérlőhőz egyébként is kevés kód van.
(#) Tomee válasza Tomee hozzászólására (») Nov 13, 2005 /
 
(#) Norberto válasza Tomee hozzászólására (») Nov 14, 2005 /
 
Hello!

Köszi szépen, hogy megosztottad ezeket a dolgokat, nameg a programodat is

Ezer köszönet...

Egyébként nem tudom, hogy kötelező-e a programok elejére mindig odaírni az:

org 0
goto main

org 4

main
START
...

"bekezdést", de a te programod elején nem találtam ilyet, más programoknál viszont láttam ezt a megoldást. Lehet, hogy ezért nem működik a programod?
(#) Tomee válasza Norberto hozzászólására (») Nov 14, 2005 /
 
Ott van az!
Csak egy makro-ban van, amit nem csatoltam.
Itt csak a boot cimkével helyetesítettem.
(#) Norberto válasza Tomee hozzászólására (») Nov 17, 2005 /
 
Háj!

Ma írtam meg hozzá hajnal 4-kor az első programomat...reméljük, működni fog
(#) Norberto válasza Norberto hozzászólására (») Nov 17, 2005 /
 
Elsőre így nem szeretne nekem se működni

Húúú, nagyon nehéz ezt a gagyit működésre bírni!
(#) Tomee válasza Norberto hozzászólására (») Nov 17, 2005 /
 
Milyen tipusú kijelződ van?
Szerintem próbáld meg EXOR vagy AND modban a kijelzést.
(#) Norberto válasza Tomee hozzászólására (») Nov 17, 2005 /
 
Powertip PG-240128BRS-ATA-B

240x128-as, zöld háttérrel, sötétkék pixelekkel.
(#) Tomee válasza Tomee hozzászólására (») Nov 21, 2005 /
 
Itt van még egy oldal, amin T6963c vezérlő chip-re épült grafikus LCD-t hajtanak meg 16F877-tel. Forráskód is van, hex, meg asm is, de nekem ezek se mennek.
Hátha valakinek?
(#) Norberto válasza Tomee hozzászólására (») Nov 22, 2005 /
 
Köszi szépen a linkeket

Nekem sikerült működésre bírni az LCD-met, de igen egyedi módon

DIP kapcsolókat építettem be, és minden egyes bitet én állítottam be rajta, és én engedélyeztem az írást, stb. Érdekes és lassú megoldás, de így legalább elindult a kijelzés

Egy nagy gondom viszont van...nem találtam se leírásban, se sehol, hogy hogyan lehet ezeken a modulokon komplett képernyőtörlést csinálni...mert mikor bekapcsolom a képernyőt egy megfelelő paranccsal (talán 9Fh, de ez nem lényeg), akkor olyan kuszaság van a képernyőn, mintha rászórtak volna mákot a kijelzőre...abszolut fel van borulva a belső egyensúlya

És ezt kellene valahogy megoldani!

Gondoltam arra, hogy nem elég hosszú a reset...de ha nem resetelne rendesen az LCD, akkor ha kiolvasom az STA0-t és STA1-et, akkor nem szabadna 1-est visszaadniuk, tehát hogy készen áll a műveletekre...

...foggalmam sincs, mit csináljak :no:
(#) Tomee válasza Norberto hozzászólására (») Nov 23, 2005 /
 
Gratula!

A legtöbb kódban ezt úgy csinálják, hogy a kijelzőt tele irják null karakterrel.
Ez mikrovezérlőben megvalósitva relativ egyszerű valami számlálót alkalmazva megoldható.
Szinte mindeggyik kódban amit én néztem volt clrscr.
Milyen parancsokkal konfiguráltad fel?
Tudsz rá karaktereket is irni CG-ROM-ból?
És milyen parancsal kapcsoltad be a kijelzőt?
Azt javaslod, hogy legalább 1sec időzitéssel kezdjem el én is és ha majd mükődik akkor csökkentsem az időt?
(#) Norberto válasza Tomee hozzászólására (») Nov 23, 2005 /
 
Igen, jogos megoldás ez a nullával teleírás, de akkoris...sokkal szebb lenne, ha lenne mondjuk direkt egy ilyen utasítás, hogy akkor most "törölj mindent".

Igen, javaslom azt az 1sec-es késleltetést, de szerintem tutira nem azzal lesz gond, hisz egy átlagos PIC 4MHz-en hajtva 1usec-ig dolgozik, ami alatt bármilyen utasítást végre kellene tudni hajtania, mert ahogy néztem, 80-100 nanosec-ok vannak az adatlapjain.

Először meg kell adni a kijelzés módját, tehát AND, OR, vagy EXOR illetve csak CG-ROM, vagy CG-RAM is legyen.

Aztán két bájtnyi adat jön, ezeket te állítod be (pl. mind a kettő 00h), aztán egy paranccsal megírod neki, hogy ez lesz a Graphic Home addres.

Következő lépés a Graphic Area Set beállítása ugyancsak 2 bájtnyi adattal. Ennek a legmegfelelőbb értékét megtalálod az utasításlistában, vagy ki is számolhatod akár

Ugyanez, csak a Text home address-re, és Text Area-ra vonatkoztatva.

(Lényeg, hogy ne legyen a Text Home Addres és Graphic Home Address ugyanazon a címen!)

Aztán most következik egy lényeges lépés: Address pointer beállítása!

Ezt célszerű első próbálkozásnál a Text Home Address-el megegyező címre beállítani!

Aztán pedig jöhetnek az első betűk :yes:
Betűkód >> aztán C0h parancs (vagyis Data Write Auto Increment)...ez azt jelenti, hogy beírja a memóriájába az első betűt, aztán a következő memóriacellára áll, hogy újból tudj neki egy betűkódot adni.

És végül a legfontosabb lépés:

Bekapcsolod a kijelzőt a 9Ch paranccsal!

Ez persze más is lehet, de ebben a formában most azt jelenti, hogy be van kapcsolva mind a grafikus rész, mind a szöveges rész is. Valamint nem fog látszódni a kurzor, és nem is fog villogni a kurzor helye.

Lényeg, hogy minden egyes adatbeírás és parancsbeírás után aktívvá kell tenni az írást és a Chip Enable vezérlőjeleket.

Tehát a Chip Enable-t nem csak egyszer kell aktiválni a program elején, hanem minden egyes adat vagy parancs adatvezetékre kerülése után aktiválni kell, aztán deaktiválni...aztán megint ráteszel valami parancsot az adatvezetékre, aztán megint benyomatod a CE-t és az írást.

Egyébként először én is azzal rontottam el, hogy azt hittem, a Chip Enable az egész LCD-t vezérli, közben pedig nem is.
Tehát nem csak program elején kell beállítani aktívba, hanem azzal is szórakozni kell a program futása közben; magyarul ki-be kapcsolgatni, mint az írás, vagy olvasás jelet.
(#) Norberto válasza Norberto hozzászólására (») Nov 23, 2005 /
 
Igen és még egy dolog lemaradt (tudtam, hogy valamit kihagyok)

Tehát igen, tudok írni CG-ROM-ból karaktereket, de az a baj, hogy ez is elég furcsa módon történik. Nem egymás utáni helyre írja valamiért a karaktereket, hanem úgy néztem, hogy 2-2 karaktert kihagy minden egyes általam írt betű után. Ezt is meg kell még oldanom
Biztos a Text area set-nél lesz valami gubanc
(#) Tomee válasza Norberto hozzászólására (») Nov 24, 2005 /
 
Köszi.
Nemsokára ki is próbálom aztán majd megosztom a tapasztalataimat.
A chip enable-t már ismertem a karakteres kijelzők világából is. Nekem csak ezekkel a cimekkel meg adatokkal volt a bajom.
Remélem most már tudok rá irni.
(#) Norberto válasza Tomee hozzászólására (») Nov 24, 2005 /
 
Közben ma is az előbb próbálkoztam vele, és arra jutottam, hogy hülyeséget írtam fent egy alkalommal

Tehát a CE lábat nem kell mocorgatni...egyszer beállítod aktívba az elején, aztán úgy maradhat míg ki nem kapcsolod.

Ezt is csak most próbáltam ki először, és így is működik.

Úgy csinálom, hogy előbb beadom neki, hogy parancs vagy adat jön-e...aztán ráteszem a 8 bites sínre az adatokat, és végül rányomom, hogy írás. És akkor csinál valamit (amire kértem).

De arra sajnos még mindig nem jöttem rá, hogy miért nem egymás után írja a karaktereket, miért hagy ki helyet az irományaim között :no::no::no:
(#) Tomee válasza Norberto hozzászólására (») Nov 25, 2005 /
 
szerintem szükséges a CE!

2.1 Write data - The data to be written should be set on D0 - 7 and
C/D taken low,
/WR taken low (/RD should be high)
/CE pulsed low for greater than 80ns

Lehet, hogy nélküle is mükődik, de nem igazán hiszek bennne.
(#) Tomee válasza Tomee hozzászólására (») Nov 26, 2005 /
 
Na most már én is kiprobáltam amit mondtál!
Igy se sokkal job a helyzet. :no:
De legalább már a kijelző be van kapcsolva.

igy álitom be az lcd-t:

1, RST
2, RV=1 - black char.
FS=1 - 6x8
3, 80h - "OR" mode, "CG-ROM" mode stb..
4, 00h
00h
42h - graphic home address

5, 28h
00h
43h - graphic are

6, 20h
00h
40h - text home address

7, 28h
00h
41h - text area

8, 9Fh - display mode, minden bekapcsolva

9, 00h - address pointer (egy nyomógomb segíségével folyamatosan nővelem 255-ig és közben minden pozicióba egy "A" betüt probálok irni (21h => c0h)

10, C1h - olvas az előző pozicióból.
mindig d3h kapok vissza eredményül. (nem jó)

9 - 10 gombnyomásra ciklusban.
Nem ir semmit.
A status check eredménye meg, hogy hol kikapcsol a kijelző hol meg bekapcsol. Általában többet van bekapcsolva mint kikapcsolva.
Az időzítés meg kb 1sec. vagy kicsit kevesebb, de 100msec biztosan megvan (annak meg hát elégnek kéne lennie).
(#) Tomee válasza Tomee hozzászólására (») Nov 26, 2005 /
 
a hiba egy része megvan...
(24h parancs helyett 00h volt)
Már ha vissza olvasom az elküldőtt karaktert akkor vissza is kapom, de még mindig nem látok semmit a kijelzőn!
Esetleg valami ötlet?
Statusz szerint be van kapcsolva.
(#) Norberto válasza Tomee hozzászólására (») Nov 26, 2005 /
 
Szerintem talán (lehetséges), hogy az address pointert a text home address-re állítsd be, merthogy karaktert írsz neki...lehet, hogy ez a baj...

Egyébként azt ugye tudtad, hogy a Home address parancs elé 2 bájtnyi adat kell?

Vagy csak időt/helyet spórolva írtál egyszeri 00h-t a fentebbi leírásodban Address pointer elé?
(#) Norberto válasza Norberto hozzászólására (») Nov 26, 2005 /
 
Ja értem, mostmár megvan az egyik hiba...én értelmeztem félre most ezt az Address pointeres 00h-t...

Szóval Address pointert Text Home Address-re állítani! Lehet, hogy az a baj...
(#) Tomee válasza Norberto hozzászólására (») Nov 26, 2005 /
 
Már azon van.
És innen léptetem szépen felfelé.
Mind a kettő 00h, 00h.
Következő: »»   1 / 3
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