Multiplexní řízení sedmisegmentovek pro 8051 – Assembler – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Multiplexní řízení sedmisegmentovek pro 8051 – Assembler – Fórum – Programujte.comMultiplexní řízení sedmisegmentovek pro 8051 – Assembler – Fórum – Programujte.com

 

7. 6. 2023   #1
-
0
-

Díky za rady v minulém dotazu. Už jsem si to dostudoval :) a skoro to mám.

Teď mám problém s tím, že když mám zaktivované segmenty na P1, tak jakým příkazem je zase všechny vypnu?

Díky

Nahlásit jako SPAM
IP: 37.48.50.–
remmidemmi0
Věrný člen
7. 6. 2023   #2
-
0
-

#1 matysek123456
když pošlete například na P1 : 1001 0110  (dekadicky 9 6 ) a chcete pak tento stav deaktivivat, pošlete tam 0000 0000 nebo jestliže používáte negativní logiku, pošlete 1111 1111 .... záleží co máte na portu P1 navěšeno. Musíte domyslet, že Vaše kódy se ve finále zpracují v externím hardware napojeném na ten port P1, tedy "zpracují se" v nějakých tranzistorech, LED diodách atd.

Nahlásit jako SPAM
IP: 89.24.42.–
7. 6. 2023   #3
-
0
-

#2 remmidemmi
Díky za odpověď. Myslel jsem, jestli není nějaká konkrétní funkce např clr, atd...

Nahlásit jako SPAM
IP: 37.48.50.–
7. 6. 2023   #4
-
0
-


   MOV P3, #0xF7 ; Zapne první displej (katoda 1)
    MOV P1, #11111001b    
    ACALL DELAY  
tady konkrétně Vaše rada nefunguje a zobrazené segmenty svítějí dál i když zapnu další sedmisegmentovku

Nahlásit jako SPAM
IP: 37.48.50.–
remmidemmi0
Věrný člen
7. 6. 2023   #5
-
0
-

Nicméně, z hlediska učení se assembleru , ať už jakéhokoliv, pro jakýkoliv CPU, MCU, je multiplexování portů asi dobrým výcvikem. Z hlediska praktické realizace, to moc smysl nemá. Když to domyslíte do konce, tak jaké obvody CPU v multiplexovaném hardware vlastně nahradí? Je to několik pouzder TTL. Budiče displete nenahradí, odpory pro LED nenahradí. Cenově vychází MCU i CPU dražší a musíte řešit software. Z hlediska servisovatelnosti takového zařízení, je multiplex z TTL lepší. I za 20 let bude fungovat a když se porouchá, ten vadný obvod budoucí opravář sežene a vyymění. Ale když se porouchá multiplexovaný displej s 8051, nikdo to neopraví, protože 8051 nebude dostupná a o programu uvnitř MCU nebude nikdo tušit jak to napsat, na čem naprogramovat atd atd. Bude ve stejné situaci jak dnešní opraváři procesorových zařízení z doby před 20 lety. Paradoxně dnes opravíte třeba 30 let starý měřák Racal Dana s multiplexovaným displejem, postavený celý na TTL obvodech, než moderní měřák s mikropočítačem. Běžně dokážu opravit staré kalkulačky z  RTL nebo TTL obvodů z počátků 70-tých let, protože ty obvody pořád existují. Ale opravit 5 let starý krám z Číny prostě nejde, protože má mikropočítač a nikdo neví co je v něm.

Nahlásit jako SPAM
IP: 89.24.42.–
remmidemmi0
Věrný člen
7. 6. 2023   #6
-
0
-

#3 matysek123456
uf, konkrétní funkce :) neznám funkce ke kdejakému CPU, MCU. Pod pojmem 8051 se dnes myslí kde co.  CPU 8051 má celé stádo nadstaveb a vylepšení. Třeba 80535 nebo 80537 od Siemense nebo 80552 od Philipse ... Funkce "clear port" nebo "set port", může být v některých assemblerech, v jiných ne, může to být část knihovny atd atd.

Nahlásit jako SPAM
IP: 89.24.42.–
7. 6. 2023   #7
-
0
-

Tohle je o čem mluvím... Na prvním displeji chci pouze jedničku, ale přenáší se mi tam i čtyřka z předešlého

Nahlásit jako SPAM
IP: 37.48.50.–
remmidemmi0
Věrný člen
7. 6. 2023   #8
-
0
-

#4 matysek123456
MOV P3, #0xF7 ; Zapne první displej (katoda 1)
    MOV P1, #11111001b    
    ACALL DELAY  
tady konkrétně Vaše rada nefunguje a zobrazené segmenty svítějí dál i když zapnu další sedmisegmentovku

Jak máte ten multiplex zapojený? Nebo to zkoušíte na nějaké sw simulátoru (viz ten obrázek v původním dotazu). Doporučuju tyhle pokusy dělat na reálném hardware. Prostě si ubastlete nějakou vývojovou destičku se soklem pro MCU nebo si ji kupte hotovou a na ní trénujte vývoj software.

