LCD Displej
Re: LCD Displej
Tak jsem to osmibitové zapojení také nerozchodil ani s 28X2, ani s 20X2.
Proč tomu tak je netuším.
Zapojení čtyřbitové, to je to hned pod ním, mi na 20X2 funguje tak jak má. Na 28X2 už to drátovat nebudu, to zkus sám.
Program je tam tento:
Proč tomu tak je netuším.
Zapojení čtyřbitové, to je to hned pod ním, mi na 20X2 funguje tak jak má. Na 28X2 už to drátovat nebudu, to zkus sám.
Program je tam tento:
Kód: Vybrat vše
REM LCD displej 2x16 s 8 datovými vodiči - PICAXE 20X2
REM výpis "Test LCD 16x2",odrolování a počítání na 2. řádku
data 0 ,("Test LCD 16x2 ") ;uložení textu do EEPROM
let dirsB=%11111111 ;nastavení portu B pro pins
gosub inicializace ;inicializace LCD
for b1=0 to 15 ;výpis textu
read b1,b0 ;znak po znaku z EEPROM
gosub zapis_znaku
next b1
pause 3000 ;prodleva na čtení
b0=24 ;povel k rolování vlevo
for b1=1 to 40 ;provést 40x (dojede zpět)
gosub zapis_povelu
pause 200 ;zpomalení rolování
next b1
for b3=0 to 99 ;výpis čísel od 0 do 99 (z proměnné)
b0=192+15 ;přechod na konec 2. řádku
gosub zapis_povelu
b0=4 ;nastavit psaní zprava doleva
gosub zapis_povelu
b0=b3//10+48 ;převod jednotek na znak a výpis
gosub zapis_znaku
b0=b3/10+48 ;převod desítek na znak a výpis
gosub zapis_znaku
b0=6 ;nastavit psaní zleva doprava
gosub zapis_povelu
pause 500 ;zpomalení počítání
next b3
end ;konec ukázky
inicializace:
low c.0 ;zápis povelu
let pinsB=%0011 ;8 bit režim jako základní
pulsout c.1,1 ;zápis 1
pause 5 ;nutná prodleva
pulsout c.1,1 ;zápis 2
pulsout c.1,1 ;zápis 3
let pinsB=%0010 ;4 bit režim nastavit
pulsout c.1,1 ;nastaveno, lze používat podprogramy
b0=%00101000 ;2 řádky, font 5x8
gosub zapis_povelu
b0=%00000001 ;smazání displeje
gosub zapis_povelu
b0=%00001100 ;zapnutí displeje, kurzor ne, neblikat
gosub zapis_povelu
return
zapis_znaku: ;zápis znaku z b0
high c.0 ;bude přenos znaku
let pinsB=b0/16 ;nastavení horní poloviny bytu
pulsout c.1,1 ;zápis horní poloviny bytu
let pinsB=b0 and 15 ;nastavení dolní poloviny bytu
pulsout c.1,1 ;zápis
return
zapis_povelu: ;zápis povelu z b0
low c.0 ;bude přenos povelu
let pinsB=b0/16 ;nastavení horní poloviny bytu
pulsout c.1,1 ;zápis horní poloviny bytu
let pinsB=b0 and 15 ;nastavení dolní poloviny bytu
pulsout c.1,1 ;zápis
return
Naposledy upravil(a) jova dne 04 zář 2016, 11:45, celkem upraveno 1 x.
Re: LCD Displej
Ale já nemám procesory 22X2 a 28X2, mám 40X2, 20X2, 20M2, 8M2.
Re: LCD Displej
Promiň, upsal jsem se, zkoušeno to bylo úspěšně s 20X2.
Naposledy upravil(a) jova dne 04 zář 2016, 11:57, celkem upraveno 2 x.
-
- Příspěvky: 385
- Registrován: 02 dub 2014, 15:30
Re: LCD Displej
Ahoj,
problem bych videl v inicializaci LCD.
po trech prikazech 00110000 (30H)
musi nasledovat 00111000 (38H) coz je 8bit , nikoliv 00101000 (28H) coz je 4bit !!
http://www.dinceraydin.com/lcd/commands.htm,
http://web.alfredstate.edu/weimandn/lcd ... index.html
-V66
problem bych videl v inicializaci LCD.
po trech prikazech 00110000 (30H)
musi nasledovat 00111000 (38H) coz je 8bit , nikoliv 00101000 (28H) coz je 4bit !!
http://www.dinceraydin.com/lcd/commands.htm,
http://web.alfredstate.edu/weimandn/lcd ... index.html
-V66
Re: LCD Displej
Ano máš úplnou pravdu, zkoušel jsem to a chyba je v řádku 37. Po záměně to zobrazuje jak je popsáno.Vladimir66 píše:Ahoj,
problem bych videl v inicializaci LCD.
po trech prikazech 00110000 (30H)
musi nasledovat 00111000 (38H) coz je 8bit , nikoliv 00101000 (28H) coz je 4bit !!
http://www.dinceraydin.com/lcd/commands.htm,
http://web.alfredstate.edu/weimandn/lcd ... index.html
-V66
Původní znění:
Kód: Vybrat vše
b0=%00101000 ;2 řádky, znaky 5x8
Kód: Vybrat vše
b0=%00111000 ;2 řádky, znaky 5x8
Aby to nemátlo nás začátečníky.
Re: LCD Displej
Tak to jsem asi jediný, kterému to stále nefunguje.
Kód: Vybrat vše
REM LCD displej 2x16 s 8 datov?mi vodi?i - PICAXE 20X2
REM v?pis "Test LCD 16x2",odrolov?n? a po??t?n? na 2. ??dku
data 0 ,("Test LCD 16x2 ");ulo?en? textu do EEPROM
let dirsB=%11111111 ;nastaven? portu B pro pins
gosub inicializace ;inicializace LCD
for b1=0 to 15 ;v?pis textu
read b1,b0 ;znak po znaku z EEPROM
gosub zapis_znaku
next b1
pause 3000 ;prodleva na ?ten?
b0=24 ;povel k rolov?n? vlevo
for b1=1 to 40 ;prov?st 40x (dojede zp?t)
gosub zapis_povelu
pause 200 ;zpomalen? rolov?n?
next b1
for b3=0 to 99 ;v?pis ??sel od 0 do 99 (z prom?nn?)
b0=192+15 ;p?echod na konec 2. ??dku
gosub zapis_povelu
b0=4 ;nastavit psan? zprava doleva
gosub zapis_povelu
b0=b3//10+48 ;p?evod jednotek na znak a v?pis
gosub zapis_znaku
b0=b3/10+48 ;p?evod des?tek na znak a v?pis
gosub zapis_znaku
b0=6 ;nastavit psan? zleva doprava
gosub zapis_povelu
pause 500 ;zpomalen? po??t?n?
next b3
end ;konec uk?zky
inicializace:
pause 100
b0=%00110000 ;8 bit re?im
gosub zapis_povelu ;z?pis 1
pause 5 ;nutn? prodleva
gosub zapis_povelu ;z?pis 2
gosub zapis_povelu ;z?pis 3
b0=%00111000 ;2 ??dky, znaky 5x8
gosub zapis_povelu
b0=%00000001 ;smaz?n? displeje
gosub zapis_povelu
b0=%00001100 ;zapnut? LCD, kurzor ne, neblikat
gosub zapis_povelu
return
zapis_znaku: ;z?pis znaku z b0
high c.0 ;p?enos znaku (nastaven? RS)
let pinsB=b0 ;nastaven? dat
pulsout c.1,1 ;z?pis
return
zapis_povelu: ;z?pis povelu z b0
low c.0 ;p?enos povelu (nastaven? RS)
let pinsB=b0 ;nastaven? dat
pulsout c.1,1 ;z?pis
return
Re: LCD Displej
Tak to je vážně divný. Já to mám zapojené alá vrabčí hnízdo a ten tvůj kód to normálně zobrazí. Nemáš přehozené nějaké datové výstupy? Co jsem zkoušel, tak to pak začne psát nesmysly.
Já jsem to „vícebitové“ zapojení zkoušel v počátcích a nakonec ho opustil. Pořád mi pak nějak chyběli vodiče na procesoru a nepřišel jsem na to, jak tam rozumně posílat data. Přešel jsem na sériové zapojení, tam stačí jeden datový vodič a po něm se jedním příkazem určí souřadnice buňky na LCD a druhým se od toho místa pošle text nebo proměnné. Sice na to potřebuji jeden procesor 20M2 na převodík LCD navíc, ale chodí to hezky. Nějaké tišťáky na ten převodník tu ještě mám, tak kdybys chtěl tak ti ho pošlu.
Já jsem to „vícebitové“ zapojení zkoušel v počátcích a nakonec ho opustil. Pořád mi pak nějak chyběli vodiče na procesoru a nepřišel jsem na to, jak tam rozumně posílat data. Přešel jsem na sériové zapojení, tam stačí jeden datový vodič a po něm se jedním příkazem určí souřadnice buňky na LCD a druhým se od toho místa pošle text nebo proměnné. Sice na to potřebuji jeden procesor 20M2 na převodík LCD navíc, ale chodí to hezky. Nějaké tišťáky na ten převodník tu ještě mám, tak kdybys chtěl tak ti ho pošlu.