Kódový zámek

   Existuje spousta zapojení s logickými obvody a někdy dokonce jen s tyristory, ale vždy je možné používat jen kód, kde se neopakují stejné čísla. Díky tomu je limitovaná i délka kódu. Tento problém by sice bylo možné vyřešit pomocí třeba EPROM, ale zapojení by se neúměrně komplikovalo. Nejlepším řešením v dnešní době je tedy mikroprocesor. K naprogramování mě vedlo především to, že se mi doma válí spousta klávesnic z tuzemských telefonů a chtěl jsem je nějak využít.

Popis zapojení

   Klávesnice je zapojena maticově a je připojena na port P1. Použít lze libovolný typ. V případě silného rušení by mohly být interní zdvihací rezistory s odporem asi 50k v procesoru dost velké, a tak by bylo vhodné zapojit ještě externí odporovou síť s odporem asi 1k. Propojkou na pinech označených MÓD se volí chování zámku. Pokud propojka není zapojena, chová se zámek způsobem kódem zapni, kódem vypni. Se zkratovací propojkou se výstup kódem zapne a po uplynutí programově nastavené doby se sám vypne. Tato doba se mění ve zdrojovém kódu od 4 do 255 vteřin (mnou nastavená je 10). Vlastní kód je nastaven programově a může mít délku až 255 cifer, které se mohou libovolně opakovat (mnou zadaný kód je: 555823).
   Osobně jsem sice odpůrce různých pouťových efektů, jako je blikání a pípání, ale v případě, kdy není k dispozici jiná indikace, jsem udělal výjimku. Díky pípání je třeba hned slyšet, když "vynechá" některé z tlačítek. Souběžně s piezem ještě bliká připojená LED. V případě módu se zkratovací propojkou je každá vteřina indikována bliknutím a poslední 3 vteřiny ještě tónem. Výstup je na vývodu P3.7 a když je aktivní, je v log.0. Přímo vývodem P3.7 lze spínat proti +5V jen asi 20mA a pokud to stačí, není třeba připojovat tranzistory. Proudový zesilovač s tranzistory umožňuje spínat třeba relé s přiměřeným proudem. Napětí je stabilizováno obvodem 78L05 a odběr v klidu je asi 8mA. Snížit ho lze třeba snížením napájecího napětí, protože procesory 89C2051 pracují spolehlivě i na 3V.



   Ke kódovému zámku jsem navrhl i pošný spoj s rozměry asi 50x50mm. Obsahuje vše podle schématu mimo klávesnici, která se připojuje na připravené piny. Na desce plošných spojů je připraveno i místo pro případnou odporovou síť.
DPS v rozlišení 300 dpi, osazovací plánek.

Program pro jednočip

   Na začátku kódu jsou některé konstanty. První z nich je zpožděné vypnutí po době nastavitelné od 4 do 255 vteřin. Další konstanta je doba, po které se vynuluje vnitřní ukazatel pozice v kódu. Tato doba se počítá vždy od stisku libovolného tlačítka, takže pokud po dobu asi 4 vteřin nedojde ke stisku, vrací se ukazatel v kódu na první číslo kódu. Tuto hodnotu lze měnit od 1 do 255 (50 = asi 1 vteřina). Poslední konstantou se ovlivňuje délka vteřiny, která je nastavena jen přibližně. Téměř na konci zdrojového kódu je zadán vlastní číselný kód. Musí být vždy uzavřen v apostorfech a může mít délku až 255 cifer. Kód může mimo čísel obsahovat i znaky # a *. Na konci kódu je překódovací tabulka pro různé klávesnice. Některé mají 1, 2 a 3 dole a jiné zase nahoře (já mám klávesnici s 1, 2 a 3 dole). Změnu lze provést buďto v programu nebo prohozením příslušných vývodů klávesnice. Přímo v kódu jsou ještě vysvětlivky, takže by to mělo být bez problémů. Přeložený kód zabírá 389 bytů + 1 byte za každé číslo kódu.
Zdrojový kód, přeložený do formátu *.hex, a do formátu *.bin

(c) 2004, Stanislav Mašláň - využití programu ke komerčním účelům bez souhlasu autora je trestné.

Poslední aktualizace: 23.6.2004