Nahlásit jako SPAM
IP: 89.24.42.–
remmidemmi0
Věrný člen
7. 6. 2023   #9
-
0
-

#7 matysek123456
to je nějaký softwarový simulátor na internetu, že? Můžete sem dát odkaz? Měl by tam být základní popis ksam jsou připojeny segmenty v BCD a kam ty katody/anody a zda je logika pozitivní nebo negativní. Možností je dost, třeba dolní nibble bude BCD kód na segmenty, horní nibble bude ovládání anod/katod a to může být binárně (třeba 1000 kde "1" zapne LED číslovku) nebo v BCD (xx10).

Nahlásit jako SPAM
IP: 89.24.42.–
7. 6. 2023   #10
-
0
-

#9 remmidemmi
Nene, jedná se o assembler pro 8051

Nahlásit jako SPAM
IP: 37.48.50.–
remmidemmi0
Věrný člen
7. 6. 2023   #11
-
0
-

#10 matysek123456
"Nene, jedná se o assembler pro 8051"

No jasně, a ten assembler běží na čem? Na PCčku nebo někde na internetu na nějakém simulátoru? Ten obrázek je z čeho (nemyslím z obrazovky Vašeho PC   ) ale je ze simulátoru někde na internetu nebo to je nějaký softwarový simulátor s assemblerem downloadovaný z internetu... ?

Tady si můžete stahnout fungující assembler 8051, který podporuje mraky derivátů

http://plit.de/asem-51/home.htm

Zbastlete si destičku s nějakým 8051, připojte k němu multiplex displej (přes budiče a odpory) a můžete vyvíjet software.

Nahlásit jako SPAM
IP: 89.24.42.–
7. 6. 2023   #12
-
0
-

#11 remmidemmi
Je to simulátor, který je součástí Assembleru :D

Nahlásit jako SPAM
IP: 37.48.50.–
remmidemmi0
Věrný člen
7. 6. 2023   #13
-
0
-

#12 matysek123456
tak k tomu simulátoru jistě máte popis, jak je ten multiplex zapojený. V podstatě, když budete mít něco, cokoliv navěšeného na port, vždy musíte mít přesný popis. Ať už to je multiplexovaný displej nebo AD převodník nebo cokoliv jiného.

Jestliže máte 4-místný multiplexovaný displej navěřený na 8-bitový port, jeho ovládání bude velmi podobné ovládání klávesnice 4x4. Rozdíl je v tom, že u displeje jsou všechny bity výstupní. 4 bity jsou BCD data a další bity jsou řízení anod/katod číslovek.  Tedy  v cyklu nastavujete bity pro anody / katody (například levý sloupec) a data v BCD k zobrazení (pravý sloupec):

0001   1001    zobrazí na 1.číslovce 9

0010   0011    zobrazí na 2.číslovce 3

0100   0001    zobrazí na 3.číslovce 1

1000   0110    zobrazí na 4.číslovce 6

0001   0111    zobrazí na 1.číslovce 7

atd.

Toto je jen příklad. Můžete mít ovládání anod/katod v dolním nibble a data k zobrazení v horním nibble nebo opačně. A můžete používat kladnou nebo negativní logiku nebo kombinovanou. To musíte znát z popisu simulátoru. V simulátoru vám to bude fungovat bez vložených zpoždění. V reálu na reálném hw budete muset odladit zpoždění mezi změnou číslovek, aby jste dosáhl kompromisu mezi mrkáním displeje a intenzitou rozsvícených segmentů.

Nahlásit jako SPAM
IP: 89.24.42.–
MilanL+1
Grafoman
8. 6. 2023   #14
-
0
-

Dobré by bylo vědět jaký simulátor to máš (odkud jsi ho stáhl).

No nejsem si jist jak ten problém vypadá, zda se ti čísla zobrazují jen na 1. místě nebo zda ti prosvítají mezi pozicemi.

mělo by to být 

nastav pozici
pošli číslo
počkej malou chviličku
vymaž číslo (00/FF)
a to celé opakovat pro další pozice pozice 2. = 0xFB, 3.= 0xFD a pozice 4.= 0xFE

pokud bys na to použil subrutinu případně pro načítání obsahu z paměti lze to čekání vynechat, využije se trvání instrukcí pro skoky do rutiny nebo na přípravu dalšího čísla.

Nahlásit jako SPAM
IP: 91.139.9.–
remmidemmi0
Věrný člen
9. 6. 2023   #15
-
0
-

Poznámka pro všechny programátory, kteří se snaží programovat mikropočítače bez znalosti hardware a pletou si programování a kódováním:

"Programování" je vytvoření popisu programu, například graficky (vývojovým diagramem) nebo textově, popisem například ve Verilogu, anebo když neumíte Verilog, napište si to "po česku, po sedlácku", prostě postup za prvé MCU udělá toto, za druhé MCU udělá toto, atd atd. 

