Programowanie mikrokontrolerów - laboratorium

Podobne dokumenty
Programowanie mikrokontrolerów - laboratorium

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

Listing_ $crystal = deklaracja

start Program mikroprocesorowego miernika mocy generowanej $crystal = deklaracja

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

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

Synteza częstotliwości na układzie PLL LM7001

Zawody II stopnia etap II - ćwiczenia laboratoryjne Grupa Elektroniczna

W O J S K O W A A K A D E M I A T E C H N I C Z N A im. Jarosława Dąbrowskiego

Miernik częstotliwości 100 MHz

Nadajnik Nokton NR4 MAXIM przeróbka do zastosowań APRS MHz

Obrotomierz AVT 5260 PROJEKTY

Podstawy techniki mikroprocesorowej

KURS BASCOM 8051 INDEX:

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

Wydział Elektryczny. Katedra Telekomunikacji i Aparatury Elektronicznej. Konstrukcje i Technologie w Aparaturze Elektronicznej.

Enkoder z silnika HDD lub FDD

Mikrokontrolery AVR Wprowadzenie

ZESPÓŁ LABORATORIÓW TELEMATYKI TRANSPORTU ZAKŁAD TELEKOMUNIKACJI W TRANSPORCIE WYDZIAŁ TRANSPORTU POLITECHNIKI WARSZAWSKIEJ

Sterowanie multipleksowe 4-cyfrowego wyświetlacza siedmiosegmentowego w oparciu o system przerwao mikrokontrolera ATmega16 w języku Asembler

2. Architektura mikrokontrolerów PIC16F8x... 13

Mikrokontroler ATmega32. System przerwań Porty wejścia-wyjścia Układy czasowo-licznikowe

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

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED

Instrukcje cykliczne (pętle) WHILE...END WHILE

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Instytut Teleinformatyki

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

WOJSKOWA AKADEMIA TECHNICZNA im. Jarosława Dąbrowskiego LABORATORIUM UKŁADÓW PROGRAMOWALNYCH I SPECJALIZOWANYCH

HMGRC v.1.1. Home Made Group Repeater Controler

KOMUNIKACJA Z OTOCZENIEM MIKROKONTROLERA

A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym

Bluetooth łączy mikrokontrolery, część 2

KURS Bascom'a. Autor Paweł Klaja. Korekta. v1.5

Wstęp Podstawy programowania QBASIC Budowa mikroprocesora Zestaw uruchomieniowy Porty wejścia/wyjścia...

Języki formalne i techniki translacji

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

Moduł Bluetooth WT12 w praktyce, część 2

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Materiały do laboratorium MS ACCESS BASIC

Współpraca mikrokontrolera z wyświetlaczami: ciekłokrystalicznym i siedmiosegmentowym

ZESPÓŁ SZKÓŁ MECHANICZNO-ELEKTRYCZNYCH im... Technikum Telekomunikacyjne. Specjalność:. PRACA DYPLOMOWA

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1

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

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

Algorytmika i Programowanie VBA 1 - podstawy

Laboratorium Programowania Kart Elektronicznych

LibreOffice Calc VBA

DTMF Controler DC1 DCE1

Obsługa wyświetlaczy graficznych w Bascom, część 2

Technika cyfrowa i mikroprocesorowa. Zaliczenie na ocenę. Zaliczenie na ocenę

Laboratorium Programowania Kart Elektronicznych

Bluetooth łączy mikrokontrolery, część 1

XMEGA. Warsztaty CHIP Rok akademicki 2014/2015

Laboratorium 1: Wprowadzenie do środowiska programowego. oraz podstawowe operacje na rejestrach i komórkach pamięci

Podstawy techniki mikroprocesorowej

Wprowadzenie do programowania w VBA

ROZDZIAŁ III ELEMENTY PROGRAMU BASCOM ROZPOCZYNAMY PRACĘ Z PROGRAMEM STRUKTURA PROGRAMU OPERACJE NA PORTACH

