Strana 9 z 12

Re: programovanie v c

Napísané: 14 Nov 2020, 17:12
od používateľa backo
Ja mám doma niekoľko modulov LCD s obvodom AY0438 od Microchipu.
Má to sériový vstup, takže do dokáže ovládať ja procesor s malým počtom vývodov.

Re: programovanie v c

Napísané: 14 Nov 2020, 18:32
od používateľa pokusnik
Nebo bys mohl místo 4 ks 74HCT595 použít 1 starý teslácký MHE2111.

Re: programovanie v c

Napísané: 14 Nov 2020, 21:20
od používateľa peterple
Keď to pokusník načal tak urobím pokračovanie. Starý teslácký MHE2111 by sa použiť možno aj dal. (Tiež som ho raz v živote použil do hodín s DCF a s 8051 a päťmiestnym LCD displejom). Ale v tomto prípade s týmto displejom by sa okradol o kontrast displeja.
MHE2111 je totiž navrhnutý na riadenie tých multiplexných LCD displejov čo som spomenul na konci môjho prvého príspevku. V tomto prípade je to multiplexing 1:2. To je taký že jedným vývodom sa dajú riadiť dva segmenty. Ako je to možné? A ešte pri zachovaní toho že stredná hodnota napätia na segmente bude nulová? Nuž tak že teraz spoločná elektróda nebude jedna ale dve. A tiež že napätie na týchto dvoch elektródach nebude mať obdĺžnikový priebeh ale taký divný schodovitý. V závislosti na tom v akej fáze bude obdĺžnik na segmentovom pine voči tým dvom signálom spoločným sa potom dajú dosiahnuť až štyri výsledné priebehy napätia na segmente a tým aj zapnutie a vypnutie hociktorého z dvoch ovládaných segmentov jedným pinom. Ťažko sa to vysvetľuje a tak sem dám obrázok z katalógu obvodu na základe ktorého by to malo byť jasné
image.png
BP1 a BP2 sú tie spoločné elektródy. Sx sú tie segmentové. Multiplex je to 1:2 preto lebo môžeme riadiť dvakrát toľko segmentov ako je pinov S. Takže potom sa dá cez 40 pinový šváb naháňať aj 5 miestny displej.

No a ako vždy je niečo za niečo. V tomto prípade sa za to platí kontrastom. Pretože segment ktorý je vypnutý je vždy pod malým striedavým napätím. A segment ktorý je zapnutý zase nedosahuje plného napätia ako to je bez multiplexu. Vo výsledku to potom vyzerá tak, že číselká nie sú tak kontrastné ako to je bez multiplexu.
No a kedže displej o ktorom sa bavíme má iba jednu spoločnú elektródu. Pripojiť ho na tento radič nie je vhodné.

Ešte doplním že sa dajú robiť aj mocnejšie multiplexy ako je 1:2 a vždy je to za cenu horšieho kontrastu. Čo je vidno na tých alfanumerických displejoch kde jeden znak tvorí strašne veľa pixelov a potom tam je aj veľa znakov či dokonca riadkov. Takže je treba riadiť hafo segmentov. Keď tam štelujete ten kontrast trimrom tak posúvate napätie tej spoločnej elektródy.

Re: programovanie v c

Napísané: 14 Nov 2020, 22:55
od používateľa pokusnik
Obvod MHE2111 se dá použít i pro displej bez multiplexu. Viz
http://elkonst.sweb.cz/dispmhe/dispmhe.htm
Z procesoru by se z nějakého PWM výstupu vytáhl obdélník 60 až 80 Hz se střídou 1:1 (to by bylo místo té 4060) a pak už stačí jen poslat data do MHE2111.

Re: programovanie v c

Napísané: 15 Nov 2020, 08:01
od používateľa peterple
Tak to je dobrý hack. Toto by ma nenapadlo.

Re: programovanie v c

Napísané: 16 Nov 2020, 21:31
od používateľa dan21
http://elkonst.sweb.cz/dispmhe/dispmhe.htm
Som to vyskusal na breadboarde a funguje to :-)
Ma tam malu chybu v Arduino kode bez opravy ktorej to neslape :-)
Ale inac zaujimave :-)