"Kódování" je převod programu popsaného  graficky nebo textově nebo "po česku, po sedlácku" do kódů pro konkrétní mikropočítač. Kódování uděláte nějakým kódovacím jazykem (C++, Python, assembler...)  dnes obvykle v PC. Kdysi se kódování dělalo na terminálu přiopojeném na sálový počítač nebo na vývojovém hardware, kde se vkládaly přímo hex kódy. Mimochodem, ta dávná historie, kdy byl terminál napojený na vzdálený (tzv. "sálový" počítač), není nic jiného než dnešní PC napojený na cloud. Tenkrát byl vzdálený počítač ve firmě, v sálovém výpočetním středisku a co se vyvíjelo, zůstalo ve firmě. Dnes je vzdálený počítač nazýván "cloudem", neví se kde ten cloud je, komu patří, a kdo do něj zezadu čumí.

Doporučuju všem začínajícím programátorům minimálně tyto dvě knihy:

  1. Embedded System Design, autoři Frank Vahid, Tony Givargis, ISBN 0-471-38678-2
  2. Digital Design, autor John F. Wakerly, ISBN 0-13-090772-3

Nahlásit jako SPAM
IP: 89.24.42.–
Kit+15
Guru
10. 6. 2023   #16
-
0
-

#4 matysek123456
Obvykle se to dělá bitovými operacemi instrukcemi, mezi kterými se zavolá DELAY, tedy asi takto: 

MOV P3, #0xFF ; Zhasnutí displejů

MOV P1, #11111001b ; hodnota pro 1. displej
CLR P3.3           ; zapnutí 1. displeje
ACALL DELAY        ; zavolá pauzu
SETB P3.3          ; zhasnutí 1. displeje

MOV P1, #01000110b ; hodnota pro 2. displej
CLR P3.2           ; zapnutí 2. displeje
ACALL DELAY        ; zavolá pauzu
SETB P3.2          ; zhasnutí 2. displeje
; ... atd
Nahlásit jako SPAM
IP: 89.24.40.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
remmidemmi0
Věrný člen
10. 6. 2023   #17
-
0
-

ano to zřejmě funguje. Z toho je ale zřejmé, že nepoužíváte dekodér BCD - 7-segmentů, takže MCU musí používat 2 porty. Jeden pro data (P1) a druhý (P3) pro řízení anod / katod displejů.  Čili, když se opět vrátíme ke schématu skutečného zapojení multiplexovaného displeje  http://www.jplabs.co.uk/edu/bh112.html   , pak je zřejmé, že mikropočítač dokázal nahradit pouze zdroj pulzů pro multiplex (CLOCK GENERATOR) což je časovač 555 v DIP8, dále 2-bitový čítač, což jsou dva klopné obvody v jednom pouzdru DIL16 a dekodér 2-4, což je polovina pouzdra DIL16. Navíc mu místo dekodéru BCD-7-segmentů  a budiče segmentů v praxi přibude ještě 8 odporů na výstupu portu P1 do bází tranzistorů, dále 8 tranzistorů na spínání segmentů + 8 odporů na řízení proudu skrze segmenty.  To je dost chabý výsledek. Navíc při použití MCU je nutný program. MCU nemůže v reálném zapojení dělat nic jiného, než stále objíždět LED displej, protože při jakémkoliv přerušení se prostě displej zastaví a buď nebude svítit nic, nebo bude svítit jediná číslovka, podle toho v kterém momentě cyklu programu se mikropočítač zastavil.

Z tohoto důvodu se v praxi toto nepoužívá. Buď se použije několik TTL obvodů, což vyjde levněji a rychleji, než použití mikropočítače anebo se použijí obvody např. MAX7219 nebo MAX7221, které k MCU připojí 8-místný LED displej sériově. MCU pouze jednorázově odešle data do obvodu MAX7219 nebo MAX7221 a dále se už o zobrazování nestará. Zkuste si tedy napsat program, kterým odešlete a zobrazíte nějaká data na displeji připojeném na MAX7219.

Nahlásit jako SPAM
IP: 89.24.42.–
11. 6. 2023   #18
-
+1
-
Zajímavé
Kit +

Mikrokontrolér stojí 50 centů, má menší příkon než několik TTL obvodů, zabere méně místa na DPS.... a většinou je v aplikaci i z jiného důvodu, než řídit displej, Takže se multiplexovaný displej řeší právě proto aby se ušetřilo pár TTL obvodů.

Nahlásit jako SPAM
IP: 2001:af0:ffe4:85f4:dccd:23ae:1522:afc8...–
11. 6. 2023   #19
-
+1
-
Zajímavé
Kit +

#16 Kit
Obvykle se to řeší "tabulkou dat" pro společné elektrody, protože displej nebývá "hezky" zadrátovaný na piort, většinou je to napřeskáčku.Navíc to umožnňuje pomocí ukazatele vybírat jak společné elektrody, tak data pro zobrazení. K tomu se to dá kombinovat s klávesnicí...