Przystawka do odbiornika homodynowego na pasmo 80 m

PRACOWNIA MIKROKPROCESOROWA

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Komunikacja w mikrokontrolerach Laboratorium

Programowanie w językach asemblera i C

LABORATORIUM nr 2. Temat: Obsługa wyświetlacza siedmiosegmentowego LED

Ćwiczenie nr 43 Mikrokontroler

Mikroprocesory i Mikrosterowniki Laboratorium

Metody obsługi zdarzeń

Mikroprocesory i mikrosterowniki Wydział Elektroniki Mikrosystemów i Fotoniki Politechniki Wrocławskiej Ćwiczenie nr 4

1 Przygotował: mgr inż. Maciej Lasota

Modelowanie liczników w języku Verilog i ich implementacja w strukturze FPGA

Politechnika Śląska w Gliwicach

Wbudowane układy peryferyjne cz. 1 Wykład 7

Szkolenia specjalistyczne

TECHNIKA MIKROPROCESOROWA II

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Bezprzewodowy P R O J E K T Y termometr Bluetooth (BT)

SYSTEM PRZERWAŃ ATmega 32

Projektowanie Scalonych Systemów Wbudowanych VERILOG

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

Wyświetlacz widmowy RGB sterowany bezprzewodowo

PROGRAMOWALNE SYSTEMY MECHATRONIKI

Sterownik podświetlania monitora

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

Wprowadzenie do podstaw programowania AVR (na przykładzie mikrokontrolera ATmega 16 / 32)

41. Zmienne lokalne muszą mieć nazwę, którą poprzedza (maksymalnie 128 znaków) oraz typ (każdy z wyjątkiem: text, ntext oraz image)

Sterownik oświetlenia sufitu

Instytut Teleinformatyki

Wstęp Architektura... 13

START: ; start programu od adresu 0100H ; zerowanie komórek od 01H do 07FH ( 1 dec dec)

Języki programowania zasady ich tworzenia

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

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

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

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

Automatyzacja pracy w AutoCAD

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Instytut Teleinformatyki

Programowanie mikrokontrolerów AVR

Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów AVR

Transkrypt:

Państwowa Wyższa Szkoła Zawodowa w Nowym Sączu Instytut Techniczny Programowanie mikrokontrolerów- laboratorium Nazwisko i imię 1. 2. Data wykonania ćwiczenia: Grupa: Ocena sprawozdania Zaliczenie: Symbol: AVR_4 1. Celem ćwiczenia: Celem ćwiczenia jest zapoznanie z obsługą układów czasowo licznikowych mikrokontrolera AVR Atmega 32 oraz wyświetlaczem siedmiosegmentowym. 2. Program ćwiczenia: Program_1 sterowanie statyczne wyświetlaczem siedmiosegmentowym. Program_2 sterowanie sekwencyjne wyświetlaczem siedmiosegmentowym. Program_3 sterowanie sekwencyjne wyświetlaczem siedmiosegmentowym - zegar. 3. Realizacja ćwiczenia: Przykład_1 Przykład_1 sterowanie statyczne wyświetlaczem siedmiosegmentowym. 'Program sterujący wyświetlaczem 7-segmentowym LED $REGFILE = "m32def.dat" $CRYSTAL = 16000000 Config PortA = Output Config PortB = Output Declare Sub Wysw7seg(Cyfra As Byte) 'informuje kompilator o pliku 'dyrektyw mikrokontrolera 'informuje kompilator 'o częstotliwości oscylatora 'taktującego mikrokontroler 'port A jako wyjściowy 'deklaracja procedury obsługi 'wyświetlacza LED Dim I As Byte 'zmienna licznikowa dla pętli 'For...Next Dim Kod_cyf As Byte 'zmienna do przechowywania kodu 'wyświetlanej cyfry PORTB = &B11110000 sterowanie wyświetlaczami 1-4 'początek pętli nieskończonej '... For I = 0 To 9 'pętla wykonywana 10 razy Call Wysw7seg(i) Wysw7seg Waitms 500 'czekaj 500 ms Next I 'zwiększ o jeden wartość I 'koniec pętli nieskończonej 'koniec programu Sub Wysw7seg(Cyfra As Byte) 'definicja procedury Wysw7seg If Cyfra < 10 Then 'jeśli wartość otrzymanej do 'wyświetlenia cyfry < od 10 to Kod_cyf = Lookup(cyfra, Kody7seg ) 'zapisz do zmiennej Kod_cyf kod 'znaku z tablicy stałych Kody7seg PortA = Kod_cyf 'linii sterującej kropka 'wartość zmiennej Kod_cyf 'wystawiana jest na port A

