Podstawy techniki mikroprocesorowej

Podobne dokumenty
Instytut Teleinformatyki

Mikrokontrolery AVR Wprowadzenie

Programowanie mikrokontrolerów - laboratorium

Wydział Mechaniczny. Instrukcja do zajęć laboratoryjnych. Numer ćwiczenia: 4. Laboratorium z przedmiotu: Technika cyfrowa i mikroprocesorowa

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

KOMUNIKACJA Z OTOCZENIEM MIKROKONTROLERA

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

INSTRUKCJA OBSŁUGI. Przekaźnik czasowy ETM ELEKTROTECH Dzierżoniów. 1. Zastosowanie

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

TECHNIKA MIKROPROCESOROWA II

LABORATORIUM UKŁADY STYKOWE ZL3AVR

Programowanie w językach asemblera i C

Programator procesorów rodziny AVR AVR-T910

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED

Niektóre piny mogą pełnić różne role, zależnie od aktualnej wartości sygnałów sterujących.

INSTRUKCJA OBSŁUGI. Rys.1. Wyświetlacz. Rys.2. Klawiatura

LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program

Podstawy techniki mikroprocesorowej

Site Installer v2.4.xx

Projektowanie Systemów Wbudowanych

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

AKTUATOR DO SYSTEMU DUO Q

LABORATORIUM INTELIGENTNYCH SYSTEMÓW ELEKTRYCZNYCH

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

Stoper solarny C5085 INSTRUKCJA OBSŁUGI. Nr produktu Strona 1 z 7

MODBUS RTU wersja M1.14 protokół komunikacyjny wyświetlaczy LDN

1 Moduł Lutron HomeWorks QS

LABORATORIUM ENERGOOSZCZĘDNEGO BUDYNKU

STEROWANIE MASZYN I URZĄDZEŃ I. Laboratorium. 4. Przekaźniki czasowe

Programator STK500v2 USB

SMS SMS telefon. Umożliwia łatwe i szybkie wysyłanie wiadomości SMS...

Instytut Teleinformatyki

Instrukcja obsługi programatora AVR Prog USB v2

Tworzenie prezentacji w MS PowerPoint

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Programowalne Układy Cyfrowe Laboratorium

LABORATORIUM INTELIGENTNYCH SYSTEMÓW ELEKTRYCZNYCH. Ćwiczenie 10. Wykorzystanie funkcji ściemniacza w systemie TEBIS

Instrukcja obsługi programatora AVR Prog USB v2

TECHNIKA MIKROPROCESOROWA II

Tworzenie nowego projektu w asemblerze dla mikroprocesora z rodziny 8051

LABORATORIUM PRZEMYSŁOWYCH SYSTEMÓW STEROWANIA

Katedra Inżynierii Systemów Sterowania WEiA PG. Przemysłowe Sieci Informatyczne Laboratorium

start Program mikroprocesorowego miernika mocy generowanej $crystal = deklaracja

Wyłącznik czasowy GAO EMT757

Instytut Teleinformatyki

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

dokument DOK wersja 1.0

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

CAN LOGGER OPIS. Ponownie uruchamiany program CAN Logger

interfejs szeregowy wyświetlaczy do systemów PLC

3. Sieć PLAN. 3.1 Adresowanie płyt głównych regulatora pco

Programowanie mikrokontrolerów - laboratorium

Laboratorium Systemów wbudowanych Wyższa Szkoła Zarządzania i Bankowości, Informatyka studia inżynierskie

Szanowni Państwo. Należy przy tym pamiętać, że zmiana stawek VAT obejmie dwie czynności:

INSTRUKCJA OBSŁUGI. Licznik amperogodzin ETM ELEKTROTECH Dzierżoniów. 1. Zastosowanie

ad a) Konfiguracja licznika T1 Niech nasz program składa się z dwóch fragmentów kodu: inicjacja licznika T1 pętla główna

Ustawienia ogólne. Ustawienia okólne są dostępne w panelu głównym programu System Sensor, po kliknięciu ikony