To vše se dělá při obsluze přerušení od časovače aby se nenarušil běh hlavního programu

hu

Nahlásit jako SPAM
IP: 2001:af0:ffe4:85f4:dccd:23ae:1522:afc8...–
Kit+15
Guru
11. 6. 2023   #20
-
0
-

#19 hlucheucho
V pořádku, dělám to tak. Tady jsem to uvedl pro jednoduchost, V reálu to mám cyklem a číslice natahuji přes index.

Ten mikrokontrolér použije každý rozumný konstruktér, tohle vypadá na školní úlohu.

Nahlásit jako SPAM
IP: 89.24.40.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
MilanL+1
Grafoman
11. 6. 2023   #21
-
0
-

#17 remmidemmi
#18 hlucheucho
Ty simulátory vycházejí též z toho, jak jsou dnes stavěné hotové výukové a develop desky typu arduino apod, případně na výuku, aby se studenti naučili určíté způsoby programování.

Co se týče Programování vs Kódování, tam panují 2 rozdílné výklady a pak záleží, se kterým výkladem se člověk setká:

1. výklad bere Programování jako nadřazenou úroveň, pod kterou spadá několik dílčí činností včetně Kódování:
 - Algoritmizace = analýza zadání/problému/požadované funkcionality a vytvoření obecného návrhu řešení => Vývojový diagram
 - Kódování = vlastní tvorba programu na základě Algoritmizace
 - Testování = ověření funkčnosti programu, zda odpovídá zadání

2. výklad rozlišuje Programování a Kódování takto:

 - Programování = vytváří funkcionalitu a používá proměnné (C/C++, C#, Java, Javascript*, Python, PHP ...)

 - Kódování = definuje vzhled místo proměnných se používají značky/tagy (HTML, CSS, XML, JSON ...)

Nahlásit jako SPAM
IP: 185.112.167.–
remmidemmi0
Věrný člen
11. 6. 2023   #22
-
0
-

#18 hlucheucho
Mikrokontrolér stojí 50 centů, má menší příkon než několik TTL obvodů, zabere méně místa na DPS.... a většinou je v aplikaci i z jiného důvodu, než řídit displej, Takže se multiplexovaný displej řeší právě proto aby se ušetřilo pár TTL obvodů.

To je blbost, protože MCU v daném, případě nahražuje pouze dva klopné obvody a jeden dekodér 2-4 a nějaký zdroj hodin. Tyto 3 obvody mohou být třeba HCT nebo HC, nebo z řady CMOS4000 a v tom případě je spotřeba výrazně nižší než u MCU. Nehledě na to, že největší spotřebu má displej, takže otázka spotřeby 3 obvodů CMOS je bezpředmětná. O zabrání místa MCU na DPS ve srovnání s 2 obvody SOIC16 a jedním SOIC8 lze pochybovat. MCU sám zabere více místa, navíc potřebuje ještě krystal, programovací konektor, resetovací tlačítko... a nejvíce místa zaberou spínací tranzistory a odpory. Ty žádný MCU nenahradí a vypustit je nelze.

O jiném použití MCU, v případě multiplexování displeje mikropočítačem jsem už psal nahoře. Tedy znovu: pokud MCU multiplexuje displej, nemůže už dělat nic jiného, protože při každém přerušení a odskoku na jinou činnost se prostě multiplexování zastaví. A podle toho v jaké fázi multiplexu se zastaví, tak buď bude svítit jedna číslovka nebo žádná. Ještě dodám jednu poznámku, která programátorům neznalým hardware uniká:

Jestliže máte LED displej v multiplexu, pak čím vyšší rychlostí multiplexujete, tím kratší okamžik svítí číslovka.  Doufám, že toto je každému jasné. Jenže čím kratší dobu svítí číslovka, tím se zdá lidskému oku, že svítí méně, že má malý jas. Aby se dojem "malého jasu" vyřešil, snižují se hodnoty odporů v segmentech LED číslovky, takže do LED diody každého segmentu jde vyšší proud, než když je LED displej provozován ve statickém režimu. Jinak řečno, v případě multiplexu jde do LED diody (sehmentu číslovky) proudový puls. Podíváte-li se na katalogový list nějakého LED displeje nebo LED diody, zjistíte, že je uveden mezní pulní proud s ohledem na určitou dobu. Až potud je to OK. Avšak nesmí nastat situace, že se multiplexování zastaví a zůstane svítit nějaká číslovka, protože v tom momentě je číslovka ve statickém režimu a jde do ní trvale proud daleko vyšší, než je ve statickém režimu povolen. Dojde pak k poškození LED číslovky.

Simulátor, který toto nesimuluje, je, jak můj děda říkával, na "EnÓno". :)

Nahlásit jako SPAM
IP: 89.24.50.–
12. 6. 2023   #23
-
0
-

