Nemáte někdo chuť a čas mi s tím poradit?
Nějak se v tom plácám a pořád nic
Řízení LCD 40x4
Re: Řízení LCD 40x4
Bohuzel neporadim - basic jsem videl naposledy v 80. letech minuleho stoleti...
Neni vylouceno, ze jsi narazil na limit pouzite platformy.
Co takhle se posunout dal?
Alespon na to pitome Arduino?
Priznam se, ze jsem se nenamahal cist cele vlakno, tak snad nebudu uplne mimo, ale rozdelil bych problem na dve casti:
1. Komunikace s displejem
2. Prijem dat
1. Zkusil bych v nekonecne smycce mazat a plnit cely displej nejakymi znaky - spadne / nespadne?
Pokud nespadne, mam pomerne znacnou jistotu, ze mi chodi zobrazeni a muzu prejit k bodu 2.
2. Napisu do vysilace program, ktery mi bude posilat kratky retezec znaku a ten budu zobrazovat - spadne / nespadne?
Pokud nespadne, zacnu prodluzovat retezec az na plny displej.
Chyba by se mela nekdy behem popsaneho procesu objevit.
Pokud se neobjevi, zahodit predchozi kod a je vyhrano...
Neni vylouceno, ze jsi narazil na limit pouzite platformy.
Co takhle se posunout dal?
Alespon na to pitome Arduino?
Priznam se, ze jsem se nenamahal cist cele vlakno, tak snad nebudu uplne mimo, ale rozdelil bych problem na dve casti:
1. Komunikace s displejem
2. Prijem dat
1. Zkusil bych v nekonecne smycce mazat a plnit cely displej nejakymi znaky - spadne / nespadne?
Pokud nespadne, mam pomerne znacnou jistotu, ze mi chodi zobrazeni a muzu prejit k bodu 2.
2. Napisu do vysilace program, ktery mi bude posilat kratky retezec znaku a ten budu zobrazovat - spadne / nespadne?
Pokud nespadne, zacnu prodluzovat retezec az na plny displej.
Chyba by se mela nekdy behem popsaneho procesu objevit.
Pokud se neobjevi, zahodit predchozi kod a je vyhrano...
Soldering fumes make you stronger!
Re: Řízení LCD 40x4
Já ten basic v tomhle zapojení běžně používám na LCD 4x20 znaků. Tady je problém, že je těch znaků 2x tolik a LCD má kvůli tomu dva řadiče. A právě ty dva řadiče se mi nedaří těmi příkazy přepínat a data na ně odesílat.
Re: Řízení LCD 40x4
A zkoušel jsi si pohrát s časovými konstantami řídících příkazů displeje? Občas to bývá dost kritické.
jrt
Re: Řízení LCD 40x4
Dival jsem se na schema na zacatku, ale nevidim tam typove oznaceni.
Da se zjitit presny typ (napr na stitku modulu) nebo mas primo datasheet?
Zkusil bych pustit funkci (knihovnu) pro rizeni 4x20 na jeden enable displeje.
Pokud to pojede, mrknul bych kam se zobrazuje ktery znak a upravil adekvatne adresovani pozic na displeji.
Muzes potom zkusit stejnou vec na druhem enable.
V kazdem pripade je potreba k tomu pristupovat jako ke dvema nezavislym displejum!
Pokud mas funkcni zobrazeni na polovicnim displeji, musi to fungovat.
Jenom si udelas prepinani, kde vyberes za ktery enable tahat. Do knihovny neni potreba sahat.
Da se zjitit presny typ (napr na stitku modulu) nebo mas primo datasheet?
Zkusil bych pustit funkci (knihovnu) pro rizeni 4x20 na jeden enable displeje.
Pokud to pojede, mrknul bych kam se zobrazuje ktery znak a upravil adekvatne adresovani pozic na displeji.
Muzes potom zkusit stejnou vec na druhem enable.
V kazdem pripade je potreba k tomu pristupovat jako ke dvema nezavislym displejum!
Pokud mas funkcni zobrazeni na polovicnim displeji, musi to fungovat.
Jenom si udelas prepinani, kde vyberes za ktery enable tahat. Do knihovny neni potreba sahat.
Soldering fumes make you stronger!
Re: Řízení LCD 40x4
Bohužel žádné informace o těch LCD nemám. Jsou vymontované z jakýchsi zařízení a já u nich měním podsvícení a dodělávám záporné napětí pro řízení kontrastu.
Pokud jednu půlku LCD řídím samostatným programem, viz níže, vše funguje jak má. Změnou příkazu na jednotlivé enable výstupy ( pulsout horní/dolní) měním do jaké části panelu se posílají řádky. Takže inicializace i to zobrazování je samostatně funkční.
Co se mi nedaří, je sloučit vše do jednoho programu 20M2, který bude obsluhovat oba enable výstupy a provést změny na programu 8M2 tak, aby ta data posílal ve formátu, kdy ta 20M2 pozná o jakou část LCD se jedná (horní/dolní).
Program v 20M2 co mi řídí LCD:
Program v 8M2 zasílající data:
Pokud jednu půlku LCD řídím samostatným programem, viz níže, vše funguje jak má. Změnou příkazu na jednotlivé enable výstupy ( pulsout horní/dolní) měním do jaké části panelu se posílají řádky. Takže inicializace i to zobrazování je samostatně funkční.
Co se mi nedaří, je sloučit vše do jednoho programu 20M2, který bude obsluhovat oba enable výstupy a provést změny na programu 8M2 tak, aby ta data posílal ve formátu, kdy ta 20M2 pozná o jakou část LCD se jedná (horní/dolní).
Program v 20M2 co mi řídí LCD:
Kód: Vybrat vše
;20M2
symbol baud = N4800_32
symbol rx = C.0
symbol rs = C.2
symbol horni = C.1
symbol dolni = C.3
init:
gosub lcd_init
main:
serin RX,baud,b1
if b1 < 253 then
pinsB = b1
pulsout horni,1 ;pulsout dolni,1
goto main
else if b1 = 254 then
low rs
serin RX,baud,b1
pinsB = b1
pulsout horni,1 ;pulsout dolni,1
high rs
goto main
end if
lcd_init:
dirsC = %10111110
dirsB = %11111111
pause 15
pinsB = %00110000
pulsout horni,1
pulsout dolni,1
pause 5
pulsout horni,1
pulsout dolni,1
pulsout horni,1
pulsout dolni,1
setfreq m32
pinsB = %00111000
pulsout horni,1
pulsout dolni,1
pinsB = %00000001
pulsout horni,1
pulsout dolni,1
pause 8
pinsB = %00000010
pulsout horni,1
pulsout dolni,1
pinsB = %00000110
pulsout horni,1
pulsout dolni,1
pause 1
pinsB = %00001100
pulsout horni,1
pulsout dolni,1
high rs
return
Kód: Vybrat vše
;08M2
symbol baud=N4800
pause 500
serout C.1, baud, (254,1) ;smaže lcd
start:
serout C.1, baud, (254,128) ;první řádek, první pozice
serout C.1, baud, ("abcdefghi")
serout C.1, baud, (254,192) ;druhý řádek, první pozice
serout C.1, baud, ("123456789")
pause 1000
serout C.1, baud, (254,1) ;smaže lcd
pause 1000
goto start