INSTRUKCJA OBSŁUGI MODUŁ TABLICY SYNOPTYCZNEJ - MTS42. Aktualizacja

MagicInfo Express instrukcja obsługi

Politechnika Śląska w Gliwicach

Warsztaty dla nauczycieli

Laboratorium Napędu robotów

Kontroler sterownika bramy garażowej Wi-Fi do aplikacji TUYA

Instytut Teleinformatyki

FUNKCJE OGÓLNE. Przechowywany kod

WEJŚCIE W TRYB PROGRAMOWANIA

INSTRUKCJA OBSŁUGI TABLICY WYNIKÓW SPORTOWYCH SERIA PROFI

Jak przesłać mapę do urządzenia lub na kartę pamięci?

Tworzenie prostej etykiety i synchronizacja etykiet z wagą. AXIS Sp. z o.o. Kod produktu:

MultiTool instrukcja użytkownika 2010 SFAR

Programowanie w języku Python. Grażyna Koba

Architektura systemów komputerowych Laboratorium 10 Symulator SMS32 Urządzenia wejścia i wyjścia

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

INSTRUKCJA PANEL STERUJĄCY MT-5

Kopiowanie przy użyciu szyby skanera. 1 Umieść oryginalny dokument na szybie skanera stroną zadrukowaną skierowaną w dół, w lewym, górnym rogu.

LICZNIK IMPULSÓW Z WYŚWIETLACZEM LED NA SZYNĘ DIN LIMP-1 ZASILANY 230VAC

SML3 październik

tel fax

Sterowanie oświetleniem poprzez TEBIS

Instrukcja aktualizacji Mu-so

Zmierzyć się z żywiołami, czyli jak zbudować własną stację badawczą! Zaczynamy! Pole komunikatów programu. Nawigacja w programie Arduino

Instrukcja aktualizacji oprogramowania (firmware) serwera DESKTOP 1.0 systemu F&Home RADIO.

INSTRUKCJA MONTAŻU I OBSŁUGI PRZENOŚNEGO PANELU KONTROLUJĄCEGO

ze względu na jego zaokrąglony kształt musimy go umieścić w innych bloczkach np. ze zmienną: lub jeśli chcemy sprawdzić jaki właśnie znak odczytujemy:

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6

Spis treści. 1 Moduł Modbus TCP 4

Instrukcja aktualizacji oprogramowania. Wersja dokumentu: 01i00 Aktualizacja:

Instrukcja obsługi programatora AVR Prog USB v2

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Sterowanie urządzeniami elektronicznymi przy użyciu portu LPT

1.1 Co to jest USBasp? Parametry techniczne Obsługiwane procesory Zawartość zestawu... 4

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Rozdział ten zawiera informacje na temat zarządzania Modułem Modbus TCP oraz jego konfiguracji.

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH. PROCESORY OSADZONE kod kursu: ETD 7211 SEMESTR ZIMOWY 2017

1. Poznanie właściwości i zasady działania rejestrów przesuwnych. 2. Poznanie właściwości i zasady działania liczników pierścieniowych.

Instytut Teleinformatyki

System Obsługi Zleceń

Instrukcja obsługi programatora AVR Prog USB v2

Transkrypt:

Podstawy techniki mikroprocesorowej Temat 2 Obsługa wyświetlaczy v.1.0 Uniwersytet Pedagogiczny, Instytut Techniki Dominik Rzepka, dominik.rzepka@agh.edu.pl, 2014 1. Obsługa pinów mikroprocesora i wyświetlacze 7-segmentowe Komunikacja procesora ze światem zewnętrznym odbywa się za pomocą jego wyprowadzeń, czyli pinów. Piny są pogrupowane w porty, a każdy port może mieć maksymalnie 8 pinów. Aby móc używać pinów, należy najpierw określić, czy będą to piny wyjściowe (które wysyłają sygnały), czy też piny wejściowe (które odbierają sygnały). Każdy pin ma potencjalnie te dwie role i trzeba wybrać jedną z nich. W mikrokontrolerze ATTiny2313 mamy do dyspozycji dwa porty: Port B i Port D. Żeby sterowanie pinem miało jakiś widoczny efekt, zajmiemy się pinami podłączonymi do wyświetlaczy 7-segmentowych. Dokładny schemat połączeń znajduje się w dokumentacji płytki ZL11AVR pod adresem http://home.agh.edu.pl/~drzepka/dydaktyka/ptm/zl11avr.pdf. Wyświetlacz 7-segmentowy składa się z 8 diod, które mają wspólną anodę i oddzielnie sterowane katody. Aby zaświecić dany segment, trzeba podać odpowiednie wartości na anodę i oraz odpowiadającą temu segmentowi katodę. W przypadku płytki ZL11AVR muszą to być stany 0. Załóżmy, że chcemy sterować kropką (oznaczoną jako DP) wyświetlacza W3. Na podstawie poniższej tabelki dowiadujemy się, że musimy wyzerować pin PB7 oraz PD4. Przykład 1. 'konfigurujemy funkcje pingów - wszystkie będą sterowały, czyli mają funkcje wyjść Config PORTB = Output Config PORTD = Output 'ustawiamy wartości pinów 'na płytce ZL11AVR, PORTB odpowiada za poszczególne segmenty wyświetlacza; '7 bit steruje kropka - ustawiamy go na 0, aby ja zaświecić. PORTB = &B01111111 '&B oznacza wartość podaną w bitach (binarną). 'Bity numerujemy w kolejności od 7 do 0 'na płytce ZL11AVR, PORTD odpowiada za włączenie poszczególnych wyświetlaczy '5 bit steruje wyświetlaczem W2 - ustawiamy go na 0, aby go zaświecić PORTD = &B11101111 'w efekcie świeci się tylko kropka na wyświetlaczu W3, 'pozostałe segmenty i wyświetlacza są nieaktywne Zapisz powyższy przykład w pliku dioda. 2. Programowanie mikroprocesora

Tak przygotowany program możemy wysłać do mikrokontrolera przy pomocy programatora KamPROG. Należy go podłączyć do USB, a jego drugi kabel do odpowiedniego złącza na płytce ZL11AVR. Po uruchomieniu programu KamPROG trzeba się upewnić, czy zaznaczone są dwa pola, pokazane na poniższym zrzuci ekranu. Następnie naciskamy przycisk w prawym górnym rogu i wyszukujemy plik dioda.hex, który powstanie po wykonaniu kompilacji. Przy kolejnym programowaniu nie ma potrzeby, żeby wybierać go ponownie dopóki nie zmienimy go na inny, pozostanie on na stałe wybrany w programatorze. Rys. 1. Programator Aby sprawdzić, czy programator ma kontakt z mikroprocesorem można wybrać Identify microcontroller (F5). W odpowiedzi w oknie konsoli powinny pojawić się zielone napisy: Rys. 2. Poprawna identyfikacja mikroprocesora Programowanie odbywa się poprzez wciśnięcie przycisku Write : Rys. 3. Programowanie Po poprawnym zaprogramowaniu na płytce powinna zaświecić się dioda wyświetlacza W3.