#22 remmidemmi
nemůže už dělat nic jiného, protože při každém přerušení a odskoku na jinou činnost se prostě multiplexování zastaví.

Klidně zvládne řídit triak a ještě dělat odpočet času nebo řídit krokový motor a zobrazovat polohu.. Je spousta aplikací, kde s tím není problém. Co se týče HC, HCT a 4000 - ani jedno nejsou TTL a jen málo obvodů z nich dovede budit multiplexovaný displej přímo. Co se týče některých MCU, dokáží budit katody 4-místného LED a pro společné anody musí mít tranzistory (např AVR), stejně jako CMOS. Není důvod to dělat samostatně a proto se to samostatně už moc nedělá. Pro velkosériovou výrobu se to řeší MCU na zakázku s budiči na čipu, u malosériové to řeší mikrokontrolér a tranzistorové pole. A u kusové vlastně taky, protože to řešení je osvědčené, unifikované, levné na výrobu. Obvod 7447 je sice stále k sehnání, ale za nemalé peníze. Stojí tolik, co slušně výkonný, hardwarově dobře vybavený MCU.

Ještě jedna výhoda MCU: umí zobrazit "uživatelské" znaky, což asi běžné CMOS nebo TTL dekodéry neumí. Není tedy problém zobrazit pomlčku, malé o, malé nebo velké C ... A tak na 3 místa sedmisegmentového displeje jde napsat např. Err.... Dá se s tím hodně kouzlit a pouťové efekty prodávají i takto jednoduché věci.

ještě něco z praxe: satelitní přijímače Amstrad v 90 letech měli obyčejnou 8051 s flash pamětí programu. Řídilo to celý přijímač vč. multiplexovaného LED displeje přes tranzistorové pole. Přijímače Pace měli budiče přímo v (zakázkovém) MCU odvozeném od 8051.

hu

Nahlásit jako SPAM
IP: 2001:af0:ffe4:85f4:6908:9d47:3573:bfb4...–
Kit+15
Guru
13. 6. 2023   #24
-
+1
-
Zajímavé

Je možné to dělat i obráceně: V hlavním procesu provádět úlohu a občas si přerušením od časovače odskočit přepnout zobrazení číslicovek.

Nahlásit jako SPAM
IP: 213.175.43.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
remmidemmi0
Věrný člen
13. 6. 2023   #25
-
0
-

#23 hlucheucho
píšete blbosti, ale to dělají všichni programátoři, za každou cenu chtějí použít mikropočítač. Než by udělali ze dvou tranzistorů blikač na bicykl, použijí všespasitelné Arduino. Prostě klapky na oči, ucpat uši a nezájem. Vrátím se k multiplexu, mrkněte na datasheet LED displeje Kingbright. To jsou moderní displeje, hodně svítí i při malém proudu. Staticky potřebují 10mA, v multiplexu tak 20-25 mA na segment.  Čili rozsvítíte-li číslici 8 s tečkou v multiplexu, máte pulz 160-200mA přes port. Chcete-mi tvrdit, že mikropočítač toto unese, jo?    Musíte použít budiče, buďto 8 tranzistorů s odpory v bázích nebo budiče motorů od TI (které se ale dělají jen NPN) a nejsou zadarmo. Ani ty tranzistory nejsou gratis. Proto je lepší použít 7447, která má navíc dekodér, takže na obsluhu multiplexu stačí 1 port. Případně přidáte dekodér 4na16 +drivery i do anod/katod, když máte více než 4 číslovky. A už se nám ten přídavný hardware k mikropočítači rozrůstá. Alternativně můžete také použít expandery od Microchipu , které jsou 2x8 bitů a dají velký proud. Jenže ty také nejsou zadarmo a  obsluhují se sériově přes SPI nebo I2C. Pořád je tedy bude muset MCU krmit. Ale to už je lepší použít 7219 od Maxima, kam stačí poslat data jednorázově.