edit:
urobil som aj uz zmienovane PWM na generovanie 75Hz (50%) pre MHE2111.
Slape v pohode :-)

Re: programovanie v c

Napísané: 17 Nov 2020, 08:44
od používateľa feros
Existuje aj HD61602 aj keď jeho cena je dosť vysoká

Re: programovanie v c

Napísané: 05 Feb 2021, 09:55
od používateľa wizing
Nechcem zakladať nové vlákno. Ak to tu nepatrí tak sa ospravedlňujem.
Nevedel by mi niekto poradiť?
Chcel by som si na displeji nokie 5110 nadefinovať vlastné písmo, ale na výšku väčšie ako 8pixelov(8bitov).

Obrázok
tomuto rozumiem tak, že mám 5 stĺpcov a pole znaku bude vyzerať:

Kód: Vybrať všetko

const unsigned char font [ ] [5] =
{
{0b00000000, 0b01000010, 0b01111111, 0b01000000, 0b00000000}//1
}
//päť stĺpcov a zapnuté dané biti/pixeli
Obrázok
keď chcem, ale nadefinovať vyšší znak tak zrejme sa to nerobí tak že na zvyšných 78 stĺpcoch dám nuly aby som prešiel do banky 1 a tam nadefinoval zvyšné pixeli.
poradil by mi niekto ako ten znak správne nadefinovať? .... veľmi pekne ďakujem za radu

Re: programovanie v c

Napísané: 05 Feb 2021, 11:28
od používateľa YellowJacket
Programujes si to podla datasheetu, alebo podla nejakej predlohy na internete? Pokial z internetu, pozri si radsej datasheet -- > https://www.sparkfun.com/datasheets/LCD ... ia5110.pdf

Potrebujes si vytvorit funkciu podobnu gotoxy z pascalu ( funkciu kvoli jednoduchosti a prehladnosti ), a miesto toho, aby si ako spominas, prepisoval stlpce, tak sa proste presunies na danu poziciu a posielas data tam.
Strana 14 - "Set Y address of RAM" nastavis v rozsah 0 <= Y <= 5 a potom "Set X address of RAM" nastavis v rozsahu 0 <= x <= 83 . V tabulke mas uvedene, ktore bity treba nastavit.
Strana 23 - druhy riadok zdola v tabulke, tam je priklad nastavenia X-ovej suradnice

Re: programovanie v c

Napísané: 05 Feb 2021, 11:34
od používateľa Radus
oné...záleží to na funkcii ktorú potom následne používaš na zobrazenie textu, tej musíš predať aj informáciu o tom aký veľký znak chceš zobraziť a podľa toho potom následne nadefinuješ pole...
Samozrejme, ak to riešiš ako low-level, tak potom odpoveď vyššie.

Re: programovanie v c

Napísané: 05 Feb 2021, 11:35
od používateľa peterple
A k čomu tam má byť tých 78 nulových byte? Veď keď je to vysoký font, tak prvých 5 byte bude bank 0 a druhých 5 bude bank 1, zvyšok si už musí poradiť sw čo to "píše" na displej. Ale ani takto by som to nerobil. Podoba znaku s dvojnásobnou výškou, šírkou sa dá vypočítať z toho 5 bytového. To vedelo robiť už PMD-85 pred 30 rokmi. Znaky vedel vykresliť s dvojnásobnou výškou, s dvojnásobnou šírkou a aj s dvojnásobnou veľkosťou na ľubovoľnú pozíciu obrazovky.
Obrázok

Re: programovanie v c

Napísané: 05 Feb 2021, 11:42
od používateľa wizing
Vďaka chalani za odpoveď. Zrejme idem na to zle. Idem naštudovať ten datasheet.

Re: programovanie v c

Napísané: 05 Feb 2021, 12:24
od používateľa Radus
Perteple, ak to pchá do nejakého MCU, neviem či by som práve SW zaťažoval prepočítavaním znaku, asi by som skôr zadefinoval ďalší font na úkor FLASHky...ale nebolo uvedené na čom to bude bežať.

Re: programovanie v c