3. Migająca dioda Stan dowolnego pinu wyjściowego można zmienić stosując odpowiedni zapis: Przykład 2. ustaw pin 5 z portu B na stan niski 0 PORTB.5 = 0 ustaw pin 5 z portu B na stan wysoki 0 PORTB.5 = 1 Ćwiczenie 1. Używając pętli do..loop zmodyfikuj program dioda tak, aby dioda zaczęła migać. Wykorzystaj kod z przykładu 2 do zaświecania i gaszenia diody. Aby uzyskać odpowiedni odstęp czasowy między zaświecaniem i gaszeniem, użyj instrukcji waitms 250. Instrukcja waitms zatrzymuje wykonywanie programu na ilość milisekund określoną liczbą podaną za tą instrukcją. Ćwiczenie 2. Napisz nowy program, sterując tym razem segmentami przy pomocy pełnych przypisani typu 'segment A PORTB = &B11111110 'segment B PORTB = &B11111101 'itd. Rozbuduj program tak, aby uzyskać efekt węża kolejno zapalających się i gaszących segmentów A, B, C, D, E, F, A, B, itd. na wyświetlaczu W1. Aby go uzyskać modyfikuj wartości pinów portu B, dodając po każdym zapaleniu i zgaszeniu instrukcję oczekiwania waitms 200. Efekt powinien być zapętlony. Sposób podpięcia pinów do segmentów znajdziesz w tabelkach poniżej. ZAPAMIĘTAJ! Bity w bajcie są numerowane od 7 do 0. W bajcie &B01111111 wyzerowany jest bit numer 7. 4. Wyświetlanie cyfr i procedury w języku BASIC Skoro umiemy już zaświecać i gasić segmenty wyświetlacza, to możemy zabrać się za wyświetlanie całych cyfr. Ćwiczenie 3. Zaprogramuj na wyświetlaczu W2 program wyświetlający kolejno cyfry od 0 do 9, w pętli do..while. Aby zaświecić wyświetlacz W2 ustaw odpowiednio piny portu D (na podstawie wcześniej podanych tabeli). Każdą cyfrę zaprogramuj jako binarne ustawienie portu B, używając tabeli 3 oraz rozmieszczenia

segmentów opisanego obok niej (na poprzedniej stronie) np. 'zero PORTB = &B11000000 'jeden PORTB = &B11111001 'dwa PORTB = uzupełnij 'trzy uzupełnij Niech każda cyfra będzie wyświetlana przez 1s. Wykorzystaj w tym celu instrukcję waitms. Gdybyśmy chcieli teraz zrobić program odliczający od 9 do 0, należałoby zamienić kolejność wszystkich instrukcji. Wygodniej byłoby zrobić program, który operuje na zmiennej mającej rolę licznika, a następnie wyświetlać wartość tej zmiennej. Zaprogramujmy więc poszczególne części takiego programu. Ćwiczenie 4. Napisz program, który przy pomocy pętli (for albo do) w konsoli wyświetla funkcją print liczby od 9 do 0. Teraz chcielibyśmy osiągnąć podobny efekt przy pomocy wyświetlacza 7-segmentowego. Potrzebujemy więc odpowiednika funkcji print, który wyświetla liczbę na wyświetlaczu 7-segmentowym. Takie gotowe polecenie niestety nie istnieje, ale możemy je sobie stworzyć sami. Nowe polecenie (procedurę) definiujemy przy pomocy słowa kluczowego sub. W naszym przypadku polecenie musi mieć też parametr cyfrę, którą będziemy wyświetlali. Nowe polecenia muszą być zadeklarowane na początku programu i zdefiniowane na jego końcu. Przykład 3. Definiowanie polecenia wyswietl wyświetlającego zmienną cyfra na wyświetlaczu 7- segmentowym. 'zaczynamy od deklaracji polecenia wyswietl Declare Sub wyswietl(byval cyfra As Byte) 'tutaj znajduje się zawartość programu 'przykladowe wywolanie polecenia wyswietl Do wyswietl 7 waitms 1000 wyswietl 8 waitms 1000 loop Sekcja I: deklaracje zmiennych i procedur Sekcja II: właściwy program 'po zakończeniu programu definiujemy polecenie wyswietl Sub wyswietl(byval cyfra As Byte) Select Case cyfra Case 0: PORTB = &B11000000 Case 1: PORTB = &B11111001 'tutaj powinna być definicja pozostałych cyfr End select Sekcja III: kod procedur 'itd. End Sub loop Ćwiczenie 5. Na podstawie przykładu 3 rozbuduj polecenie wyswietl, tak aby wyświetlało wszystkie liczby z zakresu 0-9.

