Elektroda.pl
Elektroda.pl
X
IGE-XAO
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Programowy projekt zegara-datownika na Z8 Zilog

Tytus Kosiarski 01 Wrz 2019 10:14 366 2
  • Programowy projekt zegara-datownika na Z8 Zilog

    Witam wszystkich

    Tym razem chciałbym zaprezentować programowy projekt zegara z datownikiem, którego program został napisany w asemblerze na mikrokontroler Z8681 z rodziny Z8 Ziloga. Być może ten projekt będzie interesujący dla osób lubiących od czasu do czasu zrobić sobie coś na starym (by nie rzec antycznym) mikrokontrolerze otoczonym równie starymi układami pamięciowymi (w przypadku, gdy zastosuje się EPROM 2732 jako U2) i TTL (najlepiej jeszcze produkcji CEMI, gdzie się da, by podkreślić klimat). Sam zegar nie jest jakąś wyrafinowaną konstrukcją, pokazuje tylko datę i czas w formacie 24-godzinnym na siedmiosegmentowych wyświetlaczach. Może być zbudowany w wersji stołowej lub naściennej z zasilaniem sieciowym i być dobrym sposobem na zagospodarowanie choć części zapasów TTL i/lub CMOS. Obsługa jego jest prosta. Po włączeniu zegar będzie wyświetlać "1.01 0:00". By go ustawić, trzeba nacisnąć przycisk S1(set). Wyświetli się "tine 0:00" gdzie na pozycji minut będzie na przemian wyświetlane "00" i kursor. Przyciskami S2(down) i S3(up) nastawia się pożądaną wartość minut. Przyciskiem S4(next_pos)przestawia się kursor na pozycję godzin i nastawia się godzinę przyciskami S2, S3.
    Ponowne naciśnięcie S1 wyświetla "YEAr 2001" w celu nastawienia roku (dziesiątki i jedności). Kolejne naciśnięcie S1 wyświetla "date 1.01" i nastawianie odbywa się podobnie, jak nastawa godzin i minut. Po nastawieniu, przy braku naciskania przycisków, zegar sam powraca do wskazywania już nastawionej daty i czasu

    Oczywiście, należy zadać pytanie - po co w ogóle coś takiego robić? I to jeszcze na takich antykach. Dla mnie była to zabawa i w jakimś stopniu powrót do przeszłości, gdyż wszystko robiłem na piechotę w programie. Otóż cała historia zaczęła się od tego, gdy szukając czegoś w swojej graciarni, znalazłem płytę, która kiedyś była w podstawie jakiegoś monitorka. Na tej płycie oprócz Z8 były też Z80 CTC, Z80 DART, układ sterownika monitora CRT, kostki pamięci RAM i EPROM oraz mnóstwo TTL-i. Tak sobie pomyślałem, że na tym Z8 można coś popróbować zrobić, tym bardziej, że był w podstawce na tej płycie. No i wymyśliłem, że warto zacząć od czegoś w rodzaju układu uruchomieniowego. Ale nie chciało mi się już projektować od podstaw całego układu, tym bardziej, że nie wiedziałem, czy coś sensownego w ogóle z tego wszystkiego wyjdzie. Dlatego pomyślałem, że wykorzystam do tego celu już gotową, posiadaną od wielu lat płytę uruchomieniową dla mikrokontrolera 8051. Przy takim podejściu wystarczyło tylko zaprojektować jakąś małą elektronikę przejściową z Z8 i niezbędną otoczką, wkładaną do podstawki dla 8051, która umożliwiłaby uruchamianie pisanego programu zegara. Udało się i efekt jest widoczny na zdjęciu (duża płyta uruchomieniowa robiona przeze mnie jeszcze w czasach studenckich i mała płytka już zrobiona w płytkarni, włożona do podstawki mikrokontrolera na dużej płycie).
    Przy projektowaniu tej małej elektroniki przejściówki pomocnym był schemat ideowy ze strony http://fruttenboel.verhoeven272.nl/softy/index.html oprócz bogatej na szczęście dokumentacji tego mikrokontrolera w Internecie. Na tej płytce Z8 korzysta z zewnętrznego 4kB RAM-u (dwie kostki 6116), gdzie umieszczony jest stos i zmienne wykorzystywane przez program zegara. Sam program zegara natomiast umieszczony jest w pamięci RAM układu uruchomieniowego na dużej płycie, z której Z8 pobiera kod programu. Taki sposób napisania programu (choć w zupełności starczyłoby 128B RAM wewnątrz Z8) umożliwił przetestowanie poprawności projektu i wykonania elektroniki przejściówki.

    Sam program napisałem w asemblerze w IDE Zilog Developer Studio ver.3.68, gdyż jeszcze w tym IDE jego asembler mógł wygenerować kod wynikowy programu dla zastosowanego mikrokontrolera. Kod wynikowy programu zegarka waży trochę ponad 2kB. W kodzie źródłowym komentarze są po angielsku, gdyż było mi tak wygodniej pisać program, co chwilę zerkając do opisów mnemoników asemblera. Przedstawiam również propozycję schematu ideowego tego zegara narysowanego w Protelu 99. Nie ma tam sposobu zasilania i podtrzymania pracy, gdyż jest to jedynie koncepcja schematu.
    Samo podtrzymanie wymagałoby dość pojemnego akumulatora, gdyż należałoby dostarczyć zasilanie podtrzymujące do prawie wszystkich układów z wyjątkiem U9 i U3.
    Sam układ Z8681 oraz pamięć 6116 można kupić tu: https://shop.tvsat.com.pl/pl/p/1szt-IC-uPC-Z8681PS-DIP40-ZILOG/17587
    Jednak na tyle mi się spodobało programowanie tego Z8, że planuję zrobić gotowy zegar na nim dla mojej córki :) Planuję zastosować w nim już wyświetlacze matrycowe LED, by wyświetlać jakieś napisy oprócz wskazań czasu i daty. Ponadto planuję zastosować jakiś RTC, by nie mieć problemów z zasilaniem podtrzymującym pracę zegara.

    Pozdrawiam, KT


    Programowy projekt zegara-datownika na Z8 Zilog

    Link

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    Tytus Kosiarski
    Poziom 14  
    Offline 
    Specjalizuje się w: programowanie mikrokontrolerów
    Tytus Kosiarski napisał 185 postów o ocenie 294, pomógł 8 razy. Jest z nami od 2007 roku.
  • IGE-XAO
  • Pomocny post
    #2
    osctest1
    Poziom 15  
    Tytus Kosiarski napisał:
    "Dodaj film" przynajmniej u mnie nie dawała żadnych efektów.
    Do tego często filmy na belce się powtarzają.

    Wgraj na YT i wstaw link.
  • IGE-XAO