Časomíra pro ZPV a dvojičky
Popis zařízení
Parametery zařízení
- Napájení: 7,5 - 24V
- Spotřeba: max 100 mA při 12V
- Skladovací teplota: -10°C - 80°C
- Provozní teplota: 0°C - 70°C
Konstrukce zařízení
Základem celého zařízení je osmibitový procesor firmy Atmel AT89C2051 v pouzdře DIL 20. Tento procesor obstarává aktuální hodnotu času a v závislosti na stavu tlačítka tuto hodnotu zobrazuje na 2 řádkovém LCD. V čase 10 sekund před každým pětiminutovým intervalem sepne tranzistor a následně relé, které ovládá indikační světlo. V pětiminutových intervalech zároveň zazní startovní akustický signál.
Jako zdroj pro procesor a LCD je využit integrovaný stabilizátor 7805 s nezbytnými blokovacími a filtračními kondenzátory. Zdroj je doplněn o indikační LED, která signalizuje správnou funkci zdroje. Při tomto zapojení je nutné dbát na správnou polaritu přivedeného napětí. Zdroj není vybaven diodou a proto by mohl dojít k přepólování stabilizátoru. Stejně tak není možné připojit střídavé napětí.
Procesor AT89C2051 pracuje v tom nejjednodušším možném zapojení. K funkci samotného obvodu je nutný pouze resetovací obvod tvořený RC článkem a samozřejmě také oscilátor, který je v tomto případě vytvořen pomocí krystalu a dvou kondenzátorů
Výběr součástek
Na výběr součástek nejsou kladeny nijaké zvláštní nároky. Jejich cena je na takto jednoduchou konstrukci více než přijatelná. Zvláště když si objednáme procesor jako vzorek. Nejdrašším dílem je v tomto případě LCD, to pořídíte v GM zhruba za 220 Kč, ale dá se sehnat i levněji ve výprodeji.
Další větší položkou v rozpočtu bude určitě krabička, ta se dá z katalogu GM vybrat do 100 kč, v tomto případě doporučuji vybrat si nějakou z kovových krabic (černě lakované, síla 1mm)
Popis programu - práce s časem
Protože se jedná o jednoduchou konstrukci, nebude ani program nijak náročný. Jediným jeho úkolem je přesně počítat čas, což s krystalovým oscilátorem zase až takový problém není. V tomto případě je využit časovač v módu 1. Vyvolané přerušení obslouží následující kód:;------------ funkce upravujici cas -----------
timeup:
push PSW
djnz r1, kotup
mov r1, #30D
inc r2
setb f0
cjne r2,#100D,kotup
mov r2,#00D
inc r3
cjne r3,#60D,kotup
mov r3,#00D
inc r4
cjne r4,#60D,kotup
mov R4,#00D
inc R6
kotup:
POP PSW
reti
Jak sami vidíte, obsluha je krátká, ale pro počítání času postačující. V registru R1 jsou uloženy setiny sekundy, v R3 samotné sekundy, v R4 minuty, a v R6 hodiny . R1 se používá pro přeskočení 30 přerušení. (odůvodnění je patrné z celého kódu)
Popis programu - komunikace s LCD
Jelikož spousta začínajících programátoru jednočipů se LCD vyhýbá, je nutné i zde uvádět způsob komunikace s LCD. Protože jsou data odesílána po osmibitové sběrnici, jedná se o ten jednodušší způsob komunikace. Jak komunikovat s LCD se můžete dozvědět například na této adrese.Tabulku s komunikačními bajty můžete nalézt také v katalogu GM.
; inicializace displeje
clr RS
mov r7,#59D
call zapis
mov r7,#12D
call zapis
mov R7,#1D
call zapis
setb RS
; zapise data nebo instrukce
zapis:
call zpozdi
mov p1,r7
setb E
call zpozdi
clr E
call zpozdi
ret
; zapise dekadicky BYTE
wr_tm:
call rozloz
add a,#48D ; + 48 = ASCII hodnota
mov r7,a
call zapis
mov a,b
add a,#48D
mov r7,a
call zapis
ret
; rozklad na rady
rozloz:
mov a,r7
mov b,#10D
div ab
ret
Hlavní program
Hlavní program pracuje tak, že nejrychleji co to jde kopíruje z registrů, kde je uložený čas do registrů pro zobrazení údaje o aktuálním čase. Před touto činností si ale vynuluje příznak změny času, který je nahazován při úpravě času. Pokud ke změně času dojde, není čas na LCD vypsán.Při stisknutém tlačítku dále nedochází k přepisování času na příslušném řádku. Po jeho uvolnění čas pokračuje tak, jako by nikdy nebyl přerušen.
Konstrukce je volně ke stažení pod tímto článkem a to včetně zdrojových kódu. Můžete si ji ale také zakoupit za 2000 kč.
Ke stažení
- schéma a deska plošného spoje
- zdrojový kód
- zkompilovaný program
- výkresy mechanických dílů
- návod k použití
Komentovat článek
Komentáře k článku
článek zatím nikdo nekomentoval

