LCD 2x16 driver
Moderators: pedja089, stojke369, [eDo], trax
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb
LCD 2x16 driver
Pozdrav ekipa,
Prije nekih 5 godina odradio sam jedan projekt za kućnu automatizaciju sa ATMEGA64. Naime, u to vrijeme sam iskoristio sve portove MCU-a jer se na to povezuje 100 čuda. No kako sam radio nekoliko revizija programa oslobodilo mi se 7 portova i sada bih trebao na to strpati 4 tipkala i LCD2x16 paralelni (4 bitni mod rada).
Hardware ne radim ja, nego taj tip za kojega sam pisao software. Dakle kada on spoji 4 tipkala ostati će mu slobodna samo 3 porta što znači da LCD moram pogoniti s 3 porta. Ja sam mu predložio I2C LCD, ali nije zadovoljan sa LCD-om koji mu mogu nabaviti. Želi uzeti nekakav LCD koji može lako kupiti tako da smo ostali na ovome paralelnom 2x16 (4 bitni mod).
Moje pitanje je sljedeće:
Koji driver, shift register ili nešto treće da koristim kako bih za pogon LCD-a izbacivao podatke serijski? Trebalo bi mi nešto što je dovoljno brzo, da ima recimo 8 paralelnih izlaza, da je 3 state, a serijski ulaz moze biti i I2C ili bilo što samo da ga povežem na 3 porta MCU-a.
Nisam ovakvo nešto još radio, ne znam koliko će to sve zajedno biti brzo s obzirom na ispis na LCD-u i ima li netko iskustva s time?
Prije nekih 5 godina odradio sam jedan projekt za kućnu automatizaciju sa ATMEGA64. Naime, u to vrijeme sam iskoristio sve portove MCU-a jer se na to povezuje 100 čuda. No kako sam radio nekoliko revizija programa oslobodilo mi se 7 portova i sada bih trebao na to strpati 4 tipkala i LCD2x16 paralelni (4 bitni mod rada).
Hardware ne radim ja, nego taj tip za kojega sam pisao software. Dakle kada on spoji 4 tipkala ostati će mu slobodna samo 3 porta što znači da LCD moram pogoniti s 3 porta. Ja sam mu predložio I2C LCD, ali nije zadovoljan sa LCD-om koji mu mogu nabaviti. Želi uzeti nekakav LCD koji može lako kupiti tako da smo ostali na ovome paralelnom 2x16 (4 bitni mod).
Moje pitanje je sljedeće:
Koji driver, shift register ili nešto treće da koristim kako bih za pogon LCD-a izbacivao podatke serijski? Trebalo bi mi nešto što je dovoljno brzo, da ima recimo 8 paralelnih izlaza, da je 3 state, a serijski ulaz moze biti i I2C ili bilo što samo da ga povežem na 3 porta MCU-a.
Nisam ovakvo nešto još radio, ne znam koliko će to sve zajedno biti brzo s obzirom na ispis na LCD-u i ima li netko iskustva s time?
InTheStillOfTheNight
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb
Re: LCD 2x16 driver
Ne znam bob, zato i pitam
Cek, ako sam dobro shvatio, ja na ovome nakon I2C adrese šaljem stanje citavog porta? U teoriji čini se ok, samo ne znam hoće li to biti dovoljno brzo? Jer kada ja napišem lib za LCD puno puta ću morati nešto slati preko te sporije sabirnice. Jel ima kakva brža metoda od I2C jer ako idem preko I2C onda start, adress, ack... ima toga u protokolu.
Bilo bi dobro kada bi mogao nekom primitivnom metodom tipa samo preko clock i data upucati 8 stanja za portove.
Cek, ako sam dobro shvatio, ja na ovome nakon I2C adrese šaljem stanje citavog porta? U teoriji čini se ok, samo ne znam hoće li to biti dovoljno brzo? Jer kada ja napišem lib za LCD puno puta ću morati nešto slati preko te sporije sabirnice. Jel ima kakva brža metoda od I2C jer ako idem preko I2C onda start, adress, ack... ima toga u protokolu.
Bilo bi dobro kada bi mogao nekom primitivnom metodom tipa samo preko clock i data upucati 8 stanja za portove.
InTheStillOfTheNight
Re: LCD 2x16 driver
Ja pomoću 74HC595 šaljem serijski na LED 7 segmentne; a koja je brzina . Mi umirovljenici to polako obavljamo
-
- Napredujem
- Posts: 118
- Joined: 11-09-2014, 04:03
Re: LCD 2x16 driver
Jesi li probao SN74LS164 pomijerački registar? Sa LCD2x16 radim dosta vremena i siguran sam da to možeš izvesti pomijeračkim registrom. S tim što nečeš moči čitati podatke sa LCD-a, a to se rijetko koristi...
Neznam zbog čega ti treba ThreeState?
Neznam zbog čega ti treba ThreeState?
[url=https://www.viagrasansordonnancefr.com/ ... -ligne-or/]www.viagrasansordonnancefr.com sildenafil 100 mg ligne or[/url]
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb
Re: LCD 2x16 driver
Nisam probao niti jedan, radi se o tome da netko drugi crta hardware. Ja bi to sebi uzeo na test board i napisao lib prije nego nacrtam PCB, ali takva je situacija trenutno.
asm, SN74LS164 koliko vidim ima CLR, A, B, CLK. to su 4 controlne linije. Nisam sada ulazio u detalje kako to tocno radi, ali ako sam dobro shvatio on odmah postavlja izlaze na rastucem clocku. Ne znam sada jel mi to odgovara pošto na LCD-u ipak moram imati neki redosljed postavljanja linija. Lako mi je za DO-D4, ali kontrolne linije imaju redosljed. Ili sam nešto krivo shvatio? 3-state bi uzeo jer ne znam što ću još na to kvačiti. Podatke s LCD necu ni citati, r/w ide GND.
abc, koliko uopce treba linija za 74HC595 i na koji nacin on portavlja stanje izlaza?
Ono što mi nije jasno, jel SN74LS164 i 74HC595 postave sva stanja izlaza nakon 8 data bita, ili na svakom clocku postave trenutni izlaz o ili 1?
asm, SN74LS164 koliko vidim ima CLR, A, B, CLK. to su 4 controlne linije. Nisam sada ulazio u detalje kako to tocno radi, ali ako sam dobro shvatio on odmah postavlja izlaze na rastucem clocku. Ne znam sada jel mi to odgovara pošto na LCD-u ipak moram imati neki redosljed postavljanja linija. Lako mi je za DO-D4, ali kontrolne linije imaju redosljed. Ili sam nešto krivo shvatio? 3-state bi uzeo jer ne znam što ću još na to kvačiti. Podatke s LCD necu ni citati, r/w ide GND.
abc, koliko uopce treba linija za 74HC595 i na koji nacin on portavlja stanje izlaza?
Ono što mi nije jasno, jel SN74LS164 i 74HC595 postave sva stanja izlaza nakon 8 data bita, ili na svakom clocku postave trenutni izlaz o ili 1?
InTheStillOfTheNight
Re: LCD 2x16 driver
Treba probati šro kaže bob s PCF8574
http://www.ebay.com/itm/1602LCD-Display ... 1e905132b0
i vidjeti brzinu
http://www.ebay.com/itm/1602LCD-Display ... 1e905132b0
i vidjeti brzinu
-
- Napredujem
- Posts: 118
- Joined: 11-09-2014, 04:03
Re: LCD 2x16 driver
Koliko vidim po datashetu i unutrašnjoj logičkoj strukturi 74LS164 setuje izlazne pinove po rastučem clock impulsu, al možeš i to riješiti. LCD očitava podatke sa porta prilikom prelaska E linije iz 1 u 0.
Tako da, možda ti se čini komplikovano, E liniju LCD-a vežeš na pin 5 pomijeračkog registra. Znači on se zadnji prenosi. Shvataš, kada kontroler otkuca svih 7 bita podataka osmi ti je E linija i tada LCD preuzima podatke, nakon toga E liniju vračaš na 1 i ponavljaš sekvencu.
Znači: Linije LCD-a D0 do D3 vežeš na pinove pomijeračkog registra 0 do 3,
RS na pin 4, i E na pin 5. Pinovi 6 i 7 ostaju slobodni.
Za slanje podataka ti trebaju samo dva pina kontrolera.
Jedan na Clock drugi na A liniju pomijeračkog registra.
Linije B i CLEAR uvijek držiš na logičkoj 1 tj. povežeš ih prema napajanju.
PS: Ispravite me ako griješim!
Tako da, možda ti se čini komplikovano, E liniju LCD-a vežeš na pin 5 pomijeračkog registra. Znači on se zadnji prenosi. Shvataš, kada kontroler otkuca svih 7 bita podataka osmi ti je E linija i tada LCD preuzima podatke, nakon toga E liniju vračaš na 1 i ponavljaš sekvencu.
Znači: Linije LCD-a D0 do D3 vežeš na pinove pomijeračkog registra 0 do 3,
RS na pin 4, i E na pin 5. Pinovi 6 i 7 ostaju slobodni.
Za slanje podataka ti trebaju samo dva pina kontrolera.
Jedan na Clock drugi na A liniju pomijeračkog registra.
Linije B i CLEAR uvijek držiš na logičkoj 1 tj. povežeš ih prema napajanju.
PS: Ispravite me ako griješim!
[url=https://www.viagrasansordonnancefr.com/ ... -ligne-or/]www.viagrasansordonnancefr.com sildenafil 100 mg ligne or[/url]
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb
Re: LCD 2x16 driver
asm, meni se u teoriji čini da bi to moglo raditi, s time da imam i RS liniju koja ide u low ako šaljem instrukciju, a u high ako šaljem karakter.
To znači da bi RS trebao biti prije E? jer ako se ne varam najprije setiram RS low, E low, i onda podesim 4xdata, trigam E high-low, podesim 4xdata i opet trigam E High-Low. (Instrukcija)
Za print char RS prvo ide u high, podesim 4xdata, trigam E high-low, podesim 4xdata i opet trigam E High-Low.
Dakle, u teoriji, ako je RS prije E, a data prije RS i E trebalo bi raditi.
Jedini problem je sto ja ne radim HW, a ocito cu to morati probati jer HW nije baš jeftin i nemam tu prostora fulati logiku. Nekako mi se ovo sa I2C sa HW strane sviđa više, ali je ovo sa shift registrom sigurno brze... mislim... Ako nesto nisam krivo zakljucio?
EDIT:
Ako se ne varam trebalo bi raditi u u bilo kojoj drugoj kombinaciji jer ja uvijek mogu proći 2 puta kroz registar i podići E tek kada postavim data i RS? Ako se ne varam?
To znači da bi RS trebao biti prije E? jer ako se ne varam najprije setiram RS low, E low, i onda podesim 4xdata, trigam E high-low, podesim 4xdata i opet trigam E High-Low. (Instrukcija)
Za print char RS prvo ide u high, podesim 4xdata, trigam E high-low, podesim 4xdata i opet trigam E High-Low.
Dakle, u teoriji, ako je RS prije E, a data prije RS i E trebalo bi raditi.
Jedini problem je sto ja ne radim HW, a ocito cu to morati probati jer HW nije baš jeftin i nemam tu prostora fulati logiku. Nekako mi se ovo sa I2C sa HW strane sviđa više, ali je ovo sa shift registrom sigurno brze... mislim... Ako nesto nisam krivo zakljucio?
EDIT:
Ako se ne varam trebalo bi raditi u u bilo kojoj drugoj kombinaciji jer ja uvijek mogu proći 2 puta kroz registar i podići E tek kada postavim data i RS? Ako se ne varam?
InTheStillOfTheNight
-
- Napredujem
- Posts: 118
- Joined: 11-09-2014, 04:03
Re: LCD 2x16 driver
.
Last edited by Dzenny_assembly on 13-09-2014, 15:28, edited 1 time in total.
[url=https://www.viagrasansordonnancefr.com/ ... -ligne-or/]www.viagrasansordonnancefr.com sildenafil 100 mg ligne or[/url]
-
- Napredujem
- Posts: 118
- Joined: 11-09-2014, 04:03
Re: LCD 2x16 driver
Svejedno je da li češ Rs staviti prije ili poslije Data pinova. Bitno je da je E zadnja.
Jer kada E predže iz 1 u 0 RS linija je več spremna (Podatci ili komande) nakon toga LCD "zna" šta mu je činiti.
Sa pomijeračkim registrom ti je programski lakše izvesti.
Nisam gledao datashet kontrolera s kojim radiš, ali ukoliko isti neposijeduje hardversko riješenje
I2C protokola softverski nije baš jednostavno, osim ako nije upitanju neki viši prog. jezik.
U svakom slučaju najbolje je da probaš pa vidiš šta bi ti bilo najbolje.
Jer kada E predže iz 1 u 0 RS linija je več spremna (Podatci ili komande) nakon toga LCD "zna" šta mu je činiti.
Sa pomijeračkim registrom ti je programski lakše izvesti.
Nisam gledao datashet kontrolera s kojim radiš, ali ukoliko isti neposijeduje hardversko riješenje
I2C protokola softverski nije baš jednostavno, osim ako nije upitanju neki viši prog. jezik.
U svakom slučaju najbolje je da probaš pa vidiš šta bi ti bilo najbolje.
[url=https://www.viagrasansordonnancefr.com/ ... -ligne-or/]www.viagrasansordonnancefr.com sildenafil 100 mg ligne or[/url]
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb
Re: LCD 2x16 driver
Ja zaboravio da google sve zna
Ovo je super fora sa PWM-om i RC-om, ali mislim da ću uzeti link 2 i poslati tome tipu neka crta. E liniju su povukli na port MCU-a, a ima i on 3 porta sloboda tako da necu komplicirati... Moja pretpostavka zašto je E linija spojena na MCU je iz razloga što se stalno radi High-Low na spremnim podatcima tako da bi se samo za slanje 4 bita trebalo 2 puta proći shift registar. Inace po linku 2, samo jedamput prođem shift registar podesim data i RS, i onda samo sa MCU-a trigam E High-Low. Ma super, sve štima.
Hvala Khaderah
Ovo je super fora sa PWM-om i RC-om, ali mislim da ću uzeti link 2 i poslati tome tipu neka crta. E liniju su povukli na port MCU-a, a ima i on 3 porta sloboda tako da necu komplicirati... Moja pretpostavka zašto je E linija spojena na MCU je iz razloga što se stalno radi High-Low na spremnim podatcima tako da bi se samo za slanje 4 bita trebalo 2 puta proći shift registar. Inace po linku 2, samo jedamput prođem shift registar podesim data i RS, i onda samo sa MCU-a trigam E High-Low. Ma super, sve štima.
Hvala Khaderah
InTheStillOfTheNight
Re: LCD 2x16 driver
nema problema
Re: LCD 2x16 driver
Ako imaš slučajno slobodan jedan analogni ulaz, onda tipke možeš izvesti i na ovaj način:
Ostane ti 6 portova za LCD, 4bitni mod i vozi
Ostane ti 6 portova za LCD, 4bitni mod i vozi
Re: LCD 2x16 driver
Nije tri-state ali mozda pomogne.
http://www.elektronika.ba/forum/viewtop ... =3&t=11245
Ispod je malo modificirani driver za PIC u c-u. koristi se byte-stuffing, gdje odredjeni bajt (LCD_CMDCHAR) 'govori' driveru dal je sljedeci podatak instrukcija ili podatak. Osobno uvijek radim ovako i prezadovoljan sam. Takodjer iz instrukcije driver prepoznaje dali je trajanje instrukcije kratko ili dugo i umece odgovarajuci delay. (normalno ti mozes koristiti tajmer ako imas potrebu za tim).
http://www.elektronika.ba/forum/viewtop ... =3&t=11245
Ispod je malo modificirani driver za PIC u c-u. koristi se byte-stuffing, gdje odredjeni bajt (LCD_CMDCHAR) 'govori' driveru dal je sljedeci podatak instrukcija ili podatak. Osobno uvijek radim ovako i prezadovoljan sam. Takodjer iz instrukcije driver prepoznaje dali je trajanje instrukcije kratko ili dugo i umece odgovarajuci delay. (normalno ti mozes koristiti tajmer ako imas potrebu za tim).
- Attachments
-
- lcd.zip
- (2.39 KiB) Downloaded 216 times
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb
Re: LCD 2x16 driver
Hex, lako je meni za drivere, toliko sam se s tim svime na*ebao da imam gotove drivere za većinu periferije, a i ako nemam sam si to napišem jer se tako najbolje snađem i napravim kako mi najvise odgovara. Sve to u C-u tipkam tako da mi je vrlo lako prebaciti na bilo koji MCU.
Iskreno da ti kažem, pojma nemam jel ima koji ADC port slobodan. Nacrtao sam mu nekada davno MCU board koji ima 40 pinova, ATMEGA64, kristal i externi WDT,izvukao mu portove i označio PWM-ove za nekakve motore, pinove Uart-a, ADC portove, a on je to sam rasporedio na svom board-u za sve što treba.
Kasnije sam ja na to programirao, ali sam stalno pretvarao njegove indeksirane portove 1-40 u portove MCU-a. U njegovim shemama ne postoji pravo ime porta jer ih je on i označavao kao 1-40 s tim da su 39 - 40 GND i VCC.
E sad, kako je on izbacio dio svoje periferije, ja još ne znam ni što je izbacio iz hardware-a, njemu je ostalo slobodnih 7 na mome MCU board-u, a sad koji su to tocno pojma nemam. (Tih 7 za nešto sigurno koristim u MCU-u, a to ću oslobađati kada bude gotov njegov HW).
Sinoć sam mu poslao mail da napravi HW po ovom linku:
http://www.electronics-lab.com/projects/mcu/015/
Ovo sa ADC-om je isto OK, ali baš me zanima koliko će biti brzo korištenjem 74HC595 pa ako bude dobro, možda ovo i češće budem koristio.
U svakom slučaju, hvala na ideji.
Iskreno da ti kažem, pojma nemam jel ima koji ADC port slobodan. Nacrtao sam mu nekada davno MCU board koji ima 40 pinova, ATMEGA64, kristal i externi WDT,izvukao mu portove i označio PWM-ove za nekakve motore, pinove Uart-a, ADC portove, a on je to sam rasporedio na svom board-u za sve što treba.
Kasnije sam ja na to programirao, ali sam stalno pretvarao njegove indeksirane portove 1-40 u portove MCU-a. U njegovim shemama ne postoji pravo ime porta jer ih je on i označavao kao 1-40 s tim da su 39 - 40 GND i VCC.
E sad, kako je on izbacio dio svoje periferije, ja još ne znam ni što je izbacio iz hardware-a, njemu je ostalo slobodnih 7 na mome MCU board-u, a sad koji su to tocno pojma nemam. (Tih 7 za nešto sigurno koristim u MCU-u, a to ću oslobađati kada bude gotov njegov HW).
Sinoć sam mu poslao mail da napravi HW po ovom linku:
http://www.electronics-lab.com/projects/mcu/015/
Ovo sa ADC-om je isto OK, ali baš me zanima koliko će biti brzo korištenjem 74HC595 pa ako bude dobro, možda ovo i češće budem koristio.
U svakom slučaju, hvala na ideji.
InTheStillOfTheNight
Re: LCD 2x16 driver
Ako ces po toj semi, zasto i pozadinsko osvetljenje ne bi kontrolisao preko registra?
A ako te brine brzina, zasto onda ne koristis 8 bit mod? Upola manje vremena ces potrositi na pisanje po LCD-u. Brzina pisanja za lcd je oko 0,5mS, ako me pamcenje dobro sluzi. Sto bi znacilo u 4bit modu da ti treba oko 1mS po karakteru/komandi najmanje.
Clock za registar je 4MHz, tako da ti za 8 bita treba oko par uS, prakticno se dobija duplo veca brzina ako koristis 8 bit mod.
A ako te brine brzina, zasto onda ne koristis 8 bit mod? Upola manje vremena ces potrositi na pisanje po LCD-u. Brzina pisanja za lcd je oko 0,5mS, ako me pamcenje dobro sluzi. Sto bi znacilo u 4bit modu da ti treba oko 1mS po karakteru/komandi najmanje.
Clock za registar je 4MHz, tako da ti za 8 bita treba oko par uS, prakticno se dobija duplo veca brzina ako koristis 8 bit mod.
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb
Re: LCD 2x16 driver
Napomenuo sam mu da stavi pozadinsko na shift registar... Ne mogu 8 bitni mod, nema dosta linija... po tome mi treba D0-D7, RS, pozadinsko, a E ide na MCU direktno.
PS, imam samo 3 porta MCU-a na raspolaganju... dakle CLK, DATA i E linija LCD-a
PS, imam samo 3 porta MCU-a na raspolaganju... dakle CLK, DATA i E linija LCD-a
InTheStillOfTheNight
Re: LCD 2x16 driver
Prevideo sam RS pin... Sorry.
Mada ako ti je brzina kriticna, DATA linija, ujedno moze da bude RS linija za displej. Jer dok ne dovodis klok na registar data moze da radi sta hoce... Redosled pisanja bi bio sledeci, uturis podatke u registar, podesis DATA liniju da odgovara RS pinu, zatm toglujes enable.
Ali onda vidi sta ces sa pozadinskim. Ako ti je brzina toliko bitna manje vise oces paliti pozadinsko il ne...
Mada ako ti je brzina kriticna, DATA linija, ujedno moze da bude RS linija za displej. Jer dok ne dovodis klok na registar data moze da radi sta hoce... Redosled pisanja bi bio sledeci, uturis podatke u registar, podesis DATA liniju da odgovara RS pinu, zatm toglujes enable.
Ali onda vidi sta ces sa pozadinskim. Ako ti je brzina toliko bitna manje vise oces paliti pozadinsko il ne...