Stránka 1 z 3

PICAXE a menu na LCD

Napsal: 06 bře 2017, 09:50
od jova
Zdravím chtěl jsem se optat, jak řešíte menu na LCD displeji a výběr v něm.
Už pár dní se snažím o vytvoření něčeho univerzálního, co by nezabíralo příliš místa v paměti a moc se nedaří.
Zatím jsem se dopracoval k variantě přepínání velkých / malých písmen. Viz ukázka: https://www.youtube.com/watch?v=yHgWzmte52E

Kód: Vybrat vše

lcdm1:
serout B.0, baud, (254,135)   
if b8=0 then serout B.0, baud, ("START"):else serout B.0, baud, ("start") endif
serout B.0, baud, (254,193)
if b8=1 then serout B.0, baud, ("POCET KROKU MOTORU"):else serout B.0, baud, ("pocet kroku motoru")endif
serout B.0, baud, (254,152)
if b8=2 then serout B.0, baud, ("POCET SNIMKU"):else serout B.0, baud, ("pocet snimku")endif
serout B.0, baud, (254,213)
if b8=3 then serout B.0, baud, ("NASTAVENI PARAMETRU"):else serout B.0, baud, ("nastaveni parametru")endif
pause 300
return

To ale vyžaduje dvojí texty a tím i velkou náročnost na paměť.

Další variantou je označování řádků vkládáním > před první písmeno řádky, to je už lepší, ale stejně to ještě není ono.

Kód: Vybrat vše

menu2:
serout C.1, baud, (254,128)
serout C.1, baud, (" nastav cas")
serout C.1, baud, (254,192)
serout C.1, baud, (" nastav zvoneni") 
serout C.1, baud, (254,148)
serout C.1, baud, (" nastav hodiny")
serout C.1, baud, (254,212)
serout C.1, baud, (" konec")

if vyber=3 then serout C.1, baud, (254,128) endif
if vyber=2 then serout C.1, baud, (254,192) endif 
if vyber=1 then serout C.1, baud, (254,148) endif 
if vyber=0 then serout C.1, baud, (254,212) endif
serout C.1, baud, (">")
Co mi dělá ale nejvíce problém je, jak na takovémhle displeji vybrat a označit například čas tak, aby bylo jasné že se jeho hodnota bude měnit.
ukázka.jpg
Řadič pro LCD používám z těchto stránek: http://electromag1.wifeo.com/fabriquer- ... icaxe-.php

Re: PICAXE a menu na LCD

Napsal: 06 bře 2017, 10:29
od DavidO
Řadič Hitachi HD44780 umí zobrazovat pozici kurzoru, a to jako podtržení nebo jako bloček. Nastavuje se v rámci příkazu "Display on/off control", viz datasheet řadiče. Pro zvýraznění, že budu měnit hodnotu, bych asi volil ten blikající bloček (případně nejdřív podtržítkem najel na odpovídající místo, pak zmáčknul čudlík na přechod do editovacího režimu, který by byl zvýrazněný tím bločkem).

Re: PICAXE a menu na LCD

Napsal: 06 bře 2017, 13:31
od jova
O téhle funkci vím, bohužel ten Francouz, co jsem koukal tam zřejmě tuhle možnost do převodníku nenaprogramoval. Dokázal by jste to někdo doplnit?
http://sd-2.archive-host.com/membres/up ... _serie.zip

Re: PICAXE a menu na LCD

Napsal: 06 bře 2017, 14:05
od DavidO
Ale jo, naprogramoval ;)
Pošle se to tam přes tu 254 stejně jako třeba příkaz ke změně polohy kurzoru.

Re: PICAXE a menu na LCD

Napsal: 06 bře 2017, 14:06
od jova
A jak? :shock:
Já už na to několikrát koukal a nic tam nenašel. Bohužel mé programátorské schopnosti mají své limity :(

Re: PICAXE a menu na LCD

Napsal: 06 bře 2017, 14:55
od DavidO
serout B.0, baud, (254,něco) slouží k poslání příkazu něco. Čísla větší jak 128 jsou nastavení adresy tedy kurzoru na zvolené místo (podle tabulky na té jeho popisné stránce, 128 je 1.ř. 1.sl. apod). Čísla menší jsou jiné příkazy, viz tabulka 6 na str. 24 v datasheetu zde. Tam je v řádku Display on/off control napsané, co se má poslat pro to které nastavení displeje a kurzoru, význam D,C,B je ještě detailněji popsaný na str. 26. No a když si kurzor zapnu, tak pak bude zobrazovaný tam, kam je právě nastavená adresa pro psaní (např. typicky za poslední právě vypsaný znak).

Re: PICAXE a menu na LCD

Napsal: 06 bře 2017, 16:15
od jova
Dík, něco už to dělá.
Jen mi nevyhovuje ta pozice kurzoru za posledním vypsaným znakem, potřeboval bych jí dostat pod ten znak, aby se tím označil ten který se mění. Nějak na to nemohu přijít.

Re: PICAXE a menu na LCD

Napsal: 06 bře 2017, 17:00
od tomasp
Pohyb kurzoru vpřed/vzad je také popsán v té samé tabulce, je to příkaz "Cursor or Display Shift".
Pro pohyb kursoru vlevo by se podle toho mělo odeslat bitově toto : 00010000
což je decimálně 16.

Takže zavolat

Kód: Vybrat vše

serout B.0, baud, (254,16)
.

Musíš to sám vyzkoušet, já s tímto displejem nikdy nepracoval.

PS: Ještě jsem tady našel stránku, kde autor některé zajímavé kódy příkazů "předžvýkal":
http://www.dinceraydin.com/lcd/commands.htm

Re: PICAXE a menu na LCD

Napsal: 06 bře 2017, 19:27
od fulda
Kurzor se postaví tam, kde je adresa pro další zápis.
Já neznám ty knihovny, ale určitě mají nějaké nastavení pozice odkud chceš psát.

---
Edit: je tam tabulka s řádkama a sloupcema a pak příkaz: serout C.1, baud, (254,148)

Re: PICAXE a menu na LCD

Napsal: 06 bře 2017, 23:04
od jova
Tak dostat tam ten kurzor za text už není problém, ale dostat ho pod tu proměnnou nebo pod text součastně se mi zatím nepodařilo.
Je vůbec otázka zda je to možné? :roll: