Fórum témák
» Több friss téma |
Van egy ilyen totyik, hogy LCD kijelző PC-re. Ott olvasgass vissza. És inkább ott folytassuk majd.
sziasztok en is most kezdem a pic et . es nekem egy ew13b10gly kijelzovel van problemam nem talalok reszletes leirast pl h kell e inicializalni es ha igen akkor hogy.ezzel kapcsolatban kerem a segitsegeteket.
elore is koszi
nincs tajta tipus. mar probaltam az alapjan de az aramkor hatuljan csak 3 fekete gomboc van a chip helyen miire esetleg ra lehetne irva.
mellekelem a kepet amit nem latni a kispapiron szam .:0608b1 ennyi
Hello!
Itt van a gyártó honlapja Bővebben: Link. Most mintha elég szűkmarkúak lennének, régebben többmindent megadtak a moduljaikról... remélem segít valamit.
ez nekem is megvan mar megtalatam de itt vezerlesrol es inicializalasrol nincs szo. ezert irtam
de koszonom
EDT gyártmány és S6B0108 chipek vannak rajta.
Az adatlapon kevés információt kapsz a működtetéshez, de egy másik adatlap (pl.:ez) leírása már többet segíthet. Ja, és miben akarod programozni, mert szerintem C-ben a legegyszerűbb.
Egy másik fórumban meg azt találtam, hogy a Displaytech KS0108-cal működő 64128A kijelzője szerint kell használni (lásd kép, printerportos bekötés).
Displaytech 64128A adatlap (PDF)
Heló
A nyáron vettem Topitól két 2*20 nagy karakteres kijelzőt. Ezek belekerültek a tápegységembe, de a következő probléma adódott: A kijelzők hátulján található egy poti, ami a kontrasztot állítja. A poti egyik oldalán van kb 8V, a másik oldalán a 0V, és értelem szerűen a harmadik lába 0-8V-ig szabályozható. A kijelzők időnként kb két hetente meghülyülnek, és a poti egyik oldalán lévő 8V elmászik, és vele együtt a kontraszt is. A potival ugyan be lehet állítani újra a kontrasztot, de ehhez mindíg szét kell szedni a tápot. A probléma mindkét kijelzőnél előfordul, ezért tatrom nagyon furcsának. A kijelző csatlakozói közt megtalálható egy kontraszt állító láb is, de ez alapesetben semmit nem csinál. Rájöttem, hogy a kijelző hátulján lévő réz felületek üzemmód váltóként működnek. Ha az egyessel bekarikázottakat átforrasztom, akkor semmire nem reagál a kijelző. Van még két forrasztási lehetőség, de nem szeretném kinyírni a kijelzőt próbálkozással. Remélem valaki látott már hasonló kijelzőt, és tudja, hogy mit kell még átforrasztanom rajta, hogy ne a kijelzőn lévő potival szabályozza a kontrasztot, hanem én a csatlakozóján keresztül tudjam. Köszi
Szia!
Nekem is van ilyen kijelzőm, mit csinálsz a VLCD lábbal? Tedd le földre!
Sziasztok,
az a közismert probléma lépett fel nálam, hogy miután bekapcsolom az áramkört (L-C mérő), az egysoros, 16 karaketeres kijelzőn csak az első 8 karakter jelenik meg. Azt tudom, hogy mi a baja, csak nem értek a programozáshoz. Ha mindenigaz azt kellene megoldani, hogy 2X8 sorosként kezelje a kijelzőt. A vezérlése egyébként a felső 4 biten történik. Aki esetleg tud benne segíteni, annak hálás lennék, ha átírná nekem a programban a megfelelő részt. Előre is nagyon köszönöm! Csatoltam a forráskódot (+a hex-et, hátha kell valamire)
Valamelyik témában már megírtam a megoldást, csak nem találtam nagy hirtelen, pedig nemrég volt.
Két dolog kell az asm kódodba a kétsoros kijelzéshez. Egyrészt van benne egy ilyen rész: ; BTFSS FIXIT ; GOTO LINE2 Szándékosan írom kommentezve, mert a csatolt kódban is úgy van. A FIXIT egy bemeneti vonal kellene, hogy legyen, amit ha nullára kötsz, akkor kétsoros, ha 1 vagy lebeg, akkor egysoros a kijelzés. Abban a progiban, amit én láttam, RB4-re volt deklarálva ez a bemenet, de a te kódodban ez már foglalt, és a FIXIT nincs is deklarálva egyáltalán. Szóval azt kellene eldönteni, van-e a panelon olyan jumper, ami egy vonalat nullára tudna húzni, vagy valamelyik láb fel van húzva Vcc-re, esetleg üresen hagyva, és a program nem használja. Ha van, akkor valószínűleg az lesz az. Attól függően, melyik lábra megy, a kódba be kell írni egy #define FIXIT PORTx, 0x... deklarációt a többi bitszintű változó közé, ez a második változtatás, ami szükséges. Ezután már csak nullára kell kötni azt a lábat, és kétsoros a kijelzés. Amennyiben azonban nincs ilyen láb, akkor régebbi verziójú hw-d van egy széleskörűen kompatibilis progival, és csak akkor lehet belőle kétsorost csinálni, ha a panelt is módosítod (már ha van szabad láb).
Köszi a gyors választ, de őszinte leszek: nem sokat értettem abból, amit írtál. Mármint nem azért, mert rosszul írtad le, hanem mert nagyon buta vagyok a programozáshoz, meg LCD kezeléshez.
Szabad port már nincsen a PIC-en sajnos... Most csatolom a kapcsolási rajzot, hátha az segít neked valamiben. Amik vannak jumperek azok más célt szolgálnak (freki ellenőrzés, és kalibráció +/- irányban).
Előkerült a téma, meg is találtam.
Ennél a hsz-nél van egy link, olyan mérőhöz, mint ami neked is van, és ott van alatta a megoldás is. Előfordulhat, hogy még korábbi verziójú a panelod, és nem lehet kétsorosra bővíteni, de meg kellene nézni a honlapot, hogy megoldható-e valahogy. Kicsit most behavaztak, meg állást kajtatok, és nem nagyon tudok belemerülni.
Ha az asm-et újra tudod fordítani és az eredményt beégetni a PIC-be, akkor első körben érdemes lenne a kobold által is javasolt környéken kutakodni a programban.
Arra gondolok, hogy a "; GOTO LINE2" elől vedd ki a pontvesszőt. Ahogy néztem a kódot, ez majd a 9. karakter kiírásánál ugrana a második sorra, azt hiszem, pont ez kellene esetedben.
Átnéztem a forráskódot, azt hiszem meg is találtam benne azt a részt, ami a kijelzőért felelős. Itt a kommentekből ha jól veszem ki 2 soros LCD van definiálva. De ilyen goto line2-t sehol nem találtam. Szerintem ebbe a részbe kellene belenyúlni, amit csatoltam.
Tudna esetleg valaki segíteni, és átírná nekem, hogy egysoros LCD-t kezeljen? Előre is nagyon köszönöm!
Elnézést, természetesen nem GOTO, hanem CALL.
A korábban Általad betett "lc2.asm" file-ban néztem, van egy DATS rutin, ami a kijelzőre ír, abban van kikommentezve ez a "CALL LINE2" sor. Első körben azt kellene megpróbálni kivenni a kommentből (kitörölni a pontvesszőt), és újrafordítani a progit. Az újrafordításhoz szükség van egy "FP.TXT" nevű, lebegőpontos számítási rutinokat tartalmazó file-ra is. Ez a Microchip AN575-ös application note-jában benne lévő forráskódból kibányászható, véleményem szerint az "FP24.A16" file-t kellene "FP.TXT" néven az "lc2.asm" mellé másolni a fordításhoz. Microchip AN575
Itt van kikommentezve az asm, és a szükséges fp.txt-t is csatoltam.
Én ezt most lefordítottam Neked MPLAB-ból, de ezt megcsinálhattad volna Te is. Csatolom a HEX-et, remélem, így jó lesz.
Köszönöm szépen mindkettőtöknek, most már úgy működik, ahogy kell. Mind a 16 karakter aktív a kijelzőn.
Bocs, hogy ezzel háborgattalak titeket, csak tényleg nem értek a programozás részéhez. Mégegyszer nagyon köszönöm!
Szívesen. Ha már itt tartunk, elérhető panelterv van ehhez a kütyühöz?
Sziasztok!
Úgy két hete megfogant a gondolat, hogy szeretnék egy LCD kijelzős egységet építeni, ami kijelez hőmérsékletet és időt. Azt a javaslatot kaptam, hogy induljak neki PIC-kel. Első lépésként ehhez beszereztem egy Chipcad-es PicKit2 készletet egy 44 pines demopanellel (16F887). Lelkesen össze is raktam az LCD kijelzővel, de semmilyen példaprogrammal se akar elindulni. Kivéve eggyel, de az is hibásan működik (csak a második sor jelenik meg a kijelzőn (mellékelve az asm file). Probáltam több kijelzővel is (4x20-as AV 20400 - http://www.datasheet4u.com/download.php?id=241776, illetve 2x16-os VFD http://www.datasheets.org.uk/pdf/60147.pdf). Utóbbival az említett program a második sort megjeleníti, de az első üres marad. Szóval kezd elmenni a kedvem tőle, mert akárhogy görcsölök még magaszintű nyelvekkel se akarnak menni (mikropascal, mikroc). Az LCD-k LPT porton számítógéppel hibátlanul mennek. Próbáltam 16F887, 16F876A, 16F886 PIC-eket, de csak nyűglődés és ugyanaz. Nem tudná nekem valaki szájbarágósan elmagyarázni, hogy induljak neki? Legjobban annak örülnék, ha magaszintű nyelven menne a dolog, mert a kezdeti szívások után gondolom a hőméréshez, órához a i2c se lesz egyszerűbb móka. Egy képet szúrok az elképzelt megvalósításról is. Előre is köszi a segítséget!
Csodák nincsenek Az asm-be belenéztem, szerintem nagyjából jó is, de az időzítések nincsenek rendesen betartva, legfőképpen az inicializálásnál. Nekem az sem derül ki, milyen órajelről jár a PIC, így miért éppen 165 a 100us-os időzítés konstansa.
Belinkelem a HD44780U adatlapját, ebben a 45. oldaltól kezdve vannak folyamatábrák 8 és 4 bites inicializálási folyamatokra. Ezeket kellene követni! Az adatlapot megnézve az is kiderül (24. oldaltól), hogy az utasítások elküldése után, ha nem használsz BUSY olvasást, akkor legrosszabb esetben 1.52ms-ot kell várni, adatok elküldése után pedig 37(+4) us-ot. Ha az adatlapban leírt szekvenciát és időzítéseket betartod a programban, biztosan működni fog, nekem soha nem volt még gondom vele. Néhány apró megjegyzés: - az asm-ben a ",0" ",1" helyett ",w" ",f" használata sokkal beszédesebb lenne; - egy ideig néztem, hogy mit is csinálnál a Timer1 és Timer2-kkel, aztán leesett, hogy az sima saját változó - csak kicsit megtévesztő a neve; - időnként sokkal beszédesebbek a hexa vagy akár a bináris alakú konstansok, érdemes akkor azt használni a forrásban (és nem csak a megjegyzésbe beleírni a hexa alakot). Bővebben: Link
Szatlakozva ahhoz amit Szilva irt, par nem megfeleloen kezelt dolog van a kodban ami nekem szemet szurt:
1. Radix MPASM-ben a default hex. Ha azt irod, hogy Kesl100 movlw 165 ; 100us késleltetés akkor W-be H'65' fog kerulni, emellett forditas kozben valoszinuleg kapsz egy figyelmeztetest hogy a szamodat csonkolta. Ez meg vicces is ennek tudataban: movlw 56 ; 38h=56 dec, 8 bit interface set Ha radixot valtasz akkor az a forras kodod elejen legyen, igy az dokumentalva van, nem fuggenek project file-oktol, munkakornyezettol stb... Ha nem valtasz akkor D'56' vagy .56 (pont-otvenhat)... 2. Ha idozito rutinok fuggnek az orajeltol azt is erdemes megjegyezni, hogy a ciklus valtozok milyen orajelhez lettek illesztve - ill a legjobb lenne definialgatni az ilyeneket, pl megadod egy valtozonak az orajelet, es a varakozas merteket abbol szamolod ki. Mindez forditas soran kiertekelodik tehat a vegleges kod meretet ill futasi teljesitmenyt nem befolyasolja. 3. Ha PCL-hez hozza adsz akkor biztosnak kell lenned abban, hogy nem tortenik tulcsordulas. Azaz vagy org-gal kikenyszerited a tablad jo helyen legyen vagy kezeled a PCLATH-ot is (ill. ha olyan az MCU-d akkor PCLATU-t is...)
Köszönöm a válaszokat! Szilva, átrágom az adatlapot. Azt viszont továbbra se értem, hogy a magasabb szintű nyelvek rutinjai miért nem futnak. Gondolom ott visszaolvassák a Busy flag-et, nem?
Trudnai: Igen defaultban hex, ezt nem írtam, hogy át kell állítani decimálisra, úgy fut a program. A programot nem én írtam, csak egy picit faragtam rajta, hogy egyáltalán megjelenjen valami a kijelzőn. Teljesen elveszítettem a fonalat ugyanis, hogy semmivel nem akart elindulni egyik kijelzőm se. A vicc az, hogy több féle megoldást próbálgattam, próbáltam 4 biten is, de mind hiába C-ben vagy pascalban nem kéne ennek tök egyszerűen mennie? Az órajel a PICek default beállításán van, nem állíitottam rajta.
Nem lehet, hogy itt 2* adod ki a resetet aminek nagyobb idozites kell es mar irnad az elso sort de meg a chip nem tert magahoz, aztan mikor a 2. sort irod akkor mar reset vegrehajtodott szoval a sor megjelenik?
movlw 56 ; 38h=56 dec, 8 bit interface set call Write call Kesl ; Busy flag olvasását "helyettesíti" movlw 56 call Write Tamas UI: Minden LCD modul kicsit mas, foleg ha nem eredeti Hitachi, es ha mas az idozites, akkor elkepzelheto, hogy a kesz LCD rutinok nem mukodnek kielegitoen. Azonfelul elektronikai problemak is lehetnek - tap nem all fel idoben, adatvonal zajos vagy kapacitiv stb.
Szia!
Magas szintű rutinokkal sosem próbáltam az LCD-t kezelni, fogalmam sincs, melyik mit csinál meg és mit nem. Asm-ben mennie kell. Egy nagyon fontos dolgot elfelejtettem kiemelni: a bekapcsolás után kell időzítés, amíg az LCD tápfesze is feláll, valamint az LCD saját initje lefut. Ezt írja is a folyamatábrában az elején, sok ms időzítéssel. Azaz nem szabad azonnal nekiesni rögtön a reset rutinban, kell adni időt neki "észhez térni". A másik, amire figyelni kell, az a trudnai által is kiemelt, parancsok utáni időzítés.
Újrakezdtem az egészet. Valami nagyon fura, mert a tesztpanelen úgy látom, hogy többször fut le a program egymás után :?!? Elindult az LCD, azonban a kiírandó karaktert már nem akarja kitenni. Valami nem gömbölyű vagy a pickit-tel vagy a fordítással, mert szó szerint úgy látom, hogy többször fut végig a ciklus és szerencsétlen LCD nem érti mit akarok. Ezen az oldalon sikerült megértenem a folyamatot, ott működik is, de az asm program már nem fut rendesen. Esetleg tudtok valami jó időzítőrutint ajánlani egy külső oszcillátor nélküli 16f887-hez?
http://www.geocities.com/dinceraydin/djlcdsim/djlcdsim.html |
Bejelentkezés
Hirdetés |