Ohledně těch báchorek, jak mikropočítač zvládne multiplex a ještě spoustu činností okolo.... stačí si vzpomenout, anebo pustit (pokud máte) nějakou kalkulačku. Typicky kallkulačky, používají multiplexovaný  displej. Ty starší LED, později VFD (fluorescenční).   Kalkulačkové obvody nejsou nic jiného než specializovaný mikropočítač s portem pro klávesnici a multiplexovaným výstupem na displej. I pro ten prťavý displej mají budič displeje. Stačí si všimnout jak fungují... displej svítí, MCU multiplexuje. V momentě, kdy stisknete tlačítko, dojde k přerušení, displej zhasne. U některých kalkulaček, pamatuji japonské kalkulačky s VFD displejem, displej nezhasnul ale svítil určitý segment. Poznalo se to držením dvou tlačítek současně. Po uvolnění tlačítka se displej zase rozsvítí a multiplexuje novou hodnotu, vloženou z tlačítka. Když se vložila hodnota a stskla funkce, miikropočítač přestal multiplexovat, displej byl zhasnutý, protože mikropočítač počítal hodnotu funkce. Klasicky to bylo vidět na náročněšjších funkcích, goniometrických, hypobolických, faktoriálech atd.  Po výpočtu hodnoty funkce ji mikropočítašč zobrazil a multiplexoval....  Prostě, v momentě, kdy mikropočítač přestane multiplexovat, tak se nic nezobrazuje, anebo svítí poslední stav na jediné číslovce, dle stavu na portech mikropočítače. S rizikem poškození displeje.  Čím více bude mikropočítač obtěžován jinými úkoly, tím méně bude multiplexovat a zobrazovat. V extrémním případě, kdy bude pracovat na jiných úkolech, nebude zobrazovat vůbec nic. Můžete si to vyzkoušet, vezměte si všespasitelné Arduino a připojte si dvě klávesničky 4x4. Deset tlačítek budou číslice 0 ...9, další tlačítka budou funkce a rovnítko. Napište si program, kterým bude Arduino počítat goniometrické, hyperbolické funkce, faktoriály, mocniny y na x, y-tou odmocninu z x... prostě udělejte si z Arduina vědeckotechnickou kalkulajdu a připojte na Arduino multiplexovaný displej 10-12 míst. Třeba pro inspiraci, můžete si udělat váš vlastní hardwarový emulátor třeba HP-67 kakulajdy a použít všespasitelné Arduino a červený LED multiplexovaný displej.... A pak zadejte nějakou vědeckotechnickou funkci. Uvidíte, jak bude Arduino multiplexovat displej a současně počítat.   

Existuje projekt PX-41   což je hardwarový emulátor kalkulajdy HP-41CV. Používá ATMega mikropočítač, ovšem displej nemá multiplexovaný, má klasický LCD dislej s vlastním obvodem.

Ohledně logiky HC, HCT, ACT adt. To je TTL v CMOSu. HC má rozšířenou úroveň log. stavů, HCT, ACT má standardně +5V napájení a standardní logické úrovně jako měly klasické TTL obvody  Neřeším technologii výroby, ta mne jako uživatele nezajímá. Řeším spotřebu, rychlost logiky a použitelnost.

Nahlásit jako SPAM
IP: 89.24.50.–
remmidemmi0
Věrný člen
13. 6. 2023   #26
-
0
-

Další pěkná zhovadělost kterou dnešní dělají programátoři neznalí hardware, je multiplexování digitronů. Na internetu najdete dost příkladů digitálních hodin s Arduinem nebo jiným 8-bitovým mikropočítačem, kde na porty navěsí tranzistory a na ně připojí digitrony. Digitrony napájejí +180V a multiplexují třeba 120 Hz. Tak tohle dokáže vymyslet jen idiot, který si neuvědomuje jak digitron funguje. Tímhle způsobem se digitron velmi namáhá a ničí. Digitron se sice multiplexovat dá, ale hardwarové řešení je dost složité. Není to tak jednoduché, jak u LED displeje. Třeba v měřících přístrojích, kde byly digitrony nebo v digitronových kalkulačkách, se digitrony nemultiplexovaly.

Nahlásit jako SPAM
IP: 89.24.50.–
MilanL+1
Grafoman
13. 6. 2023   #27
-
+1
-
Zajímavé
Kit +

Já myslím, že obě zapojení mají své opodstatněné využití v závislosti na aplikaci a režimu provozu.

Nahlásit jako SPAM
IP: 91.139.9.–
13. 6. 2023   #28
-
0
-

#24 Kit
Ano, tak se to většinou dělá.

hu

Nahlásit jako SPAM
IP: 2001:af0:ffe4:85f4:64b0:25e9:fd38:e78d...–
13. 6. 2023   #29
-
0
-

Multiplexování digitronů není výstřelek dnešní doby. V minulosti i dnes jde o peníze. V minulosti cena MH74141, dnes velký počet a cena spínacích tranzistorů.

I multiplex LED displeje je vlastně o penězích.  74LS47 má Farnell poslední 2 kusy, cena 42,- Kč. Za ty peníze mám AT Tiny, UL 2003 (katody) a 4ks spínacích PNP tranzistorů pro spol. anody. A v tom AT Tiny postavím celé digitální hodiny i se stopkama a budíkem. Z logických obvodů to neuděláš ani za dvojnásobek. Když to budeš dělat z logických obvodů, nemá smysl použít multiplex - roste složitost zapojení bez valného přínosu. Jedno místo displeje = jeden dekodér není tak problematické, dekodéry schopné budit 6 - 8 mA na segment jsou dostupnější.

