Při "listování" naskenovanými časopisy Elektrón z 80. let 20. století jsem narazil na zajímavou konstrukci melodického zvonku s mikroprocesorem Z80. Jen pro vysvětlení: Elektrón byla slovenské obdoba českého VTM (Věda a Technika Mládeži) a oba časopisy dnešní mládeži moc a moc chybí. Jen o tom ta mládež neví, protože ji to nezajímá a sere na to. A jen pro úplnost: na Slovensku vycházel též časopis Zenit, což byla zase obdoba našeho ABC - mladých techniků a přírodovědců (se současným ABC už toho nemá mnoho společného).
Časopis Elektrón 1981 |
Časopis VTM 1981 |
Ale zpět k tématu. Univerzální mikroprocesory (např. 8080, Z80, 6502, 6800, apod.) pro mě byly vždy ústředními součástkami pro konstrukci univerzálních počítačů. A je jedno, jestli to jsou počítače pro hraní her, práci s dokumenty, nebo řízení něčeho. Důležité je, že jsou univerzální a dle svého naprogramování mohou sloužit mnoha různým účelům.
Pak jsou tu ale zařízení čistě jednoúčelová. Pro ně dnes využíváme tzv. jednočipy (jednočipové mikropočítače), nebo moderně řečeno mikrořadiče či MCU. Tyto součástky, kromě vlastního procesoru, obsahují i paměti (ROM, RAM), porty a případně další periferie, které se k univerzálním mikroprocesorům musely připojovat externě ve formě podpůrných obvodů (časovače/čítače, řadiče přerušení, A/D převodníky, apod.). Přesto se v minulosti vyskytly ryze jednoúčelové konstrukce osazné univerzálními mikroprocesory, které se obešly bez velké části těchto podpůrných obvodů. Vyjímkou je pevná paměť programu (EP)ROM, která musí být přítomna vždy. A proč jednoúčelové konstrukce? Protože daná konstrukce se v podstatě na nic jiného nehodí a ani změnou řídícího programu už moc jiných využití nevymyslíme. Pojďme si nějaké takové ukázat.
A mimochodem, pvní monolitický mikroprocesor na světě (Intel 4004) také nebyl stvořen pro konstrukci univerzálního počítače, ale jednoúčelové kalkulačky. Že se hodí i na ty počítače se zjistilo až pak:-)
V Konstrukční Příloze Amatérského Radia z roku 1981 je celkem nenápadný článek o hrací kostce s mikroprocesorem (8080). Z článku úplně čiší tehdejší nadšení a euforie z toho, že elektronická zařízení se nadále budou realizovat hlavně softwarově a jen minimálně hardwarově. Tehdy se zkrátka myslelo, že se všude nacpou mikroprocesory a jen SE to nějak naprogramuje. V článku autor předkládá návrh klasické hrací kostky s mikroprocesorem 8080. Přikládá dokonce vývojový diagram a hexadecimální výpis programu (rozklikni schéma níže). Co se HW týká, tak je přiloženo pouze připojení LED a spouštěcího tlačítka na brány obvodu 8255. U zbytku zapojení, autor zřejmě předpokládal, že to každý zná. Koneckonců ono ani moc možností, jak to zapojit není. Ale o tom později.
Hrací kostka s mikroprocesorem 8080 (klikni) |
Už to připojení LED na porty 8255 je dle mě nešťastné. LED hrací kostky totiž můžeme připojit několika způsoby, z nichž bych viděl 3 hlavní (LED naznačené stejnou barvou jsou ovládány společně):
1) Ovládat každou z potřebných 7 LED zvlášť. Na to stačí jedna 8-bitová brána a ještě jeden bit zbyde (třeba na akustickou signalizaci, viz následující kapitola)
2) Ovládat LED ve 4 skupinách (3 dvojice a 1 samotná) tak, aby "vhozená" čísla 2 a 3 odpovídala skutečné hrací kostce a byla diagonálně k hranám kostky. Stačí 4-bitová brána.
3) Ovládat LED ve 3 skupinách (4, 2 a 1 LED). To je sice nejúspornější, ale čísla 2 a 3 neodpovídají klasické hrací kostce a jsou vodorovně s hranou kostky. Opět stačí 4-bitová brána a jeden bit ještě zbyde.
Právě poslední možnost si vybral autor námětu. Podle mě je to ale naprosto zbytečné šetření. Volil bych možnost č. 2. Ten jeden tranzistor už nikoho nepos. snad ani v roce 81.
Co se týká přiloženého vývojového diagramu prográmku, přijde mi to nějaký divoký. Asi bych to napsal jinak. Když už tam ten procesor máme, dá se s tím trochu pohrát. Udělat třeba efektní zpomalující se dotáčení kostky, signalizovat připravenost na další hod, akustickou signalizaci a podobně.
A taky bych nepoužil obvod 8255, ale výstupní port bych relizoval obyčejným TTL latchem (74174, 74175, 74273, 74374, 74574, apod.). Výhodou je, že tyto obvody dokážou budit LED přímo a nepotřebujeme tak posilovat výstupy tranzistorem či hradlem, jako u 8255. Aby se nemusel invertovat zápisový signál /IOWR, schválně vybírám latche zapisující náběžnou hranou. Vstupní port bych nepoužil žádný a spouštěcí tlačítko bych připojil na vstup přerušení INTR procesoru 8080. Buď přímo, nebo přes tranzistor, jako u PMI-80. Je však nutné vytvořit nový program.
Co se paměti programu týká, možná by stačila i PROM 74188 (32 Byte), ale viděl bych to spíše na EPROM 2716 (2 KB). Z ní by pochopitelně byl využit jen zlomek, a tak není nutné využívat všechny adresové bity. Paměť RAM není nutná vůbec. Prográmek si musí vystačit s interními registry procesoru. Bacha na to, že díky absenci externí RAM nemáme k dispozici zásobník! Čili veškeré instrukce pracující se stackem jsou zapovězeny, což se týká i tvorby prodprogramů, včetně toho pro obsluhu přerušení! Návrat musí být nepodmíněným skokem. Na druhou stranu zase díky absenci RAM nepotřebujeme řešit žádné dekódování adres.
Mikroprocesor 8080 ke své činnosti potřebuje dva základní podpůrné obvody, které s ním dohromady tvoří tzv. Svatou trojici. Jedná se o generátor hodin a resetu 8224 a dále o dekodér stavového slova a budič datové sběrnice, tzv. systémový řadič 8228. Oba obvody se sice dají nahradit (viz RST 83), ale takové náhrady jsou obvodově mnohem náročnější. Systémový řadič 8228 lze dokonce zcela vypustit (viz. RST 84), ale pokud chceme kostku spouštět pomocí přerušení, není to dobrý nápad. Obvod 8228 totiž při požadavku na přerušení může dodávat na sběrnici kód instrukce RST7, díky připojení /INTA na +12V přes odpor 1K. Zkrátka bych se Svaté trojky držel. Celkové schéma takové kostky by mohlo vypadat nějak takto (není to podrobné schéma, ale postavit se to podle toho dá):
Návrh úsporného konkrétního zapojení kostky s CPU 8080 |
Jako výstupní port jsem zvolil 6-násobný D-latch 74174. Na vlastní kostku využijeme 4 výstupy. Pátý výstup ovládá LED označenou jako READY signalizující připravenost kostky na další hod (po povolení přerušení EI). Akustický výstup sice původní kostka nemá, ale hned v další kapitole se o něm hovoří, takže toto zapojení jsou v podstatě 2 kostky v jedné:-)
Jak je ze schématu vidět, je k relizaci zapotřebí celkem 5 integrovaných obvodů vyšší integrace z nichž jeden (EPROM) je nutné naprogramovat. A to se vyplatí :-) Třešničkou na dortu je pak nutnost použít napájecí zdroj se 3 hladinami napětí: +5V, +12V a -5V. Jelikož těch -5V je potřeba pouze pro procesor 8080, mohlo by stačit jeho nouzové generování ze systémového taktu, viz. RST 83. Celé zapojení lze používat také jako jednoduchý základní tester obvodů Svaté trojky, pokud si tedy nechcete "ojíždět" patice třeba ve svém v PMI-80. Ale v tom případě bych tam přeci jen přidal vstupní port, třeba v podobě 74367(8) s nějakými tlačítky a DIP spínači. A nebo dobřééé, nechal bych tam ten 8255, ať se může testovat i ten...
Jen pro dokreslení. Elektronická hrací kostka se dá realizovat mnohem jednoduššeji za pomoci 2-3 integrovaných obvodů nízké integrace. Ostatně jedna taková ze dvou obvodů TTL (7493 a 7400) je v KP 1981 na stejné stránce, jako zde uvedený článek o kostce s mikroprocesorem. Další (s 7490 a 7400) je třeba v AR A 6/1987. Spousta kostek byla publikována nejen v AR, ale také v ABC, VTM a další literatuře hlavně v 80. letech min. století. Je pravda, že při použití pouze 2 IO si tvůrci museli pomáhat diodami. Proto se setkáváme i s kostkami se 3 TTL IO, viz. například modul EMO 16 (rozklikněte náhled EMO 16 a uvidíte schéma). Při použití jednočipu vystačíte s nějakým maličkým 8-pinovým (viz. moje kostka s Attiny 85) a v krajním případě i 6-pinovým.
Tato kostka volně navazuje na kostku předešlou. Rozdíl je pouze v tom, že konstka nezobrazuje "hozené" číslo na LED diodách, ale vypípává jej na reproduktorku. Těžko říci, jestli to je lepší, než zobrazení na LEDkách. Možná pro slabozraké, či nevidomé. Opět je uveden hexadecimální výpis programu (rozklikni schéma níže). "Schéma" je sice o chloupek podrobnější, ale v bloku procesorové skupiny chybí paměť programu.
Pípající hrací kostka s mikroprocesorem 8080 (klikni) |
Co se týká praktické realizace a poznámek k ní, platí totéž, co je uvedeno u předchozí kostky v jejímž konkrétním zapojení je repráček už rovnou zakreslen. Obě kostky by pochopitelně bylo možné realizovat i s procesorem Z80, 8085, nebo jiným. Například u toho Z80 odpadají obvody 8224 a 8228. Ovšem pro sestavení oscilátoru stejně potřebujeme nějaká hradla, takže reálně uspoříme jediný IO (8228). Výhodou je ale jediné napájecí napětí +5V.
Pípající kostku by také bylo možné sestavit z diskrétních logických obvodů, ale už by to bylo mnohem složitější (ne však nemožné). Proto je zde použití mikroprocesoru celkem oprávněné, zejména pokud by se použil Z80. Článek sice vyšel v době, když už existovaly vhodné jednočipové mikropočítače (např 8048), ale to bylo v civilizovaném světě. V našem komunistickém prdelákově to byla hudba budoucnosti.
Tato konstrukce byla prvotním impulsem pro vznik tohoto článku. Je zde popsaný melodický zvonek s mikroprocesorem Z80 a pevnou pamětí EPROM 2716 (ta ovšem nemá vstup PGM, ale /OE). Oscilátor je sestaven z hradel 74132 (NAND Schmitt) a výstupní port je realizován klopným flip-flop obvodem typu D z obvodu 7474. Pak je tu ještě NF zesilovač s tehdy populárním MBA810 a lineární stabilizátor 7805. Procesor není taktován krystalem, ale jednoduchým RC oscilátorem. Schéma sice obsahuje konkrétní hodnoty součástek, ale přesto by zde měl být uveden i kmitočet oscilátoru, který dle tolerance součástek může být dosti různorodý. U zařízení generujícího zvuk, by mělo být uvedení taktovacího kmitočtu samozřejmostí. Zde to ale nevadí, protože článek neobsahuje ani náznak software a jeho tvorby. Zájemcům prý software na pořádání zaslali z redakce časáku:-)
Není zde popsaný ani princip generování zvuku, ale je snad jasný ze schématu. Každou aktivací signálu /IORQ dojde k překlopení výstupního klopného flip-flop obvodu D (7474). Pro jeho překlopení tedy stačí instrukce IN nebo OUT a to bez ohledu na její parametry! Potíž je v tom, že si instrukce musíme stále počítat, abychom klopný obvod na konci hraní neponechali nastavený tak, že výstup bude v log. 1. Také po zapnutí, či resetu, by to chtělo výstupní klopák nulovat, což se ovšem dá snadno zařídit propojením vstupu /RESET procesoru se vstupem /R klopného Déčka. Další možností je nulovat 7474 třeba signálem /WR a ke generování zvuku používat výhradně instrukci IN a po přehrání vložit jednu OUT. A nebo ještě lépe nulovat výstupem /HALT, pokud se procesor po odehrání melodie uspává. Což by asi měl. A nebo to udělat, jako v konstrukci z další kapitoly :-)
Melodický zvonček se Z80 (klikni) |
Zvonek pracuje ve dvou režimech, kdy zahraje buď melodii (postupně vybírá jednu z několika předdefinovaných), nebo zazní gong. Režim se volí přepínačem a zvonkové tlačítko pak aktivuje jedno ze dvou přerušení. Maskovatelné /INT či nemaskovatelné /NMI. Vlastní program bude nejspíše pracovat tak, že jen nastaví a povolí přerušení a čeká na jeho aktivaci. Buď v nekonečné smyčce, nebo raději uspaný instrukcí HALT. Pak zahraje příslušné zvuky a buď se znovu zacyklí a nebo uspí.
V článku (po rozkliknutí schématu) je však ještě jedna zajímavost. A sice zmínka o možné náhradě procesoru Z80 (U880) procesory MHB 8080 či MHB 8085! To není nic neobvyklého, ale co to označení MHB 8085? Že by se v Tesle tenkrát uvažovalo o výrobě MHB 8085? Nebo už byl dokonce vyroben? A nebo autor myslel obecný 8085 a tak nějak automaticky přidal předponu MHB?
V roce 1990 byla v červeném amáru publikovaná jiná konstrukce melodického zvonku s univerzálním mikroprocesorem. Podle popisu byla inspirována zapojením z časopisu Funkamateur 4/86, což se možná týkalo i toho z Elektrónu 6/88, protože jsou si opravdu velmi podobné. Opět je použit mikroprocesor Z80 a paměť 2716. I výstup je realizován klopným obvodem D 7474, ale tentokrát to není zapojen jen jako tupý flip-flop, ale klasický latch, do kterého se opravdu zapisují data (bit D0). Čili k výstupu je nutné používat instrukci zápisu buď do paměti (LD), nebo do periferie (OUT). Výhodou je to, že nad výstupním stavem Déčka máme plnou kontrolu.
Melodický zvonek se Z80 |
Druhá polovina obvodu 7474 slouží k "umravnění" a vydělení RC generátoru hodin pro CPU. Na rozdíl od předchozí konstrukce je zde již uveden přesný kmitočet a zapojení obsahuje i trimr na jeho doladění. Jediné, co v zapojení postrádám, je pullup odpor (cca 330R) na výstupu TTL děliče, protože hodinový vstup Z80 vyžaduje úrovně CMOS.
Celkově je ale toto zapojení mnohem propracovanější a promyšlenější. Počínaje řízením výstupu a konče řízením napájení. Zvonek je napájen z baterií a pokud se zrovna nehraje, je napájení celého zvonku vypnuté! Způsob vypínání a zapínání napájení doporučuji prostudovat. V článku je to dobře popsané. Zajímavý je také náhodný výběr přehrávané melodie na základě doby držení zvonkového tlačítka.
Co se týká software, článek obsahuje i popis jeho tvorby. Je zde náznak kódu a tabulky pro výšku a délku generovaného tónu. Celý program zde uveden nebyl, ale podnikavý autor již tenkrát nabízel jeho zaslání, pochopitelně za příslušný obulus.
Jednoúčelových konstrukcí s univerzálními mikroprocesory bylo pochopitelně publikováno mnohem více. Níže je seznam několika namátkou vybraných. Většinou jsou to ale konstrukce, které se svým zapojením v podstatě neliší od zapojení univerzálního mikropočítače a pouze disponují specifickými periferiemi a vhodným naprogramováním:
Oktávový dělič kmitočtu s mikroprocesorem, ST 8/80 (8080)
Mikropočítač 8080 s programováním pamětí EPROM, ST 11/80 (8080)
Regulátor teploty s mikroprocesorem, SO 12/82 (8008)
Inteligentní číselnice s mikroprocesorem, ST 1/83 (6800)
Mikropočítač obnovuje původní výšku tónů zrychlené i zpomalené nahrávky, ST 1/83 (8080)
Přístroj pro měření přechodových odporů řízený mikroprocesorem, SO 4/83 (??)
Zabezbežovací zařízení, AR B 2/93 (Z80)
Světelné noviny, KTE 6/93 + CPU karta KTE 5/93 (Z80)
Hodiny s budíkem, KTE 9/94 (Z80)
Titulkovač k videu, PE AR 3,4/1996 (Z80)
nepočítám různé interfejsy k tiskárnám (např. s JPR-1, resp. Z80 v ME 1990), nebo interfejs pro Atari a tiskárnu s 8080 tamtéž
a taky nepočítám šachové počítače, videoherní automaty a konzole a podobný záležitosti, protože mi to prostě nepřijde tolik zajímavý.
Stejně jako v případě hracích kostek, i melodických zvonků postavených z diskrétních obvodů bylo publikováno mnoho. Obvykle se používaly TTL obvody řady 74xx a jádrem vždy byl binární čítač (zpravidla 7493) a buď dekodér 1zN (obvykle 74154), nebo naprogramovaná pevná paměť PROM. Tyto zvonky lze nalézt například v těchto amárech: AR A 10/81, 7/83, 1,2/85, nebo "kultovní" konstrukce z 10,11/85.
Zajímavostí pak byly zvonky využívající "strojek" z tehdy nesmírně populárních digitálních hodinek s melodiemi, ke kterému stačilo připojit pouze tlačítko a zesilovač. A pochopitelně vhodné napájení. Tyto zvonky naleznete v AR A 10/88 či 2/89.
Avšak už v roce 1988 vyšlo zapojení zvonku se specializovaným obvodem UM3482 (nebo CIC4820), který uměl zahrát 12 melodií (AR A 9/88). Dnes by se pro konstrukci melodického zvonku použil asi právě podobný specializovaný obvod, nebo naprogramovaný jednočip. Ale ono to v podstatě bude to samé:-)
Dva melodické zvonky jsem objevit také v knize Amatérská elektronika v domácnosti a při rekreaci (Arendáš, Ručka). První je klasický TTL (7493 + 74154), ale ten druhý, to je pecka! Je čistě analogový a k přepínání tónů melodie slouží otočný přepínač poháněný elektromotorem! Motorek se rozeběhne stiskem zvonkového tlačítka. Zastavení motoru po dokončení hraní zajišťuje vačka na jeho hřídeli, ovládající rozpojovací kontakt:
Melodický zvonek s TTL obvody |
Melodický zvonek s elektromotorem |
Při pohledu na všechna zapojení zvonků s diskrétními součástkami zde dává (na rozdíl od hracích kostek) použití univerzálního mikroprocesoru mnohem větší smysl:-)
PS: a sorry za ten clickbait :-)
Publikováno: 2/2026