|
1.Wstęp teoretyczny:
Mikrokontroler-układ scalony zbudowany z następujących elementów:
1.Centralnej jednostki procesora (CPU):
-rejestry,
-jednostka arytmetyczno-logiczna (ALU),
-układy sterujące (np. dekoder instrukcji)
-układ obsługi przerwań.
2.Pamięci programu (ROM):
-ROM
-PROM
-EPROM
-EEPROM
3.Pamięci danych (RAM)
4.Porty wejścia-wyjścia (I/0)
Schemat funkcjonalny mikrokontrolera 8051. [2]:
1.Centralna jednostka sterująca (CPU) koordynuje działanie wszystkich pozostałych układów i wykonuje wszystkie operacje (obliczenia) arytmetyczne i logiczne. Ponadto, podczas wykonywania instrukcji, CPU adresuje pamięć i układy wejścia/wyjścia, oraz odpowiada na zewnętrzne sygnały sterujące.
2.Pamięć programu (ROM) jest pamięcią nieulotną,zawierająca program i dane programu,dzielimy ją na:
-ROM - programowana maską w fazie produkcji,
-PROM - programowana jednorazowo przez użytkownika,
-EPROM, EEPROM - przystosowane do wielokrotnego programowania przez użytkownika.
3.Pamięć danych (RAM) jest pamięcią ulotną ,zerowaną dynamicznie,zawierającą wyniki obliczeń i zmienne do obliczeń,jest mniejsza od pamięci ROM.
4.Porty wejścia-wyjścia (I/O) - zbiory pinów zawierające uniwersalne końcówki,które mogą być albo portem wejścia,albo wyjścia. Porty łączą mikrokontroler ze światem zewnętrznym. Porty wejściowe umożliwiają odczytywanie informacji z takich źródeł jak przełączniki i czujniki sygnalizujące zdarzenia zewnętrzne. Porty wyjściowe wykorzystywane są do przesyłania informacji do urządzeń zewnętrznych, takich jak diody LED, przekaźniki, silniki, czy nawet inne mikrokontrolery.
W stanowisku laboratoryjnym wykorzystano mikrokontroler ATmega8 firmy ATMEL, 8-bitowy rodziny AVR, który dzięki architekturze RISC oraz wykonywaniu większości instrukcji w jednym cyklu maszynowym, osiąga wydajność obliczeniową do 1 MIPS (miliona operacji na sekundę) przy częstotliwości sygnału taktującego mikrokontrolera wynoszącej 1 MHz.
Mikrokontroler ATmega8 ma następujące parametry oraz cechy funkcjonalne:
mały pobór mocy
zaawansowana architektura RISC charakteryzująca się:
- 130 instrukcjami, z których większość jest wykonywana w jednym cyklu maszynowym
- 32 rejestrami 8-bitowymi ogólnego przeznaczenia
- maksymalną wydajnością 16 MIPS przy częstotliwości zegara 16 MHz
pamięci:
- 8 kB nielotnej pamięci Flash o trwałości 10 000 zapisów/kasowań
- 512 B pamięci EEPROM o trwałości 100 000 zapisów/kasowań
- 1 kB pamięci SRAM
- ma programowalne zabezpieczenia pamięci programu przed odczytem
układy peryferyjne:
- dwa 8-bitowe czasomierze/liczniki
- jeden 16-bitowy czasomierz/licznik - zegar czasu rzeczywistego z oddzielnym oscylatorem
- trzy kanały PWM (OC1A, OC1B, OC2)
- 6-kanałowy przetwornik A/C - cztery kanały o rozdzielczości 10 bitów i dwa o rozdzielczości 8 bitów
- szeregowy interfejs I2C
- programowany USART do transmisji przez RS232
- szeregowy interfejs Master/Slave SPI
- programowany tirem Watchdog z oddzielnym (wbudowanym) oscylatorem
- wbudowany komparator analogowy
specjalne wyposażenie mikrokontrolera:
- zerowanie po włączeniu mikrokontrolera - wewnętrzny kalibrowany oscylator RC
- wewnętrzne oraz zewnętrzne źródła sygnałów przerwań
- pięć trybów uśpienia: Idle, ADC Noise Reduction, Power - save, Power - down i Standby
23 linie I/O dowolnego wykorzystania
zakres napięć zasilających mikrokontroler:
- 2,7…5,5 V (ATmega8L)
- 4,5…5,5 V (Atmega8)
zakres częstotliwości sygnału taktującego mikrokontroler:
- 0…8 MHz (ATmega8L)
- 0…16 MHz (ATmega8)
pobierany prąd przy częstotliwości sygnału taktowania 4 MHz i przy napięciu zasilania 3 V (ATmega8L):
- w stanie aktywnym: 3,6 mA
- w trybie Idle: 1 mA
- w trybie Power - down: 0,5 A !
2.Przebieg ćwiczenia:
Przerzutnik monostabilny:
Programowanie portu wyjścia:
1.Ustawiamy piny.
2.Ustawiamy warunki początkowe np.SET1
3.Wydajemy polecenie zmiany sygnału.
4.Ustalamy czas na który sygnał ulegnie zmianie (wait ... s)
DIODY LED
PC4 → D1
Przerzutnik taki ma jeden stan stabilny. Po przyciśnięciu przycisku zostaje wygenerowany impuls, oraz na czas jego trwania jest zapalana dioda LED.
'nacisniecie S1 generuje logiczna jedynke na 4 sekundy
' Konfiguracja
$regfile = "m8def.dat"
$crystal = 8000000
' konfiguracja portow
Config Pinc.0 = Input 'przycisk S1 jako port we
Config Pinc.4 = Output 'dioda LED1 jako wy “Q” przerzutnika
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.2 , Rs = Portd.3
Cls
Lcd "przerzutnik"
Lowerline
Lcd "monostabilny"
Set Portc.0
Portc.4 = 1 'wylaczenie diody
Do
If Pinc.0 = 0 Then
Portc.4 = 0 ' załacznie lampki
Wait 4 'odmierza czas ..sek
End If
Portc.4 = 1
Loop
Przerzutnik bistabilny
Programowanie portów wejścia-wyjścia za pomocą przerzutnika RS:
1.Deklarujemy liczbę portów.
2.Ustawiamy stany zerowe na wejściach i wyjściach.
3.Wydajemy polecenie zmiany sygnału w zależności od informacji z punktu wejścia:(1,0),(0,1),(0,0)
4.Ustalamy czas na który sygnał ulegnie zmianie.
Przewody łączące DIODY LED:
PC4 → D1
PC5 → D2
Przyciśnięcie przycisku S1 powoduje zmianę stanu przerzutnika na logiczne „zero”. Zapala się jednocześnie dioda LED1 a gaśnie LED2. Przyciśnięcie przycisku S2 powoduje zmianę stanu przerzutnika na logiczną „jedynkę”, jednocześnie gaśnie dioda LED1, i zapala się dioda LED2.
$regfile = "m8def.dat"
$crystal = 8000000 ' Konfiguracja wyswietlacza LCD
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.2 , Rs = Portd.3
Config Pinc.0 = Input ' switch 1 "Set"
Config Pinc.1 = Input ' switch 2 "Reset"
Config Pinc.4 = Output 'wyjscie 1 "Q"
Config Pinc.5 = Output 'wyjscie 2 "NIE-Q"
Set Portc.0
Set Portc.1
Cls
Upperline : Lcd "przerzutnik"
Lowerline : Lcd "bistabilny"
set Portc.4
Set Portc.5
Do ' petla glowna
Waitms 25 'stan niedozwolony
If Pinc.1 = 0 And Pinc.0 = 0 Then
Set Portc.4
set Portc.5
Waitms 25
Lowerline : Lcd " NIEDOZWOLONY! "
Else 'Set
If Pinc.0 = 0 Then
Set Portc.4
Reset Portc.5
Waitms 25
Lowerline : Lcd " SET! "
End If
If Pinc.1 = 0 Then 'Reset
Reset Portc.4
Set Portc.5
Waitms 25
Lowerline : Lcd " RESET ... "
End If
End If
Loop
Generator impulsów
$regfile = "m8def.dat"
$crystal = 8000000
Config Pinc.4 = Output 'końcówka Portc.4 będzie wyjściem
Reset Portc.4
Do
Toggle Portc.4 'zmiana stanu na "1"
Waitms 500 'czekaj 0,5 sekundy
Toggle Portc.4 'zmień stan ponownie "0"
Waitms 500
Loop
|