Blikačka na kolo: pokud umí to, co obyčejná čelovka, tak by zvítězil MCU za 9,50 Kč.Ono přepínat dvěma tlačítkama stavy malá bílá, velká bílá, modrá, červená, zelená, bliká malá bílá, bliká červená by lepit z jednotlivých obvodů bylo složité, velké (jak se to tam vejde?) a dražší jak materiálem, tak prací (každá osazená součástka se počítá).  Cena DPS (počítá se z její ploch\y) a práce na osazování násobená počtem kusů většinou pak vysoce převyšuje náklady na vývoj. U blikaček pak vítězí čínský přístup: levná pracovní síla, dotovaný vývoj, dotovaný vývoz a velká kvantita výroby- a máme tady levný zakázkový čip pod kapičkou epoxidu na jednoduché jednovrstvé DPS. Zakázkový čip je MCU (nějaké známé jádro) s mikroprogramem doplněný o spínací tranzistory. Žádná atomová věda a tak to stojí pakatel.

Multiplexované LED displeje jsou stálicí pro nízkou cenu a HW jednoduchost. Když zvolím vhodný MCU, unifikované řešení lze mít uložené na HDD a zařízení pak "sekat jak Baťa cvičky" (v podstatě jen změnou SW).

hu

Nahlásit jako SPAM
IP: 2001:af0:ffe4:85f4:64b0:25e9:fd38:e78d...–
remmidemmi0
Věrný člen
18. 6. 2023   #30
-
0
-

Takhle vypadá profesionální multiplex LED displejů.

https://www.mikroe.com/serial-7-seg-8-digit-board

Vyrábí ho srbská firma Mikroelektronika už min. 10 let, možná 20 let ...  Je to modul za pár babek, který se připojuje k mikropočítačům. Používá integrovaný obvod 7219 od Maxima. Zde je schema zapojení

http://www.jplabs.co.uk/cz/images/8xLED_dsp.jpg

Tohle zná každý průměrný programátor kdekoliv po světě, v asii, na Balkáně, v Jižní Americe. Pouze český "mastiči kódů" o tom ještě nic nevědí a tak stále mastí kódy pro 8051 a multiplexují LED displeje přímo 8051.

Přitom stačí do 7219 poslat jednorázově instrukce, co má svítit na které pozici a obvod 7919 to zařídí.

Nahlásit jako SPAM
IP: 89.24.56.–
Kit+15
Guru
18. 6. 2023   #31
-
0
-
Nahlásit jako SPAM
IP: 78.80.99.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
remmidemmi0
Věrný člen
19. 6. 2023   #32
-
0
-

já to nedával jako reklamu, tak samozřejmě srbský displej je dražší, než čííínský displej. Podstata poznámky byla v použití obvodu 7219 místo dementního muktiplexování pomocí MCU.

Když už jsme u těch cen: na vašem odkaze je cena Kč 54 za displej. Pojďme počítat:

prodejní cena Kč 54.00 minus DPH Kč 9.37  je prodejní cena od prodejce Kč 44.33. Prodejce má marži min. 20%. Tedy nákupní cena prodejce je min. Kč 34.93. Tato cena zahrnuje dopravu z čínských skladů v Polsku a  DPH vybrané při vstupu do EU. Displej se totiž dováží z Číííny po tzv. "Hedvábné stezce", která vede přes Mongolsko, Kazachstán, Rusko a končí v Polsku. Tam se vybere DPH. Polské DPH je 23%. Tedy čííínský výrobce prodává za max. Kč 28.93, což zahrnuje také náklady na dopravu z Čííííny do Polska. To je v přepočtu USD 1.33  Už to začíná být zajímavé, že...    Číííínský výrobce však musí také mít nějaký zisk, ne?  Dejme tomu, že má pouze 20%, takže výrobní cena displeje je USD 1.11. Tato výrobní cena zahruje náklady na součástky a provozní náklady výrobní dílny. Je známo (vám možná ještě ne), že Čííína má vcelku velké problémy s energií. Elektrická energie je v Číííně drahá a je na příděl. Dodává se několik hodin denně a čííínské fabriky vyrábí jen když zrovna jde elektřina.

Takže otázka: jak se čííínský výrobce může dostat na výrobní cenu USD 1.11 , což stěží pokryje ceny součástek?

Odpověď :

  1. použijí se součástky 2.třídy, vyřazené po výstupních testech z výroby pro západní fabriky, které vyrábí v Asii. Kvalita a životnost jde stranou. Životnost není důležitá, naopak, krátká životnost je žádoucí, aby si hlupáci zakrátko koupili další čííínský výrobek.
  2. pracanti, dělníci pracují zadarmo. Použijí se političtí vězni, kteří pracují 14 hodin denně, 7 dní v týdnu.
  3. uplatní se dotace Komunistické strany Číííny. Cílem dotací je srazit ceny, aby Západ (EU) nebyl schopen konkurovat a tedy vyrábět. Tím se vyřadí průmysl v EU a  státy EU se delším časovém horizontu stanou naprosto závislé na Číííně a budou jí "zobat z ruky". Politici v EU budou přijímat rozkazy Komunistické strany Číííny, protože, kdyby Čííína přerušila dodávky zboží do EU, tak se státy EU v podstatě zhroutí. Nebudou mít vlastní průmysl a vybudovat jej, nelze přes noc. To je politika Číííny a všichni, kteří naskupují levný čínský brak, aby ušetřili pár drobných, namísto aby podporovali výrobu v EU, tuto politiku Komunistické strany Číííny podporují. Podporují tím také otrockou práci politických vězňů v Číííně.