Else Sub PortA = 255 'w przeciwnym razie 'koniec warunku If...Then 'koniec procedury 'tablica stałych Kody7seg 'przechowująca kody wyświetlanych 'cyfr Zadanie_1: Przykład_2 Napisz program, który wyświetla na wyświetlaczu siedmiosegmentowym cyfry 1234 Przykład_2 sterowanie sekwencyjne wyświetlaczem siedmiosegmentowym. $regfile = "m32def.dat" $crystal = 16000000 $hwstack = 34 $swstack = 8 $framesize = 24 Config Porta = Output Config Pinb.0 = Output Config Pinb.1 = Output Config Pinb.2 = Output Config Pinb.3 = Output Config Timer0 = Timer, Prescale = 256 'informuje kompilator o pliku 'dyrektyw mikrokontrolera 'port A jako wyjściowy 'linia PB0 jako wyjściowa 'linia PB1 jako wyjściowa 'linia PB2 jako wyjściowa 'linia PB3 jako wyjściowa 'konfiguracja Timer0 jako 'timer z podziałem 'preskalera przez 256 Declare Sub Pobr_znaku(cyfra As Byte) On Timer0 Mult_wysw 'deklaracja procedury 'pobierającej kod cyfry do 'wyświetlenia z tablicy 'przerwanie od przepełnienia 'Timer0 skok nastąpi do 'podprogramu Mult_wysw Dim A As Byte, B As Byte, C As Byte, D As Byte 'definicje zmiennych A, B, C, 'D, w których będzie 'przechowywana wartość do 'wyświetlenia Dim Nr_wysw As Byte Dim Wart As Byte W1 Alias Portb.0 W2 Alias Portb.1 W3 Alias Portb.2 W4 Alias Portb.3 'zmienna określająca numer 'zapalonego wyświetlacza 'zmienna Wart przechowująca 'liczbę do wyświetlenia 'przypisanie linii PB0 nazwy W1 'przypisanie linii PB1 nazwy W2 'przypisanie linii PB2 nazwy W3 'przypisanie linii PB3 nazwy W4 Enable Interrupts Enable Timer0 Load Timer0, 125 A=1 B=2 C=3 D=4 Waitms 500 'odblokowanie globalnego 'systemu przerwań 'odblokowanie przerwania od 'przepełnienia Timer0 'załadowanie do licznika 'wartości początkowej 131, bo '256-125 = 131 'początek nieskończonej pętli 'opóźnienie 5 sekund 'koniec pętli nieskończonej 'koniec programu Sub Pobr_znaku(cyfra As Byte) 'definicja procedury 'Pobr_znaku