Ćwiczenie 6. Napisz program odliczający od 9 do 0 na wyświetlaczu 7-segmentowym. Pamiętaj o zadeklarowaniu procedury wyswietl oraz wpisaniu jej definicji w odpowiedniej kolejności, według szablonu z przykładu 4. Ćwiczenie 7. Rozbuduj procedurę wyświetl tak, aby można było podać nie tylko wyświetlaną liczbę, ale również numer wyświetlacza (1-4), na którym ma być wyświetlona cyfra. W tym celu zmodyfikuj deklarację procedury: Sub wyswietl(byval cyfra As Byte, byval wyswietlacz As Byte) Dopisz kod, który zaświeci odpowiedni wyświetlacz W1..W4 w zależności od wartości zmiennej wyświetlacz. 5. Multipleksowanie wyświetlacza Ćwiczenie 8. Spróbuj wyświetlić na wyświetlaczu W1 cyfrę 4 a następnie na wyświetlaczu W2 cyfrę 7. Ze względu na sposób podłączenia wyświetlaczy do pinów procesora, nie ma możliwości, żeby na dwóch wyświetlaczach zaświecić dwie różne cyfry. Możemy co najwyżej zaświecić ten sam znak na kilku wyświetlaczach jednocześnie. W praktyce jednak wyświetlanie różnych cyfr na różnych wyświetlaczach jest bardzo potrzebną funkcjonalnością, więc musi być jakiś sposób, aby tego dokonać pomimo ograniczeń, z którymi się spotykamy. Przy rozwiązaniu tego problemu wykorzystuje się właściwości oczu człowieka. Jeżeli migająca dioda (lub napis) będzie migał odpowiednio szybko, bezwładność naszych oczu spowoduje, że nie zauważymy migania. Ćwiczenie 9. Zapętl kod z poprzedniego ćwiczenia, przedzielając wyświetlanie pierwszej i drugiej cyfry instrukcją oczekiwania waitms. Ustaw wartość oczekiwania na 100ms, a następnie zmniejszaj ją do takiej wartości, przy której nie zauważysz migania napisu. Wyświetlanie przy pomocy szybkiego przełączania nazywane jest multipleksacją i jest powszechnie stosowane w wyświetlaczach segmentowych (np. w autobusach). Ćwiczenie 10. Wyświetl przy pomocy multipleksowania dowolny, 4 literowy napis. Ćwiczenie 11. Napisz program liczący od 0 do 99 w tempie 1/s i wyświetlający wynik na wyświetlaczu 7- segmentowym. a) Ponieważ każdy wyświetlacz jest obsługiwany oddzielnie, zastosuj oddzielne zmienne dla liczby dziesiątek i liczby jedności. Program licznika wypróbuj najpierw w symulatorze, stosując do wyświetlania instrukcję print. b) Ponieważ musimy zastosować multipleksację, czyli SZYBKIE przełączanie wyświetlaczy, to pętla zwiększająca wartość licznika i jednocześnie wyświetlająca NIE MOŻE zawierać pojedynczego oczekiwania trwającego pełną sekundę. W każdej iteracji (powtórzeniu) pętli mamy jednak pewien znany, krótki okres oczekiwania pomiędzy przełączeniem wyświetlaczy. Wiedząc ile trwa ten okres, sumuj cząstkowe czasy oczekiwania i kiedy osiągną one 1 sekundę zmieniaj wartość licznika głównego. 6. Przykładowe zadania na kolokwium Poza zadaniami z laboratorium obowiązuje znajomość następujących zagadnień: 1. Ile wyprowadzeń ma wyświetlacz 7-segmentowy? 2. Wartość bajta to &B01111111. Jaka będzie jego wartość po wyzerowaniu bitu nr 0 i nr 2? 3. Napisz kod ustawiający 5 bit portu B na 1. 4. Napisz kod wyświetlający napis AS przy pomocy multipleksowania wyświetlaczy. 5. Na podstawie tabeli 3 i 4 oraz rozkładu segmentów napisz kod zapalający kropki w wyświetlaczach W2 i W3. 6. Napisz kod migający diodą w odstępie czasowym 200ms, uwzględniając konfigurację portów.