Regulacja prędkości obrotowej silnika prądu stałego Mikrokontroler jednoukładowy 8052



Pobieranie 22.21 Kb.
Data08.05.2016
Rozmiar22.21 Kb.
Regulacja prędkości obrotowej silnika prądu stałego

Mikrokontroler jednoukładowy 8052
Uproszczony schemat blokowy kontrolera przedstawia rysunek poniżej.

W skład kontrolera wchodzą:
Jednostka arytmetyczno logiczna czyli układ wykonawczy kontrolera, stanowi cczęść mikroprocesora 8 bitowego, którego części składowych nie pokazano na rysunku
Pamięć programu typu EEPROM (kasowana i zapisywana elektrycznie)
Pamięć danych RAM (do przechowywania danych użytkownika), w pamięci ram wyróżniamy osiem komórek, które są również nazywane rejestrami roboczymi R0, R1 itd
Układy peryferyjne:
-Układ czasowo licznikowy, który może zliczać impulsy zewnętrzne (licznik) lub wewnętrzne, podzielonego oscylatora z układu generatora zegarowego.

-Port szeregowy, umożliwiający wymianę danych z innym procesorem lub komputerem

-system przerwań, który powoduje zarzucenie wykonywania programu i obsługę zdarzenia zewnętrznego lub licznika lub portu szeregowego.
Magistrala danych mikrokontrolera jest 8 bitowa, czyli wymiana informacji pomiędzy częściami składowymi kontrolera zachodzi przy pomocy 8 sygnałów, z których każdy może być 0 lub 1 logiczną.
Podstawowe rozkazy użyteczne w programie:

MOV adres, #dana

Adres to np. nazwa portu np. P1, P0 itp

Dana to liczba dziesiętna- #10, heksadecymalna- #10H, binarna- #00010000B