If Cyfra < 10 Then Porta = Lookup(cyfra, Kody7seg ) Else Porta = 0 Sub 'jeżeli wartość otrzymanej do 'wyświetlenia cyfry < od 10, 'to wpisanie do portu A 'wartość kodu z tablicy 'stałych Kody7seg 'w przeciwnym razie 'wpisanie do portu A wartości '0 która wygasza wyświetlacz 'koniec warunku If...Then 'koniec procedury Mult_wysw: Load Timer0, 150 'podprogramu obsługi 'przerwania od przepełnienia 'Timer0 w którym odbywa się 'multipleksowanie 'załadowanie do licznika 'wartości początkowej Set W1 'wygaszenie wyświetlacza 1 Set W2 'wygaszenie wyświetlacza 2 Set W3 'wygaszenie wyświetlacza 3 Set W4 'wygaszenie wyświetlacza 4 Select Case Nr_wysw 'Nr_wysw, wykonaj: Case 0: Call Pobr_znaku(a) 'w zależności od wartości 'gdy Nr_wysw = 0, to Reset W1 'włączenie wyświetlacza 1 Case 1: 'gdy Nr_wysw = 1, to Call Pobr_znaku(b) Reset W2 'włączenie wyświetlacza 2 Case 2: 'gdy Nr_wysw = 2, to Call Pobr_znaku(c) Reset W3 'włączenie wyświetlacza 3 Case 3: 'gdy Nr_wysw = 3, to Call Pobr_znaku(d) Reset W4 'włączenie wyświetlacza 4 Select 'koniec instrukcji wyboru Incr Nr_wysw 'zwiększenie o jeden wartości 'Nr_wysw If Nr_wysw = 4 Then 'jeśli wartość Nr_wysw 'osiągnie 4, to Nr_wysw = 0 'zeruj wartość Nr_wysw 'powrót z podprogramu 'przerwania 'Kody cyfr 'tablica stałych Kody7seg 'przechowująca kody 'wyświetlanych cyfr Zadanie_2: Przykład_3 Napisz program, który na wyświetlaczu siedmiosegmentowym wyświetla liczby od 0000 do 9999. Licznik zwiększa wartość co 100ms. Przykład_3 sterowanie sekwencyjne wyświetlaczem zegar. $regfile = "m32def.dat" $crystal = 16000000 $hwstack = 34 $swstack = 8 $framesize = 24 Config Porta = Output Config Portb = Output Config Portc = Input

Config Timer0 = Timer, Prescale = 256 Config Timer1 = Timer, Prescale = 256 Declare Sub Pobr_znaku(cyfra As Byte) On Timer0 Mult_wysw On Timer1 Odmierz_1s Dim S As Byte : Dim M As Byte : Dim G As Byte Dim A As Byte Dim B As Byte Dim C As Byte Dim D As Byte Dim Nr_wysw As Byte W1 Alias Portb.0 W2 Alias Portb.1 W3 Alias Portb.2 W4 Alias Portb.3 S1 Alias Pinc.0 S2 Alias Pinc.1 S3 Alias Pinc.2 Enable Interrupts Enable Timer0 Load Timer0, 125 Enable Timer1 Counter1 = 3036 Set Portc.0 Set Portc.1 Set Portc.2 If S1 = 0 Then If S1 = 0 Then Incr S If S = 60 Then If S2 = 0 Then If S2 = 0 Then Incr M If M = 60 Then If S3 = 0 Then A = M / 10 B = M Mod 10 C = S / 10 If S3 = 0 Then

D = S Mod 10 Odmierz_1s: Counter1 = 3036 Incr S If S = 60 Then Incr M If M = 60 Then Incr G If G = 24 Then G = 0 Sub Pobr_znaku(cyfra As Byte) Porta = Lookup(cyfra, Kody7seg) Sub Mult_wysw: Load Timer0, 150 Set W1 Set W2 Set W3 Set W4 Select Case Nr_wysw Case 0: Call Pobr_znaku(a) Reset W1 Case 1: Call Pobr_znaku(b) Reset W2 Case 2: Call Pobr_znaku(c) Reset W3 Case 3: Call Pobr_znaku(d) Reset W4 Select Incr Nr_wysw If Nr_wysw = 4 Then Nr_wysw = 0