Napísané: 05 Feb 2021, 12:25
od používateľa wizing
bude to bežať na PIC16F887 ..... pracujem v kompilatore XC8

Re: programovanie v c

Napísané: 05 Feb 2021, 16:41
od používateľa miso156
image.png
Pre pripad na obrazku: Nastav sa na banku 1 (v radici je na to command), postupne vykresli hornu polovicu znaku. Potom sa nastav na banku 2 (ta ista Xova suradnica) a postupne vykresluj dolnu polovicu.
Je to najjednoduchsi pripad, kedy mas vysku pisma 16bitov a znak presne rozdeleny do dvoch baniek.
Pre znak umiestneny medzi tromi bankami musis suradnicu nastavovat na tri krat a este aj do tychto baniek prikladat text ktory do nich zachadza z okrajovych baniek.

Inak, ja som niekedy tak lenivy, ze ak mam dost pamati v mikrokotrolery, tak si vytvorim pole ktore obsiahne cely display, toto pole si "namiesam" ako potrebujem a cele ho vykreslim naraz pri kazdej zmene zobrazenia.

Re: programovanie v c

Napísané: 05 Feb 2021, 21:54
od používateľa Radus
Niečo sa mi marí že pomocou FSMC na STMkach si dokázal namapovať celú pamäť displeja ako časť pamäte RAM a priamo k tomu aj tak pristupovať, dobrá vec...

Re: programovanie v c

Napísané: 06 Feb 2021, 00:01
od používateľa peterple
Radus napísal:
05 Feb 2021, 12:24
Perteple, ak to pchá do nejakého MCU, neviem či by som práve SW zaťažoval prepočítavaním znaku, asi by som skôr zadefinoval ďalší font na úkor FLASHky...ale nebolo uvedené na čom to bude bežať.
Ten PIC je síce prdítko, ale určite je rýchlejší ako bol 8080 toho PMD85. Záleží na tom koľko znakov chce vypisovať. Ak len číslice tak to má 100 byte navyše. Taký smiešny cyklus s ôsmimi loopmi kde je pár rotácií, ANDov a ORov bude určite pod 100 byte dĺžky programu. A výpočet sa stihne kludne počas času čo sa tam tie data budú posielať (predpokladám nejaké SPI rozhranie displeja). Pri celej abecede je to už (26+10)*10 bytov.
To PICko má SRAM 368byte a flash 14kb, Určite to do FLASH vlezie. To nafúknutie na dvonásobok výšky je síce ťažšie ako na dvojnásobnú šírku, ale ako som písal vedelo to PMD85 s 16kB ROM modulom v ktorom bol cely interpreter jazyka BASIC. Možnosti riešenia sme dali, konkrétne
1. definovať font dvojnásobnej šírky, čo koštuje 10byte na jeden znak fontu
2. napísať rutinu ktorá expanduje normálny font na dvojitý (pomerne ľahko sa dá urobiť dvojitá výška, dvojitá šírka a aj oboje dohromady - teda vlastne až 3 rôzne fonty.)
Vybrať si čo je pre neho optimálne si už musí sám.

Re: programovanie v c

Napísané: 06 Feb 2021, 10:57
od používateľa wizing
Už teraz rozumiem ako sa to robieva. Ešte raz ďakujem za radu.

Re: programovanie v c

Napísané: 26 Okt 2021, 12:28
od používateľa romiadam
Cavte ucim sa programovat PIC v C. (ASM mam v malicku, ale tam sa tazko programuju matematicke operacie, tak prechadzam na C. Tam je to malina.)

Ak mam viac if podmienok
image.png
image.png (8.68 KiB) 3583 zobrazení
ako opustim if podmienku, tak ako je to znazornene na obrazku?

Toto mi funguje:
image.png
image.png (5.35 KiB) 3583 zobrazení
ale cital som na internete, ze goto v C-ku nie je vhodne pouzivat, lebo ze to vytvori "spagetovy program". To som nepochopil co tym myslel dotycny. Ako to teda je?

Diki

Re: programovanie v c

Napísané: 26 Okt 2021, 13:27
od používateľa pin
Namiesto toho posledného if daj else if.