(przykład MOV 10H,#20H- ładuje liczbę 20 w kodzie hex do komórki pamięci RAM o adresie 10 w hex)



MOV ri,#dana

Ri- jeden z ośmiu rejestrów R0, R1, R2, R3, - R7

(przykład MOV R5,#23H- ładuje liczbę 23 w kodzie hex do rejestru R5)

MOV A,#dana





  1. rejestr specjalny akumulator

(przykład MOV A,#10- ładuje liczbę 10 w kodzie dziesiętnym do akumulatora A)
MOV A, ri- załadowanie do akumulatora A danej z rejestru ri

(przykład MOV A,R2 łąduje liczbę z r2 do akumulatora A)


MOV A,adres- załadowanie do akumulatora A danej spod adresu

(przykład MOV A,13H-ładuje zawartość komórki o adresie 13 w kodzie hex do akumulatora)



DJNZ ri,etykieta

Zmniejsz zawartość rejestru ri o 1 i jeżeli po zmniejszeniu w rejestrze nie jest 0 skocz do etykiety

(przykład DJNZ R3,ala- zmniejsza zawartość rejestru R3 o 1 i jeżeli w R3 nie ma zero skacze do etykiety ALA)
Etykieta to dowolna kombinacja znaków alfanumerycznych

JB Pn.i,etykieta

Skocz jeżeli bit o numerze- „i” (licząc od 0) portu- „n” jest równy jeden czyli na przykład jest na nim napięcie 5V


(przykład JB P1.0,ala- testuje bit 0 portu P1 i jeżeli na tym bicie jest 5V („1”) skacze do etykiety ala)

JNB Pn.i,etykieta

Skocz jeżeli bit o numerze- „i” (licząc od 0) portu- „n” jest równy zero czyli na przykład jest na nim napięcie 0V

(przykład JNB P1.4,ola- testuje bit 4 portu P1 i jeżeli na tym bicie jest 0V („0”) skacze do etykiety ola)

CJNE a,#dana,etykieta

Porównaj zawartość akumulatora A z daną #dana i skocz do etykiety jeżeli te dwie wartości są różne

(przykład CJNE A,#24H,ewa- porównuje zawartość akumulatora z liczbą 24 w hex i jeżeli jest ona różna to skacze do etykiety ewa)
INC A- zwiększ zawartość akumulatora A o jeden
DEC A- zmniejsz zawartość akumulatora A o jeden

LJMP ala


Skocz do etykiety ala

MOV DPTR,#dana 16 bitowa

(załadowanie 16 bitowego rejestru adresowego dana)



MOVX @DPTR,A

Wysłanie danej z akumulatora do komórki zewnętrznej o adresie zawartym w DPTR



SILNIK PRĄDU STAŁEGO

Do zewnętrznego zatrzasku zapisywanego sekwencją rozkazów:


MOV A,#dana

MOV DPTR,#0000H

MOVX @DPTR,A
Jest podłączony 8 bitowy przetwornik cyfrowo analogowy.

Jest to układ, który zamienia 8 bitową wartość heksadecymalną na proporcjonalne do takiej nastawy, napięcie z zakresu 0 do 4V


Wysyłając do przetwornika te nastawy można regulować napięcie zasilające silnik, a więc i jego prędkość obrotową.
Na początek należy wpisać program:
(Pod Nortonem otwórz edycję pliku o dowolnej nazwie z rozszerzeniem S03)
ORG 2000h ;po asemblacji program zostanie umieszczony od

;adresu 2000h

MOV DPTR,#0000H ;wpisz do DPTR adres zatrzasku 0000h

ALA: MOV A,#0FFH ;wpisz do akumulatora liczbę FF w kodzie HEX

MOVX @DPTR,A ;wyślij daną z akumulatora pod adres zatrzasku

;zawarty w DPTR

LCALL OP ;wywołanie procedury opóźniającej

MOV A,#00H ;wpisz do akumulatora liczbę 00 w kodzie HEX

MOVX @DPTR,A ;wyślij daną z akumulatora pod adres zatrzasku

;zawarty w DPTR

LCALL OP

LJMP ALA ;zapętlenie programu czyli skok do samego siebie

;dyrektywa końca programu
OP: MOV R2,#01h

OP1: MOV R3,#0FFH


OP2:MOV R4,#0FFH

OP3: DJNZ R4,OP3

DJNZ R3,OP2

DJNZ R2,OP1

RET
Rozkaz RET to powrót z procedury.
Na początku programu należy wpisać dyrektywę ORG 2000H a na końcu END.

Zapisz program (klawisz F2)


Jest to tak zwana pętla w pętli wykorzystująca fakt iż wykonanie instrukcji DJNZ zabiera 2 mikrosekundy gdy kontroler jest taktowany sygnałem 12MHz


Aby język programu był zrozumiały dla programu asemblującego (sprawdzającego poprawność składni programu i zamieniającego go na kody heksadecymalne, zrozumiałe dla kontrolera, na początku programu należy dodać dyrektywę ORG 2000H, a na końcu END
Zasembluj program wpisując ( a8051 nazwa.S03 )
Zamień na kody heksadecymalne wpisując ( L nazwa )
Program należy wpisać do pamięci kontrolera via złącze szeregowe RS232.

Uruchom program M8.EXE następnie wciśnij dwukrotnie klawisz ENTER.

Przyciśnij przycisk RESET na module kontrolera 8051.

Na ekranie komputera pokaże się okno w którym widać po lewej stronie pamięć programu użytkownika od adresu 2000H, w prawej górnej części ekranu zawartość rejestrów R0-R7 oraz pamięci danych wbudowanej w kontroler (128 bjtów), w prawej dolnej części zawartość pozostałych rejestrów (Akumulator ACC, akumulator pomocniczy B, rejestr flagowy PSW, porty P0,P1,P2,P3 itp.).

Załaduj program naciskając klawisze „L” „R” „H” (load, ram, hex) i wpisz nazwę zbioru z rozszerzeniem *.HEX.

Uruchom program klawiszem „G” (go) jako adres początku przyjmując standardowy 2000H a adres końca 3000H.

Wyjście z opcji GO klawiszem ESC.

Po uruchomieniu spróbuj zmieniać wartość zasilającą silnik na inną niż 0FFH.


Do portu P1 (bity 0 i 1) są dołączone dwa przyciski. Jeżeli dany przycisk jest nie wciśnięty to na bicie portu jest „1”, jeżeli przycisk wciśniemy pojawi się „0” Napisz program w którym jeden przycisk zwiększa napięcie zasilające silnik a drugi obniża.







Pobieranie 22.21 Kb.





©absta.pl 2020
wyślij wiadomość

    Strona główna