Ahoj, začal jsem se ve volných chvílích učit s assemblerem. Narazil jsem na nějaké školní stránce na různá zadání. To jedno, které mě zaujalo bylo multiplexní řízení sedmisegmentovek s čítačem/časovačem. Nevíte si někdo rady? Díky.
Fórum › Assembler
Multiplexní řízení sedmisegmentovek pro 8051
#1 matysek123456
Ahoj, začal jsem se ve volných chvílích učit s assemblerem. Narazil jsem na nějaké školní stránce na různá zadání. To jedno, které mě zaujalo bylo multiplexní řízení sedmisegmentovek s čítačem/časovačem. Nevíte si někdo rady? Díky.
Matýsku,
a víš jak multiplex funguje? V prvé řadě musíš zjistit, zda máš displeje se společnou anodou nebo katodou, anebo, zda se spínají log. 1 nebo log. nulou. Dejme tomu, že se mají spínat log.nulami společné katody a do segmentů (anod) pouštíš log. 1 - viz obrázek z tvého simulátoru. Když vyjdu z tvého obrázku, máš 4 místa, která budeš kroutit pořád dokola
Podstata programu je v tom, že uděláš cyklus 4 a v každém cyklu aktivuješ log. 1 současně napájení číslovky a současně budič 7-segmentů. Jde o to, jak máš vyřešena data do číslovky. Řešení je dost. Například data do číslovky může posílat rovnou port 8051. V tom případě přistavíš data do portu pro číslovku 1 a zapneš tranzistor který spíná napájení číslovky. Počkáš okamžik. pak vypneš tranzistor, který pouští proud do číslovky 1. Nastavíš data pro číslovku 2 a zapneš proud do číslovky 2. Počkáš okamžik. pak vypneš tranzistor, který pouští proud do číslovky 2. Nastavíš data pro číslovku 3 a zapneš proud do číslovky 3. Počkáš okamžik. pak vypneš tranzistor, který pouští proud do číslovky 3. Nastavíš data pro číslovku 4 a zapneš proud do číslovky 4. Počkáš okamžik. pak vypneš tranzistor, který pouští proud do číslovky 4. Nastavíš data pro číslovku 1 a zapneš proud do číslovky 1. A tak pořád dokolečka.
Nedostatek toho je, že MCU se baví jen multiplexováním displeje. Přitom tuto činnost zvládne několik TTL obvodů v ceně několika (méně než 10) Kč. Stačí je koupit v bazaru tak dohromady za Kč 50, pospojovat a máš multiplexovaný displej bez 8051 a bez programování.
Rychlost cyklu ať již softwarového s 8051 nebo hardwarového s čítačem by měla být při 4 číslovkách tak 120 Hz až 160 Hz. Jde o to, že když bude cyklus pomalý, budeš vidět blikání číslovek. A když bude cyklus moc rychlý, budou číslovky málo svítit, budeš muset snížit hodnoty odporů pro segmenty aby jimi tekl větší proud, což také není dobré (výsledkem je namáhání LED diod v segmentech a větší rušení ze zdroje)
Ještě takovová obecná poznámka. Týká se výuky... Matýsek (nic proti jeho dotazu a nic ve zlým Matýsku ), ale právě toto je exemplární příklad chybné výuky v Česku. Prostě, začíná se úplně " od konce". Správný postup výuky programování od začátku je následující.
- naučit se znát hardware, tedy to co chceme programovat. V daném případě je nutná znalost logických obvodů. Je potřerba vzít si katalogové listy a probrat a naučit se nazpaměť funkce obvodů od 7400 až někam k 74573. To je absolutní základ. Je to stejné, jak když chcete být překladatelem, z nějakého jazyka. Také se musíte naučit slovíčka a mluvnici a nemůžete hned začít překládat bez znalosti jazyka.
- je potřeba se naučit, jak se obvody sestavují, jak se spojují, jak se z nich vytvoří multiplex displeje. V tomto případě postačí koupit si pár obvodů, např. 2 tranzistory, 4 odpory, 2 kondenzátory, z kterých si uděláte oscilátor, k tomu posuvný registr nebo čítač s dekodérem , dále budič LED , 7 odporů a LED displej. To si sestavíte na napájivém poli a vyzkoušíte jak to funguje. Budete pozorovat, jak se postupně rozsvěcují jednotlivé číslovky, jak změnou hodnot kondenzátoru nebo odporu se mění čas svícení a jas segmentů LED displeje.
- když pochopíte činnost multiplexu, nakreslíte si vývojový diagram, tedy PROGRAM a rozhodnete se, co z těch součástek, logických obvodů, nahradíte mikropočítačem nebo mikroprocesorem.
- v posledním kroku už zbývá váš PROGRAM tedy vývojový diagram zakódovat nějakým jazykem nebo assemblerem do binárního tvaru pro mikroprocesor nebo mikropočítač. Můžete váš program, vývojový diagram, také popsat jazykem Verilog a místo do mikropočítače jej zapsat do CPLD , třeba Xilinx 9536.
Pak budete umět programovat.
#5 Jerry
hele Žeryku, pořid si nepájivé pole, sadu drátků, zaběhni do tvého oblíbeného elektrošopu, kup si několik TTL obvodů a zbastli si doma multiplexer. Na této stránce máš kompletní návod a popis:
http://www.jplabs.co.uk/edu/bh112.html
aspoň se něco kloudného naučíš. A až tohle zmákneš a bude ti to jasný, pak přemýšlej, jak ty obvody popsat Verilogem do CPLD nebo zmikropočítačovat.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Multiplexní řízení sedmisegmentovek pro 8051 — založil matysek123456
Program pro 8051 — založil Wexter
Nestíhačka.cz - nový startup pro řízení projektů — založil Ljuk
Infraport s 8051 — založil off01
Assembler 8051 — založil lucie