programovanie v c

C,C++,C#

Moderátori: psichac, Moderátori

backo
Nový člen
Nový člen
Príspevky: 61
Dátum registrácie: 01 Jún 2014, 17:22

Re: programovanie v c

Príspevok od používateľa backo » 14 Nov 2020, 17:12

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.
0

pokusnik
Okoloidúci
Okoloidúci
Príspevky: 48
Dátum registrácie: 14 Apr 2009, 00:00

Re: programovanie v c

Príspevok od používateľa pokusnik » 14 Nov 2020, 18:32

Nebo bys mohl místo 4 ks 74HCT595 použít 1 starý teslácký MHE2111.
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: programovanie v c

Príspevok od používateľa peterple » 14 Nov 2020, 21:20

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.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

pokusnik
Okoloidúci
Okoloidúci
Príspevky: 48
Dátum registrácie: 14 Apr 2009, 00:00

Re: programovanie v c

Príspevok od používateľa pokusnik » 14 Nov 2020, 22:55

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.
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: programovanie v c

Príspevok od používateľa peterple » 15 Nov 2020, 08:01

Tak to je dobrý hack. Toto by ma nenapadlo.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

dan21
Ultimate člen
Ultimate člen
Príspevky: 3016
Dátum registrácie: 11 Apr 2007, 00:00
Bydlisko: ZA

Re: programovanie v c

Príspevok od používateľa dan21 » 16 Nov 2020, 21:31

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 :-)
0

Používateľov profilový obrázok
feros
Stály člen
Stály člen
Príspevky: 414
Dátum registrácie: 23 Sep 2010, 00:00
Bydlisko: okres Nitra

Re: programovanie v c

Príspevok od používateľa feros » 17 Nov 2020, 08:44

Existuje aj HD61602 aj keď jeho cena je dosť vysoká
0

wizing
Nový člen
Nový člen
Príspevky: 95
Dátum registrácie: 21 Sep 2017, 09:09
Bydlisko: Žilina
Vek: 40

Re: programovanie v c

Príspevok od používateľa wizing » 05 Feb 2021, 09:55

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
Prílohy
Snímka1.JPG
Snímka1.JPG (17.92 KiB) 4365 zobrazení
Snímka2.JPG
0

Používateľov profilový obrázok
YellowJacket
Pokročilý člen
Pokročilý člen
Príspevky: 503
Dátum registrácie: 05 Feb 2012, 11:58
Bydlisko: Hrinova
Vek: 33

Re: programovanie v c

Príspevok od používateľa YellowJacket » 05 Feb 2021, 11:28

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
0

Používateľov profilový obrázok
Radus
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1497
Dátum registrácie: 27 Okt 2009, 00:00
Bydlisko: Prešov
Vek: 42

Re: programovanie v c

Príspevok od používateľa Radus » 05 Feb 2021, 11:34

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.
0
Naposledy upravil/-a Radus v 05 Feb 2021, 11:35, upravené celkom 1 krát.

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: programovanie v c

Príspevok od používateľa peterple » 05 Feb 2021, 11:35

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
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

wizing
Nový člen
Nový člen
Príspevky: 95
Dátum registrácie: 21 Sep 2017, 09:09
Bydlisko: Žilina
Vek: 40

Re: programovanie v c

Príspevok od používateľa wizing » 05 Feb 2021, 11:42

Vďaka chalani za odpoveď. Zrejme idem na to zle. Idem naštudovať ten datasheet.
0

Používateľov profilový obrázok
Radus
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1497
Dátum registrácie: 27 Okt 2009, 00:00
Bydlisko: Prešov
Vek: 42

Re: programovanie v c

Príspevok od používateľa Radus » 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ť.
0

wizing
Nový člen
Nový člen
Príspevky: 95
Dátum registrácie: 21 Sep 2017, 09:09
Bydlisko: Žilina
Vek: 40

Re: programovanie v c

Príspevok od používateľa wizing » 05 Feb 2021, 12:25

bude to bežať na PIC16F887 ..... pracujem v kompilatore XC8
0

miso156
Pokročilý člen
Pokročilý člen
Príspevky: 648
Dátum registrácie: 06 Dec 2020, 11:46
Bydlisko: Banska Stiavnica
Vek: 38

Re: programovanie v c

Príspevok od používateľa miso156 » 05 Feb 2021, 16:41

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.
0
"No pain, no gain." (KC238)

Používateľov profilový obrázok
Radus
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1497
Dátum registrácie: 27 Okt 2009, 00:00
Bydlisko: Prešov
Vek: 42

Re: programovanie v c

Príspevok od používateľa Radus » 05 Feb 2021, 21:54

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...
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: programovanie v c

Príspevok od používateľa peterple » 06 Feb 2021, 00:01

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.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

wizing
Nový člen
Nový člen
Príspevky: 95
Dátum registrácie: 21 Sep 2017, 09:09
Bydlisko: Žilina
Vek: 40

Re: programovanie v c

Príspevok od používateľa wizing » 06 Feb 2021, 10:57

Už teraz rozumiem ako sa to robieva. Ešte raz ďakujem za radu.
0

romiadam
Ultimate člen
Ultimate člen
Príspevky: 4417
Dátum registrácie: 09 Apr 2008, 00:00
Bydlisko: Wicklow, Irsko
Vek: 47

Re: programovanie v c

Príspevok od používateľa romiadam » 26 Okt 2021, 12:28

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) 3446 zobrazení
ako opustim if podmienku, tak ako je to znazornene na obrazku?

Toto mi funguje:
image.png
image.png (5.35 KiB) 3446 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
0
Prepáčte mi za diakritiku a preklepy - väčšinou píšem z mobilu a ENG klavesnice.
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje

pin
Power user
Power user
Príspevky: 2370
Dátum registrácie: 09 Máj 2009, 00:00

Re: programovanie v c

Príspevok od používateľa pin » 26 Okt 2021, 13:27

Namiesto toho posledného if daj else if.
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok