Dariusz Walencik mikrokontroleryI poprawa

background image

Katowice dn. 15.V.2010 r

Sprawozdanie z ćwiczenia laboratoryjnego pt.

MIKROKONTROLERY – cz. 1

Sekcja laboratoryjna:

1.

Dariusz Walencik – odpowiedzialny

2.

Bartosz Stołtny

3.

Robert Tasak

background image

1.

Opis teoretyczny urządzenia – mikrokontroler 8051:

Jest jednym z najpopularniejszych mikrokontrolerów 8-bitowych. Na jego bazie powstała

duża rodzina mikrokontrolerów. Poszczególne układy rodziny różnią się między sobą
zestawem scalonych razem z procesorem urządzeń peryferyjnych..

a) struktura:

Rys 1: Układ wyprowadzeń mikrokontrolera.

Porty są to wyprowadzenia 8-bitowe. Port może pełnić role wyjścia informacji

binarnej. Tak więc, jeżeli zachodzi potrzeba procesor może wpisać do portu dowolną
liczbę binarną z zakresu 0...255, np. 48 (binarnie 48=00110000). Końcówki dowolnego
portu procesora mogą pełnić zarówno rolę wejść jak i wyjść.

Poszczególne wyprowadzenia:

1. PORT 1 (P1) to końcówki o numerach 1...8
- Oznaczenia poszczególnych końcówek portu P1 wskazują nam kolejną pozycje bitu. Istotną
zaletą portów uniwersalnych procesora (w tym także P1) jest możliwość indywidualnego
ustawiania poziomu logicznego na każdym wyprowadzeniu nie zależnie. Nie trzeba zatem
zapisywać całej liczby do portu aby np. zmienić stan tylko na jednym wyprowadzeniu,
wystarczy ustawić w (rozkazem SETB) lub wyzerować (rozkazem (CLR)odpowiedni bit
rejestru portu P1.
2. PORT 3 (P3) to końcówki o numerach 10...17
- podobnie jak w przypadku portu P1, port P3 może być wyjściem lub wejściem..
- pinyP3.0(RXD) i P3.1(TXD) mogą pełnić rolę portu transmisji szeregowej.
W praktyce poprzez te dwa wyprowadzenia można przesłać informację (bajty i bity) z i do
procesora z innych układów cyfrowych w sposób szeregowy, tzn. bit po bicie.
- alternatywną funkcją końcówek P3.2 (INTO\ ) oraz P3.3 (INT1) jest funkcja detekcji
przerwań zewnętrznych. Przerwanie w tym przypadku odnosi się do zmiany stanu logicznego

background image

( na omawianym wyprowadzeniu P3.2 lub P3.3) z "1" na "0". W efekcie "we wnętrzu"
procesora 8051 została ustawiona tak zwana flaga - znacznik zgłoszenia przerwania.

3. PORT 2 (P2) to końcówki o numerach 21...28
- są to wyprowadzenia drugiego 8- bitowego portu procesora.
- port P2 spełnia wszystkie funkcje podobnie jak P1.
- dodatkowo przez końcówki portu P2 podawane jest w razie potrzeby starsza część adresu
(A8...A15) przy dostępie do zewnętrznej pamięci danych (SRAM) a także programu (np.
EPROM).

4. PORT 0 (P0) to końcówki o numerach 32...39
- podstawowe funkcje portu jako dwukierunkowej bramy do wymiany danych są takie same
jak w przypadku portów P1 i P2
- różnicą jest zwiększona obciążalność tego portu oraz fakt nie posiadania wbudowanych
rezystorów podciągających końcówki portu do plusa zasilania w wypadku odczytu.. Bardzo
ważną rolę jaką pełni P0, jest funkcja multipleksowanej magistrali danych i młodszej części
adresu. multipleksowanej w praktyce znaczy przełączalnej czyli raz na końcówkach portu P0
procesor może wystawić bajt danych np. do zapisu zewnętrznej pamięci danych, w innym
przypadku adres w celu wybrania potrzebnej komórki pamięci SRAM do której ma być
zapisana.

5. Końcówka 9 (RST) czyli reset.
- powoduje skasowanie układu, a więc natychmiastowe przerwanie wykonywanych czynności
i rozpoczęcie cyklu działania procesora od samego początku (od włączenia zasilania układu).
Czas trwania dodatniego impulsu kasującego zależy od częstotliwości z jaką pracuje
mikroprocesor. Z reguły w typowych zastosowaniach czas 1ms zupełnie wystarczy. W
układach praktycznych RST dołączamy układ który generuje wymagany impuls zerujący.

6. Końcówki 18 i 19 (XTAL1 i XTAL2)
- końcówki te służą do łączenia zewnętrznego rezonatora kwarcowego o częstotliwości
zależnej od potrzeb użytkownika, ale także od wersji układu 8051. W praktyce częstotliwość
ta może wynosić od 1,2MHz do 12...16MHz. dołączony do tych pinów rezonator kwarcowy
umożliwia pracę wbudowanemu w 8051 generatorowi, który "napędza" cały mikroprocesor.
Od częstotliwości rezonatora ściśle zależy szybkość działania mikrokontrolera .

7. Końcówka 20 (Vss)
- końcówka ujemnego napięcia zasilającego - masy (GND)

8. Końcówka 29 (PSEN\)
- w przypadku pracy procesora z zewnętrzną pamięcią programu (np. EPROM) końcówka ta
wysyła sygnał odczytu z tej pamięci. W praktyce jest dołączona do wejścia OE\
współpracującej pamięci EPROM. Procesor chcąc odczytać kolejne rozkazy z zewnętrznej
pamięci programu podaje poziom niski na końcówkę "PSEN" a następnie dokonuje odczytu .

9. Końcówka 30 (ALE)
- sygnał pojawiający się na tym wyprowadzeniu można nazwać "sygnałem zapisu adresu" do
dodatkowego zewnętrznego układu.

background image

10. Końcówka 31 (EA\)
- powinna być dołączona do masy jeżeli mikroprocesor pobiera rozkazy w zewnętrznej
pamięci programu lub do plusa zasilania (+5V) jeżeli z wewnętrznej.

stan na tym wejściu

określa sposób współpracy z pamięcią programu.

11. Końcówka 40 (Vcc)
- końcówka zasilania mikroprocesora 8051. Napięcie względem końcówki Vss (czyli masy) z
reguły nie może przekroczyć 6,5V .Dlatego układ mikrokontrolera zasilany jest napięciem
5V.

b) schemat blokowy:

Rys 2; Schemat blokowy mikrokontrolera.

Mikrokontroler 8051 złożony jest z następujących elementów:

• Generatora sygnałów zegarowych i układów kontrolno-taktujących
• Pamięci programu ROM lub EPROM (4kB w wersji podstawowej) - jest to pamięć ustalana
przy produkcji mikrokontrolera
• 128-bajtowej pamięci danych w obszarze wewnętrznej pamięci RAM (adresy 00...7Fh)
• zespołu rejestrów specjalnych (SFR-Special Function Registers) umieszczonych w
wydzielonym obszarze pamięci wewnętrznej RAM (adresy 80h...0FFh), poprzez które
możliwe jest sterowanie urządzeniami wewnętrznymi
• 16-bitowego licznika rozkazów (PC)
• 8-bitowej ALU (jednostki arytmetyczno-logicznej)
• Czterech grup rejestrów (R0-R7), z których każda zawiera osiem 8-bitowych rejestrów
umieszczonych w wewnętrznej pamięci danych RAM
• 16-bitowego wskaźnikowego rejestru danych DPTR (rejestr SFR o adresie 82h)
• 8- bitowego wskaźnika stosu SP (rejestr SFR o adresie 81h)
• czterech 8-bitowych portów we-wy PO-P3 (bufory w bloku SFR pod adresami 80h,90h,A0h
i B0h)
• dwóch 16-bitowych układów czasowo-licznikowych TIMER 0 i TIMER 1 . Układy te mogą
zlicza impulsy zegarowe lub impulsy przychodzące z zewnątrz.

background image

• sterownika szeregowej transmisji danych pozwalającego na zorganizowanie transmisji w
standardzie RS232 w dwu kierunkach jednoczenie
• sterownika przerwań przyjmującego przerwania z pięciu źródeł - dwa z układów
zegarowych (timerów), jedno ze sterownika transmisji szeregowej i dwa z linii zewnętrznych

2.

Część praktyczna – programowanie:

a) program 1 – zapalenie diody (włącznik):

Opis programu: Program ten ma za zadanie zapalenie diody. Następuje wyzerowanie
bitu b7 w porcie P1.7 , następnie zapalenie diody. W kodzie programu wstawiona jest
pętla – przez co program nie pozwala zakończyć działania bez ingerencji użytkownika z
zewnątrz. Dioda pozostaje zapalona. Wstawienie tego polecenia powoduje brak
możliwości przejścia do polecenia END bez ingerencji użytkownika.

Kod programu:

Opis działania poszczególnych

poleceń:

CLR P 1.7

L00

LJMP L00

END

Następuje wyzerowanie bitu 7 portu P1,

następnie zapalenie się diody.

Wstawienie etykiety

Skok do etykiety, wykonanie pętli.

Koniec programu, jednak z powodu

wstawienia pętli koniec programu należy

wywołać ręcznie poprzez polecenie RESET

RAM

Schemat blokowy programu:

START

Wyzerowanie bitu P
1.7, zapalenie diody

Etykieta L00

Koniec

(po RESET RAM)

background image

b) program 2 – zgaszenie diody (wyłącznik):

Opis programu: Zadaniem programu jest wyłączenie palącej się diody po pewnym czasie
opóźnienia. Po upływie wyznaczonego czasu musi nastąpić przypisanie bitowi 7 z portu
P 1.7 stanu wysokiego, co doprowadza do wygaszenia diody. Potem wprowadzona zostaje
pętla, której działanie skutkuje tym, że dioda pozostaje wyłączona, aż do momentu
ręcznego wyłączenia programu.

Kod programu:

Opis działania poszczególnych

poleceń:

CLR P 1.7

MOV A, #10H

LCAL DEL_100

SETB P1.7

L00

LJMP L00

END

Następuje wyzerowanie bitu 7 portu P1,

następnie zapalenie się diody.

Wprowadzenie do akumulatora A liczby 16.

Wywołanie opóźnienia odpowiadającego

krotności [A]*100ms

Przypisanie bitowi 7 portu P1.7 stanu

wysokiego 1. Skutkuje to zgaszeniem diody.

Wstawienie etykiety

Skok do etykiety, wykonanie pętli.

Zakończenie działania programu. Z powodu

wstawienia pętli koniec programu należy

wywołać ręcznie poprzez polecenie RESET

RAM

Schemat blokowy programu:

START

Wprowadzenie do akumulatora
A liczby 16

Opóźnienie (wartość A*100ms)

Stan wysoki dla bitu
7 portu P1.7
(zgaszenie diody)

Etykieta L00

Koniec

(po RESET RAM)

background image

c) program 3 – układ migającej diody:

Opis programu: Zadaniem programu jest włączenie i wyłączenie diody. W kodzie
programu wykorzystano pętlę zawierająca instrukcję zapalanie i wyłączania diody. Okres
świecenia diody odpowiada jej czasowi wygaszenia z powodu jednakowo
zadeklarowanych wartości opóźnienia. Dioda świeci się przez 1 s (10*100ms) oraz
pozostaje zgaszona również przez 1s.

Kod programu:

Opis działania poszczególnych

poleceń:

L00

MOV A, #0AH

LCAL DEL_100

CLR P 1.7

MOV A, #0AH

LCAL DEL_100

SETB P1.7

LJMP L00

END

Wstawienie etykiety

Wprowadzenie do akumulatora A liczby 10.

Wywołanie opóźnienia odpowiadającego

krotności [A]*100ms

Następuje wyzerowanie bitu 7 portu P1,

następnie zapalenie się diody.

Wprowadzenie do akumulatora A liczby 10.

Wywołanie opóźnienia odpowiadającego

krotności [A]*100ms

Przypisanie bitowi 7 portu P1.7 stanu

wysokiego 1. Skutkuje to zgaszeniem diody.

Skok do etykiety, wykonanie pętli.

Zakończenie działania programu. Z powodu

wstawienia pętli koniec programu należy

wywołać ręcznie poprzez polecenie RESET

RAM

Schemat blokowy programu:

START

Wprowadzenie do akumulatora
A liczby 10

Opóźnienie (wartość A*100ms)

Wyzerowanie bitu P 1.7,
zapalenie diody

Etykieta L00

Wprowadzenie do akumulatora
A liczby 10

Opóźnienie (wartość A*100ms)

Stan wysoki dla bitu
7 portu P1.7
(zgaszenie diody)

Koniec

(po RESET RAM)

background image

d) program 4 – układ migającej diody z diodą włączoną na początku:

Opis programu: Zadanie programu jest niemalże identyczne jak w programie 3. Różnica
polega na tym, że w programie 4 działanie programu rozpoczyna się od zapalenia diody.

Kod programu:

Opis działania poszczególnych

poleceń:

L00

CLR P 1.7

MOV A, #0AH

LCAL DEL_100

SETB P1.7

MOV A, #0AH

LCAL DEL_100

CLR P 1.7

LJMP L00

END

Wstawienie etykiety

Następuje wyzerowanie bitu 7 portu P1,7

następnie zapalenie się diody.

Wprowadzenie do akumulatora A liczby 10.

Wywołanie opóźnienia odpowiadającego

krotności [A]*100ms

Przypisanie bitowi 7 portu P1.7 stanu

wysokiego 1. Skutkuje to zgaszeniem diody.

Wprowadzenie do akumulatora A liczby 10.

Wywołanie opóźnienia odpowiadającego

krotności [A]*100ms

Następuje wyzerowanie bitu 7 portu P1,

następnie zapalenie się diody.

Skok do etykiety, wykonanie pętli.

Zakończenie działania programu. Z powodu

wstawienia pętli koniec programu należy

wywołać ręcznie poprzez polecenie RESET

RAM

background image

Schemat blokowy programu:

START

Etykieta L00

Wyzerowanie bitu P 1.7,
zapalenie diody

Wprowadzenie do akumulatora
A liczby 10

Opóźnienie (wartość A*100ms)

Stan wysoki dla bitu
7 portu P1.7
(zgaszenie diody)

Wprowadzenie do akumulatora
A liczby 10

Opóźnienie (wartość A*100ms)

Wyzerowanie bitu P 1.7,
zapalenie diody

Koniec

(po RESET RAM)

background image

e) program 5 – układ migającej diody – różne okresy zapalanie i wygaszania

(zapalanie – 1,5s, wygaszanie – 0,5s) – przerywacz sterowany czasowo:

Opis programu: Głównym zadaniem programu jest włączanie oraz wyłączanie diody –
podobnie jak to miało miejsce w programie 3. Aby spełniać stawiane nam wymagania,
musimy jednak zmodyfikować czas opróżnień. Aby wydłużyć czas zaświecania diody
modyfikujemy następującą część kodu: MOV A, #0FH ; LCALL DEL_100.
Liczba F w zapisie heksadecymalnym jest odpowiednikiem liczby 15 w zapisie
dziesiętnym. Modyfikacja ta pozwala na wydłużenie czasu zapalania się diody do 1,5s
(15*100ms). Następnie dokonano modyfikacji czasu wygaszania diody. Tutaj jednak
wartość heksadecymalna A została zastąpiona wartością 5 poprzez polecenie: MOV A,
#05H
co daje po wykonaniu obliczeń oczekiwaną wartość 0,5s.

Kod programu:

Opis działania poszczególnych

poleceń:

L00

MOV A, #05H

LCAL DEL_100

CLR P 1.7

MOV A, #0FH

LCAL DEL_100

SETB P1.7

LJMP L00

END

Wstawienie etykiety

Wprowadzenie do akumulatora A liczby 5.

Wywołanie opóźnienia odpowiadającego

krotności [A]*100ms

Następuje wyzerowanie bitu 7 portu P1,

następnie zapalenie się diody.

Wprowadzenie do akumulatora A liczby 15.

Wywołanie opóźnienia odpowiadającego

krotności [A]*100ms

Przypisanie bitowi 7 portu P1.7 stanu

wysokiego 1. Skutkuje to zgaszeniem diody.

Skok do etykiety, wykonanie pętli.

Zakończenie działania programu. Z powodu

wstawienia pętli koniec programu należy

wywołać ręcznie poprzez polecenie RESET

RAM

background image

Schemat blokowy programu:

3.

Wnioski:

- Program I – włącznik : może zostać wykorzystany jako włącznik urządzeń
np. wciskając kontrolkę od telewizora powodujemy zapalenie się diody, która pozostaje
włączona, aż do ingerencji użytkownika(program działa w pętli)
-Program II – wyłącznik: jest przeciwieństwem programu I – może zostać wykorzystany
jako wyłącznik np. podczas gdy telewizor jest w stanie czuwania(świeci się kontrolka) to
po naciśnięciu przycisku – następuje jej zgaszenie i pozostaje zgaszona, aż do kolejnej
ingerencji osoby obsługującej(program działa w pętli)
- Program III - przerywacz: zapalanie i gaszenie diody co 1s – taki program może być
wykorzystany do sterowania sygnalizacją świetlna migającą – np. często zdarza się na
przejazdach kolejowych ,ze sygnalizator migając ostrzega nas o niebezpieczeństwie

START

Etykieta L00

Wprowadzenie do akumulatora
A liczby 5

Opóźnienie (wartość A*100ms)

Wyzerowanie bitu P 1.7,
zapalenie diody

Wprowadzenie do akumulatora
A liczby 15

Opóźnienie (wartość A*100ms)

Stan wysoki dla bitu
7 portu P1.7
(zgaszenie diody)

Koniec

(po RESET RAM)

background image

- Program IV: jest on modyfikacją programu 3-go: może zostać wykorzystany
również w sygnalizacji świetlnej podczas gdy sygnalizacja przechodzi w tryb pracy
nocnej – najpierw pali się światło – następnie przechodzi do trybu migającego kolorem
pomarańczowym(miganie pozostaje, aż do porannego włączenia sygnalizacji)
- Program V - przerywacz sterowany czasowo: program ten może być wykorzystany do
sterowania długościami faz sygnalizacji świetlnej, która jak wiemy pracuje fazowo –
poprzez zmianę wartości wprowadzanej do akumulatora – możemy wpływać na czas
poszczególnej fazy – zapalanie i gaszenia diody/światła
- zestaw rozkazów wykorzystany w mikrokontrolerach został dobrany pod kątem
wykorzystania w układach sterujących
- poprzez wprowadzanie do akumulatora odpowiedniej liczby w zapisie

heksadecymalnym możemy wpływać na krotność opóźnienia wywołania danej funkcji
(procedury) – liczba wprowadzona do akumulatora jest mnożnikiem naszego opóźnienia
deklarowanego za pomocą komendy: LCAL DEL_100 – powoduje to krotność
krotności [A]*100ms

- modyfikowane programy działają w pętli, więc polecenie END nie powoduje ich

zakończenia – w celu zakończenia musimy skorzystać z polecenie RESET RAM


Wyszukiwarka

Podobne podstrony:
Dariusz Walencik mikrokontrolery4(2)
Dariusz Walencik przerzutniki poprawa
Dariusz Walencik ukladydiodowe poprawa
Dariusz Walencik termodynamika
Dariusz Walencik przerzutniki
Dariusz Walencik ukladydiodowe
Poprawa Wenderlich Dariusz cw2 sroda doc
test poprawkowy grupa 1
WADY STÓP poprawki
ZPSBN T 24 ON poprawiony
Prezentacja poprawiona
Chemia organiczna czesc I poprawiona
Postępowanie poprawione
Wykład 5 Sektor finansów publicznych poprawiony

więcej podobnych podstron