Časomíra pro ZPV a dvojičky

Popis zařízení


Zařízení slouží pro měření dlouhých časových úseků s možností mezičasu (údaj na displeji je "zmražen" po dobu stisku tlačítka) Zařízení je možné provozovat az do 99 hodin, 59 minut 59 sekund a 99 setin sekundy, a to s největší odchylkou 5s na 48 hodin.

Parametery zařízení

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ů

Komunikace s LCD probíhá 8-mi vodičově, je to jednodušší ze dvou variant, s ohledem na využití hardware procesoru však méně vhodná, protože dochází k využítí dalších 4 vstupně-výstupních pinů. Data nejsou z LCD čtena a proto je pin RW uzemněn. Kontrast se nastavuje pomocí potenciometru typu 64Y, který sice nepatří k nejlevnějším, ale lze s ním poměrně přesně nastavit požadovaný kontrast.



 Celé zařízení je konstuováno na jednostranné desce plošného spoje. LCD je připojeno přes šestnáctižilový plochý kabel AWG a dutinkovou lištu BLG.




 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

Dále uvádím fukce, které zjednodušují výpis obsahu registrů naplněných časem na LCD. Lze je opět jednoduchým způsobem nahradit.

; 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í



Komentovat článek

Jméno:  
Zpráva:

Komentáře k článku

článek zatím nikdo nekomentoval