Na českém Aukru je mraky nabídek s čínským brakem. Příklad:

https://aukro.cz/elektronicka-zatez-150w-10a-foto-7038394154

Třeba bývalý redaktor časopisu Praktická Elektronika se baví hromadným dovozem čííínského braku a jeho prodejem přes Aukro. A takových lidí je v Česku spousta. Dokud budou hlupáci kupovat, tak bude Čííína prosperovat. Čííína by se zhroutila, kdyby hlupáci ve světě přestali kupovat čííínský brak.

Nahlásit jako SPAM
IP: 89.24.56.–
19. 6. 2023   #33
-
+1
-
Zajímavé
Kit +

U standartní 8051 byste se ocitli v situaci "emulovat softwarově" sériové rozhraní (UART většinou potřebujete na něco jiného). O nic jednodušší než multiplex. Dnes už jen vzpomínka na minulost, kdy 8051 mikrokontrolér stál ranec, specializované obvody byly nedostupné, museli jste vystačit se součástkamií z RVHP, později z GM Electronic

250,- Kč je docela ranec.

Čeští vývojáři už 8051 moc neřeší. Teď je "in" STM32 Ten "drtí" 8051 nejen poměrem výkon/cena, ale především cenou vývojových prostředků. Na 3V logiku byste potřebovali něco jiného. Pro ty, co by to chtěli hledat, tak obvody MAX teď dělají Analog Devices.

hu

Nahlásit jako SPAM
IP: 2001:af0:ffe4:85f4:91e6:4313:7175:8827...–
Kit+15
Guru
19. 6. 2023   #34
-
0
-

#33 hlucheucho
Souhlas. 8051 jsem koupil za 4 Kč a nevidím problém ho použít místo MAX7219.

Nahlásit jako SPAM
IP: 46.135.16.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
remmidemmi0
Věrný člen
20. 6. 2023   #35
-
0
-

#33 hlucheucho
AT89C51 prodává Mouser za Kč 116 . Ale 8051 je "obsolete". Dělám teď programovatelnou klávesnici s 64 tlačítky, 12x LED 7-segment displej v multiplexu a 8x LED dioda. Rozhraní sériové RS232C, USB, CAN a bezdrátové RF.  Kdyby měla 8051 multiplexovat 12 míst displej, tak nestihne nic jiného, anebo bude displej prostě stát zhasnutý. Nehledě na praktickou realizaci, jak na 8051 připojit 12 míst LED displeje + 8 LED diod + 64 tlačítek a ještě sériový port a CAN bus a bezdrátový port    

STM32 v Česku frčí z jiného důvodu, totiž učí se na všech českých školkách, protože svého času nějaký ouřada na Ministestvu školství ČR "doporučil" STM32 jako perspektivní k použití v ČR. Ouřadové na ministerstvech a v Bruselu zejména, vědí nejlépe co je perspektivní.    Nic nového. Pamatuji podobná rozhodnutí v minulosti o perspektivnosti českého CPU 8080 a dekadenci (dekadence = úpadek, neperspektivní) západního CPU Z80. Za pár let, až vymění ouřadu na MŠ ČR, přijde nový ouřada a ten označí zase jíný mikropočítač za "perspektivní" a všichni ho budou používat.  Tahle rozhodnutí jsou příčinou technologické zaostalosti ČR. Dnešní absolventi vědí jen o existenci perspektivního STM32 a všespasitelného Arduina. Jsou líní se cokoliv nového učit a tak s tím chtějí vystačit dalších 40 let. Avšak za 10-15 let přijde nová generace líných absolventů českého školství, kteří budou mít povědomí o jiném "perspektivním" mikropočítači a budou s ním chtít vystačit také dalších 40 let.

Mikropočítačů jsou bohužel tisíce, odhaduji hodně přes 10 tisíc různých typů. Vybrat pro nějaký projekt ten správný mikropočítač, to je dost náročný úkol a bere se v potaz mnoho hledisek. Hledisko, zda mikropočítač "znám", je až na posledním místě.

Návod pro české šetřílky jak získat 80C51 zadarmo:  napište v čínštině oslavný dopis na Říši středu a jejího vůdce, pana Xi. Nezapomeňte se zmínit o neposlušných vzpurných odpadlících na ostrově v Čínském moři a poníženě poproste pana Xi o pár vzorků mikropočítače 80C51, který je důkazem úspěchu čínského pracovitého lidu pod vedením Čínské komunistické strany.  Dopis doneste osobně (ušetříte za poštovné) čínskému velvyslanectví v Praze. Dostanete zadara kolekci čínských mikropočítačů. Opravdu to funguje ....

Nahlásit jako SPAM
IP: 89.24.56.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 38 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý