LCD Displej

Tadeášek
Příspěvky: 33
Registrován: 15 srp 2016, 11:59

Re: LCD Displej

Příspěvek od Tadeášek »

Ano, mám
jova
Příspěvky: 361
Registrován: 16 pro 2013, 11:40

Re: LCD Displej

Příspěvek od jova »

Tak jsem to osmibitové zapojení také nerozchodil ani s 28X2, ani s 20X2.
Proč tomu tak je netuším. :cry:
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.
Tadeášek
Příspěvky: 33
Registrován: 15 srp 2016, 11:59

Re: LCD Displej

Příspěvek od Tadeášek »

Ale já nemám procesory 22X2 a 28X2, mám 40X2, 20X2, 20M2, 8M2.
jova
Příspěvky: 361
Registrován: 16 pro 2013, 11:40

Re: LCD Displej

Příspěvek od jova »

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.
Tadeášek
Příspěvky: 33
Registrován: 15 srp 2016, 11:59

Re: LCD Displej

Příspěvek od Tadeášek »

Děkuji
Vladimir66
Příspěvky: 385
Registrován: 02 dub 2014, 15:30

Re: LCD Displej

Příspěvek od Vladimir66 »

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
Tadeášek
Příspěvky: 33
Registrován: 15 srp 2016, 11:59

Re: LCD Displej

Příspěvek od Tadeášek »

Děkuji
jova
Příspěvky: 361
Registrován: 16 pro 2013, 11:40

Re: LCD Displej

Příspěvek od jova »

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
Ano máš úplnou pravdu, zkoušel jsem to a chyba je v řádku 37. Po záměně to zobrazuje jak je popsáno.
Původní znění:

Kód: Vybrat vše

 b0=%00101000                  ;2 řádky, znaky 5x8
Správně má být:

Kód: Vybrat vše

b0=%00111000                  ;2 řádky, znaky 5x8
Asi by to chtělo opravit v původním textu na: http://robodoupe.cz/2015/picaxe-obsluha ... -displeje/
Aby to nemátlo nás začátečníky.
Tadeášek
Příspěvky: 33
Registrován: 15 srp 2016, 11:59

Re: LCD Displej

Příspěvek od Tadeášek »

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
jova
Příspěvky: 361
Registrován: 16 pro 2013, 11:40

Re: LCD Displej

Příspěvek od jova »

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.
Odpovědět