HOME

TTL computing

Enkodér hexadecimální klávesnice

třeba pro jednoduchý cvičný počítač



Jeden oldcompák, zajímající se o TTL obvody, mi poslal zapojení enkodéru klávesnice se 16 tlačítky. Zapojení mi bylo povědomé a tak jsem se pustil do pátrání. Vyšlo v čeveném amáru 7/1978. Jak ten čas letí... Nicméně zapojení je opravdu zajímavé a dá se říci i vtipné a nezaslouží si upadnout v zapomění. Šibalsky je zde využit přechod báze-emitor standardního bipolárního NPN tranzistoru. S minimem součástek tak vznikl obvod, který převádí stisk jednoho ze 16 tlačítek na 4-bitový binární kód a navíc máme k dispozici pátý bit, indikující stisk tlačítka. Pokud vám to něco připomíná, tak asi obvod MH1KK1, který vyráběla naše Tesla a který dělá to samé. Nicméně takhle z diskrétních součástek je to hezčí:-)

Původní zapojení využívá vlastností klasických bipolárních TTL vstupů, tedy hlavně toho, že na nich je jakási "slabá" log.1 a jsou schopny dodat i jistý proud (typ. 1,6 mA pro klasickou řadu TTL). Ovšem s modernějšími unipolárními CMOS a CMOS TTL obvody (HC, HCT apod.) by původní zapojení nefungovalo. Je nutné doplnit pullup odpory (ty se ale hodí i při klasických TTL obvodech). Dovolil jsem si doplnit ještě pulldown odpory do bází tranzistorů, ale ty nejsou vyloženě nutné. Až k té čárkované čáře se jedná o původní zapojení pro 16 tlačítek. Pod ní navazuje rozšíření, viz. další text.


TTL kodér hexadecimální klávesnice
Zapojení TTL enkodéru pro 28 tlačítek + SHIFT


Pokud bychom tímto způsobem chtěli řešit klávesničku nějakého cvičného jednodeskáče, je 16 tlačítek málo. Tedy ne, že by s tím počítač ovládat nešel, viz. např. COSMAC VIP, ale je to krajně nepohodlné. Pak se nabízí několik možností. Nejjednodušší je přidat tlačítko SHIFT. Tím máme rázem k dispozici 32 různých kódů a stále nám do 8 bitů zbývají 2 bity.

Já bych to řešil tak, že kromě SHIFTU bych zopakoval ještě ty tři poslední řady kláves (ty s tranzistory) a získal bych tak dalších 12 kláves pro různé řídící účely. Ve spolupráci s tím SHIFTEM tak máme k dispozici 56 různých klávesových kódů a to je myslím na cvičný jednodeskáč ažaž. Využito bude všech 8 bitů (bavíme se hlavně o osmibitech:-))

Přidané klávesy jsou pod čárkovanou čarou. Nad ní je původní zapojení doplněné o odpory (modře). Čtení stavu klávesnice, jež by byla připojena na datovou sběrnici CPU, by v praxi probíhalo přes třístavový oddělovač typu 74244, 245, 3212 apod. Při připojení na nějaký port typu 8255 by již další třístavový oddělovač nebyl nutný. Pokud se nepoužijí všechny bity, je pochopitelně nutné ty nevyužité uzemnit

Jelikož je funkce naprosto zřejmá ze schématu, pochopitelně jsem to neověřoval. Ale pak mi to nedalo (nerad publikuju něco, co jsem si nepostavil) a vyzkoušel jsem alespoň jednu řadu s tranzistorem. V klidu obě LED svítí, po stisku tlačítka zhasnou. Funguje to s bipolar TTL i CMOS:-)


TTL kodér hexadecimální klávesnice
Ověřovací zapojení fragmentu TTL enkodéru


Většina lidí si teď asi ťuká na čelo. Vždyť klávesnice se přece dnes řeší maticí obsluhovanou softwarově. To je sice pravda, ale co když vás baví spíše hardware? A co když uvažujete o stavbě jednoduchého počítače komplet sestaveného z diskrétních obvodů (včetně procesoru)? Takový počítač nebude mít výkonu nazbyt a tak se mu jakákoliv HW podpora hodí.

Tento jednoduchý enkodér pochopitelně neošetřuje zákmity kontaktů spínačů (tzv. debouncing), to se už opravdu musí řešit softwarově opakovaným čtením. Ale i tak je obsluha takovéto klávesnice výrazně snadnější a rychlejší. Toto vtipné zapojení enkodéru je navíc i jednodušší, než třeba enkodér klávesnice mikropočítače BOB-85 (KP AR 1984), který vyžaduje přepínací tlačítka. Velmi podobně je řešen i enkodér hexaklávesničky popsaný v článku Jednodeskáč ze Sdělovačky.

Už před lety jsem navrhl a prakticky vyzkoušel i TTL enkodér pro 64 kláves (rozšiřitelný i na 128, počet není dogma), který provádí debouncing. Jednalo se o obdobu klávesnicové části kontroléru Intel 8279 a fungovalo mi to parádně. Možná se někdy dostanu k jeho publikování (když najdu a znovu pochopím to zapojení:-))

Update: téměř přesně po 10 letech od publikace v ARA 7/1978 se výše zmíněný enkodér hexadecimální klávesnice v amáru objevil znovu (ARA 6/1988), tentokrát ve verzi s elektronickou aretací stisknutého tlačítka:


TTL kodér hexadecimální klávesnice
TTL enkodér hexadecimální klávesnice s elektronickou aretací




Literatura:

[1] Amatérské Radio A 7/1978
[2] Amatérské Radio A 6/1988


Update: obvod popisovaný v tomto článku byl původně nazýván jak klávesnicový enkodér. Postupem času jsem si ale udělal trochu pořádek v názvosloví a upravil jsem to. V literatuře se totiž převodníky pro klávesnice nazývají jak enkodéry tak kodéry. Sice jsem nenašel přesné definice těchto dvou pojmů, ale na základě publikovaných konstrukcí jsem si to rozdělil takto: pokud převodník produkuje kód stisknuté klávesy pouze kombinační logikou (vyjma případného debouncingu), jedná se o kodér. Zpravidla se jedná od převodníky 1zN na BIN, případně 2zN na BIN. Pokud převodník využívá sekvenční obvody a s jejich pomocí "skenuje" matici kláves, jedná se o enkodér. Toto rozlišení budu ve svých textech nadále používat.


Publikováno: 7/2020    
Update: 1/2022    



« RET          ↑ TOP ↑          HOME