Fórum témák

» Több friss téma
Fórum » Karakteres LCD-k meghajtása, vezérlése
Lapozás: OK   6 / 17
(#) ktamas66 válasza icserny hozzászólására (») Ápr 12, 2014 /
 
Ha én rárakom a 7660-at a két kondival, és átrakom az átkötést, átalakítható 3,3V-osra? Van erről valami adatlap mikor melyiket kell rövidre zárni?
(#) icserny válasza ktamas66 hozzászólására (») Ápr 12, 2014 /
 
Idézet:
„Ha én rárakom a 7660-at a két kondival, és átrakom az átkötést, átalakítható 3,3V-osra?”
Hát persze, azért van ott a helye.
Idézet:
„Van erről valami adatlap mikor melyiket kell rövidre zárni?”
Nincs. Nekem egy másik gyártótól származó modulom van, ami 3,3 V-os. Vannak eltérések, de a panelnek ez a része hasonlónak tűnik. Ezen most csak a J3 jumper van beforrasztva, s ha jól látom, akkor a 7660 6. lábát köti földre. A másik két jumper nyitott.

J1 a 3. és az 5. lábakat kötné össze, ha be lenne forrasztva, J2 pedig a J3-at kötné GND-re, de ezt te látod jobban a csupasz panelon.

Ezek szerint U3, C1 és C2 beültetése után J1-et nyitni kell, J3-at pedig zárni.
A hozzászólás módosítva: Ápr 12, 2014
(#) elektros90 válasza icserny hozzászólására (») Ápr 12, 2014 /
 
Szia!
Találtam 10K-s trimmert bekötöttem azzal. Bekapcsolástól oda-vissza tekergetéssel produkálja ezt.
Abszolut ugyanez van akkor is, ha beteszem a pic-es panelmérőbe is.
A hozzászólás módosítva: Ápr 12, 2014
(#) elektros90 válasza elektros90 hozzászólására (») Ápr 12, 2014 /
 
Betettem egy másikat, az már jó. Az előző kettő kuka... Jó kínából rendelni.
(#) icserny válasza elektros90 hozzászólására (») Ápr 12, 2014 /
 
Idézet:
„Jó kínából rendelni.”
Ez most kérdés, vagy kijelentés? Nekem 4-ból 4 működik.
(#) zenetom válasza icserny hozzászólására (») Ápr 12, 2014 /
 
Szerintem ironikusan értette.
(#) vicsys válasza icserny hozzászólására (») Ápr 12, 2014 /
 
Én is meg mernék esküdni, hogy a hiba nem a gyártóban van...
(#) elektros90 válasza vicsys hozzászólására (») Ápr 12, 2014 /
 
Igen, ironikusan. De még ígyis megérte Hát nemtudom egy kijelzőben mit lehetne elrontani. Kicseréltem a másikra működött egyből, sőt már a panelmérő is működik szépen. Már mondom berakom megint az előzőt, de ugyanaz...
(#) ktamas66 válasza icserny hozzászólására (») Ápr 12, 2014 /
 
Köszi, kb. én is ennyit hámoztam ki a nyákból. Alkalomadtán kipróbálom.
(#) Massawa válasza ktamas66 hozzászólására (») Ápr 12, 2014 /
 
Csak meg tudom erösiteni, hogy igen nagy különbségek vannak a kijelzök között, még müködésben is ugyanazon a protokollon belül is.
Tegnapelött én is megjártam:

LCD+AVR
A hozzászólás módosítva: Ápr 12, 2014
(#) inci88 hozzászólása Máj 3, 2014 /
 
Sziasztok!

Van pár kétsoros (20×2) kijelzőm (HD44780, KS0066F05 vezérlővel) 2*7-es tüskesor csatlakozóval, és sehogyan sem tudom életre kelteni őket.
Próbáltam arduino-val (4 adatvezetékes megoldással) és egy már régebben készített LPT portos megoldással is, de egyiken sem látok semmit.

Ha csak feszültséget adok neki, akkor az első sorban minden pixelnek sötétnek kellene lenni?
Hogyan tudnám letesztelni? Lehet csak a kontraszt-al van a gond, azért nem látok semmit?

A kiosztása elvileg megegyezik az itt leírtakkal: Link (csak ezeken nincs háttérvilágítás)

Előre is köszönöm a segítséget.
A hozzászólás módosítva: Máj 3, 2014

kijelzo.jpg
    
(#) Massawa válasza inci88 hozzászólására (») Máj 3, 2014 /
 
Hát ez micsoda?
Ennyi chip még az Apollo ürhajoban sem volt.

Egy sima kijelzöben két ilyen 100-lábu mindent elvégez.
Ha nem tudod kezelni, akkor nem tudni mit látsz rajta.
Olyan nekem is volt, hogy kontraszt beállitása teljesen más volt, mint az adatlap ajánlása, ezért érdemes egy 10 kOhmos trimmert kötni a +5V meg a GND közé majd innen egy 1kOhmos ellenállással vezesd a kontraszt lábra az áramot. Igy elvben el kell érned az optimális fényeröt.
Szerintem ennyi chippel viszont nem lesz kompatibilis a 44780-s protokollal.
(#) icserny válasza Massawa hozzászólására (») Máj 3, 2014 /
 
Idézet:
„Hát ez micsoda?”
Szerintem ez 6 db független kijelzőpanel egymás mellé téve.
(#) zenetom válasza icserny hozzászólására (») Máj 3, 2014 /
 
Mikor kattintottam volna a "Hozzászólás elküldése" gombra, pont akkor előztél meg, én is ezt akartam írni.
(#) Massawa válasza icserny hozzászólására (») Máj 3, 2014 /
 
Ráadásul vagy 3 féle ( de még igy is tulzás panelenként 3 ilyen meghajto)...
(#) inci88 válasza Massawa hozzászólására (») Máj 3, 2014 /
 
Nos, a kép zavart meg, túl közel tettem őket egymáshoz. Ez 6darab, többféle valóban, de mindegyiknek azonos a kiosztása, ezeket kimértem a vezérlő lábaitól a tüskesorig.

A csatolt módon kötöttem be, De hiába tekerem a trimmert, nem jelenik meg semmi, egyik kijelzőn sem.
Talán hibás volna mind? Vagy nem volna elég neki az usb tápfeszültsége? (Az arduino 5V-ján 4,5-4,6V-ot mérek, gondolom a hosszú kábel miatt.)

kijelzo2.jpg
    
(#) Massawa válasza inci88 hozzászólására (») Máj 3, 2014 /
 
Igy nem fog menni semmi, mindenképpen az RS meg az EN bemenetet kezelned kéne.
(#) Bakman válasza inci88 hozzászólására (») Máj 3, 2014 /
 
Az 1KOhm-os ellenállás nem feltétlen kell. A 4,5 V tápfesz elvileg elég igaz, ezekhez nincs konkrét adatlapom, csak újabb típushoz. Lehetséges, hogy működnek, bekapcsoláskor nem feltétlen kell, hogy valami megjelenjen a kijelzőn.
(#) zenetom válasza Massawa hozzászólására (») Máj 3, 2014 /
 
Szia!
Nem túlzás, mert a KS0066U csak 16 karaktert tud kijelezni (16x40 pixel, egy karakter általában 5x8 pixel), ezért kell még a 2db KS0065, hogy 40 karaktert is meg tudjon jeleníteni.
Szerk.: 23. oldal
A hozzászólás módosítva: Máj 3, 2014
(#) proba válasza inci88 hozzászólására (») Máj 4, 2014 /
 
RD lábat bekötötted? Önmagában a 6 láb, a táp kontraszt kevés.Bővebben: Link
(#) inci88 válasza proba hozzászólására (») Máj 6, 2014 /
 
Már megpróbáltam úgyis, hogy minden lábat bekötöttem, a library dokumentuma alapján (RS/RD/EN és a 8 adat). Kiegészítettem, hogy villanjon fel egy led a loop végén, a led villog a kijelző üres.
(#) hobbydcc hozzászólása Máj 29, 2014 /
 
Sziasztok!

EDT EW162.. és 164... LCD kijelzőket (HD44780 kompatibilis)használok PIC16F1936-tal együtt, mindeddig az RW lábat lehúztam GND-re és a CG ROM-ban lévő karaktereket használtam. Most éppen egy autóba építhető egységet tervezgetek, aholis a hagyományos karaktereken kívül néhány egyedi karakter is kellene, pl. ventillátor, hőmérő, ilyesmi. Sajnos nem tudok új karaktert beírni a CG RAM, ba mert sík nulla vagyok ehhez...

Ismeri valamelyiktek ezt a fajta LCD-t illetve a CG RAM kezelését? Esetleg kaphatnék ASM részletet?

hdcc
(#) icserny válasza hobbydcc hozzászólására (») Máj 29, 2014 /
 
C18 példával tudok szolgálni, de egyszerű, mint a faék, könnyen átírható.

Ez itt egy ROM-ban tárolt táblázat, ami a betűképeket/szimbólumokat tartalmazza (karakterenként 8 bájt):

  1. const rom unsigned char betwk[] = {0x02,0x04,0x0E,0x01,0x0F,0x11,0x0F,0x00,    //á
  2.                                    0x02,0x04,0x0E,0x11,0x1F,0x10,0x0E,0x00,    //é
  3.                                    0x02,0x04,0x0C,0x04,0x04,0x04,0x0E,0x00,    //í
  4.                                    0x02,0x04,0x0E,0x11,0x11,0x11,0x0E,0x00,    //ó
  5.                                    0x02,0x04,0x11,0x11,0x11,0x13,0x0D,0x00,    //ú
  6.                                    0x0A,0x00,0x11,0x11,0x11,0x13,0x0D,0x00,    //ü
  7.                                    0x05,0x0A,0x11,0x11,0x11,0x13,0x0D,0x00,    //ű
  8.                                    0x05,0x0A,0x0E,0x11,0x11,0x11,0x0E,0x00};   //ő


A program elején, az LCD inicialzálás végén (vagy utána, amikor célszerűnek látszik) be kell tölteni a fenti (vagy a saját) tábládat a CGRAM területre.

  1. void lcd_init_cgram(void) {
  2.     lcd4_write_command(0x40);       // kurzor a CGRAM elejére
  3.     for(i=0; i<64; i++) {
  4.         lcd4_write_data(betwk[i]);  // definiálható karakterek feltöltése
  5.     }                               // ékezetes karakterekkel
  6.     lcd4_write_command(0x80);       // kurzor vissza, a DDRAM elejére 
  7. }


Amint látható, a betöltés előtt a 0x40 parancs vált a CGRAM-ra, majd a 0x80 parancs vált vissza a DDRAM területre. A többi egyszerű adatkiküldés...

Az lcd4_write_command() és az cd4_write_data() hívás helyére képzeld a saját függvényeidet, amivel most adatot vagy parancsot küldesz! (Parancsküldésnél az RS lábat alacsonyra, adatküldésnél pedig magas szintre kell állítani, de ezt már nyilván tudod).

A CGRAM-ba írt karaktereket a 0, 1, 2, 3, ... 7 karakterkódokkal lehet elérni (az ASCII táblában a "kontrol karakterek" tartománya).

Egyszerű automatikus átkódolás a fenti táblához:
  1. //-- karakter kiírás az LCD-re, az ékezetes karakterek átkódolásával
  2. void lcd8_putc(unsigned char c) {
  3.     switch(c) {
  4.             case 'á':  c = 0x00; break;
  5.             case 'é':  c = 0x01; break;
  6.             case 'í':  c = 0x02; break;
  7.             case 'ó':  c = 0x03; break;
  8.             case 'ú':  c = 0x04; break;
  9.             case 'ü':  c = 0x05; break;
  10.             case 'ű':  c = 0x06; break;
  11.             case 'ő':  c = 0x07; break;
  12.             case 'ö':  c = 0xEF; break;
  13.     }
  14.     lcd8_write_data(c);
  15. }
A hozzászólás módosítva: Máj 29, 2014
(#) hobbydcc válasza icserny hozzászólására (») Máj 29, 2014 /
 
Nagyon szépen köszönöm a segítséget !!! Igen, van ASM lcd_data és lcd_cmd rutinom.
(#) hobbydcc válasza icserny hozzászólására (») Jún 3, 2014 /
 
Szia icserny!

Tényleg 1szerű volt ASM-esíteni a C-t, a 0x40-től be tudok írni új karaktereket, de nem úgy néznek ki, ahogy szeretném....

A Te progidban a karakterek mind a 8 bitből állnakl össze (ami 8x8-as kijelzést feltételez), az EW16400YMY karakterei viszont 5x8-as méretűek! A rendelkezésre álló doksi szerint a felső 3 bit emiatt = 0, de ha így írom be: b'000xxxxx', akkor még rondább pacsnit kapok a rendes karakter helyett.... Mit rontok el?

példa: ü-betű

00000000
00010001
00000000
00010001
00010001
00010001
00001110
00000000

hdcc
(#) icserny válasza hobbydcc hozzászólására (») Jún 3, 2014 /
 
A felső három bit nálam mindig 0, tehát megfelel az adatlap követelményeinek. Hogy mit rontasz el, az nem tudom, főleg hogy a programodat sem látom...
(#) hobbydcc válasza icserny hozzászólására (») Jún 3, 2014 /
 
Sajnos nincs nálam a progi (lakhelyemtől 80 km-re dolgozok...), de leírom a "betöltő" rutint emlékezetből:

movlw 0x40
call send_lcd_cmd ; CG RAM kezdete

movlw b'00010001' ; nyolc bit egy karakter, mindenütt a felső 3 bit = 0
call send_lcd_data
.....
movlw b'00000100'
call send_lcd_data
;
movlw 0x80
call send_lcd_cmd ; ugrás az első kijelző helyiértékre
;
....
movlw 0x00
call send_lcd_data ; ha a karaktert ki akarom rakni a 0x80 (bal felső) helyre
A hozzászólás módosítva: Jún 3, 2014
(#) icserny válasza hobbydcc hozzászólására (») Jún 3, 2014 /
 
Ennek így mennie kellene. Az LCD szimulátoron ki is próbálhatod!
(#) hobbydcc válasza icserny hozzászólására (») Jún 3, 2014 /
 
Köszi szépen a választ, akkor valami más lesz a gond, átnézem az egész progit ...
(#) hobbydcc válasza hobbydcc hozzászólására (») Jún 3, 2014 /
 
Megvan - törölnöm kellett a memóriát (sudo pk2cmd /PPIC16F1936 /E Ubuntus vagyok), már jó !
Következő: »»   6 / 17
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