Ćwiczenie 1

Transkrypt

Ćwiczenie 1
Programowanie mikrokontrolera PIC18F8722
1
Ćwiczenie 4
Obsługa wyświetlacza LCD oraz odczyt temperatury z
termistora.
1. Cel ćwiczenia
Podstawy programowania mikrokontrolera PIC18F8722 w języku C. Obsługa
wyświetlacza LCD z wykorzystaniem istniejącej biblioteki. Odczyt wartości napięcia z
termistora wraz z jego przetworzeniem przez przetwornik analogowo-cyfrowy.
2. Wymagania
Realizacja ćwiczenia wymaga podstawowej znajomości mikrokontrolera PIC18F8722 oraz
języka C. Ponadto przed rozpoczęciem realizacji ćwiczenia należy zapoznać się z
następującymi dokumentami:
[1] ‘PIC18F8722 Family.pdf’ – s.5 (Pin Diagram – PIC18F8722), 143-144 (Table 11-5, page:
141-142), Microchip Technology Inc., 2004.
[2] C Compiler Reference Manual, CCS, 2015.
[3] Biblioteka LCD.h (ZIP).
[4] ‘Thermistor_MCP9700.pdf’ (page: 1,8), Microchip Technology Inc., 2007.
3. Programowanie wyświetlacza LCD i odczytu temperatury
3.1. Wprowadzenie
Demo Board wyposażony jest w standardowy wyświetlacz LCD oparty na sterowniku
HD44780. Komunikacja między mikrokontrolerem PIC18F8722 a LCD odbywa się poprzez
układ ekspandera MCP23S17 z wykorzystaniem interfejsu SPI.
3.2. Interfejs SPI
Szeregowy interfejs SPI (ang. Serial Peripherial Interface) służy do dwukierunkowej (fullduplex), synchronicznej transmisji danych pomiędzy mikrokontrolerem a zewnętrznymi
układami peryferyjnymi. Interfejs SPI jest trójprzewodowy, składa się z dwóch linii
synchronicznie przesyłających dane w przeciwnych kierunkach oraz linii z sygnałem
taktującym synchronizującym transfer danych. Transfer danych przez interfejs SPI odbywa
się w układzie master-slave. Jeżeli w systemie znajduje się więcej niż 1 mikrokontroler, to
tylko jeden z nich w danej chwili pełni rolę urządzenia master.
Rys.1. Transmisja danych po liniach magistrali SPI [1]
Programowanie mikrokontrolera PIC18F8722
2
Interfejs SPI składa się z dwóch rejestrów przesuwnych połączonych w licznik
pierścieniowy i generatora sygnału taktującego (rys.1). Generator sygnału taktującego
znajduje się zawsze w układzie nadrzędnym (master). Linia MISO jest wejściem danych dla
urządzenia master, a wyjściem dla slave, natomiast linia MOSI jest wyjściem dla urządzenia
master, a wejściem dla slave. Linia SCK jest wejściem taktującym dla układu slave oraz
wyjściem dla master. Sygnał taktujący jest zawsze generowany przez układ nadrzędny
(master) bez względu na to czy dane są przez niego nadawane, czy też odbierane. Sygnał
taktujący jest nadawany jedynie podczas transmisji. Transmisje na liniach magistrali SPI są
zawsze dwukierunkowe. Nadawaniu danych na linii MOSI przez układ master towarzyszy
zawsze nadawanie danych na linii MISO przez układ slave. Nie wszystkie nadawane dane
niosą informacje, najczęściej w jednym kierunku są nadawane dane niosące informacje,
podczas, gdy w drugim są nadawane dane puste
Układ nadrzędny (master) wybiera poszczególne układy podrzędne (slave) przez jedną z
równoległych linii portu dołączonych do wyprowadzeń SS układów podrzędnych. Urządzenie
slave zostanie wybrane, gdy na jego wejście SS zostanie podany określony stan (istnieją
urządzenia wybierane stanem niskim oraz stanem wysokim). W czasie transmisji, w celu
uniknięcia kolizji, tylko jeden układ podrzędny może być aktywny na liniach interfejsu.
3.3. Biblioteka LCD.h
Obsługa wyświetlacza LCD polega na wysłania z mikrokontrolera PIC18F8722 (z
wykorzystaniem interfejsu SPI) określonych danych na ekspander MCP23S17, za
pośrednictwem którego wysterowana będzie konkretna linia wyświetlacza LCD
interpretująca dane zgodnie z oprogramowaniem sterownika HD44780.
W celu uproszczenia algorytmu obsługi wyświetlacza LCD stworzona została biblioteka
zawierająca niezbędne deklaracje funkcji (zawarte są one między liniami 29-41 biblioteki).
Przed przystąpieniem do wyświetlania na wyświetlaczu LCD należy pamiętać o jego
wcześniejszej inicjalizacji, która obejmuje włączenie LCD oraz ustawienie kursora na
początku pierwszej linii.
3.4. Przebieg ćwiczenia
a) Podłączenie stanowiska
Podłączyć programator PICkit™3 do komputera PC poprzez złącze USB. Podłączyć
płytkę mikrokontrolera PIC18F8722 do programatora PICkit™3 oraz do zasilania.
b) Projekt
Uruchomić środowisko MPLAB X IDE. Utworzyć nowy projekt. W tym celu z menu
środowiska IDE wybrać funkcję File -> New Project uruchamiając kreator projektu. W
kreatorze, w kolejnych krokach, należy wybierać:
1. Choose Project -> wybrać kategorię "Microchip Embedded" oraz rodzaj projektu
"Standalone Project".
2. Select Device -> Family "Advanced 8-bit MCUs (PIC18)" oraz Device: PIC18F8722.
3. Select Tool -> PICkit3 o konkretnym numerze seryjnym wykrytym przez środowisko.
4. Select Compiler -> CCS C Compiler wraz ze ścieżką w jakiej jest zainstalowany.
5. Select Project Name and Folder -> określamy nazwę i miejsce zapisu projektu.
c) Plik źródłowy
Utworzyć plik z kodem źródłowym (File -> New File). W kreatorze, w kolejnych
krokach, należy wybierać:
Programowanie mikrokontrolera PIC18F8722
3
1. Choose File Type -> w zakładce Project wskazujemy nazwę projektu, do którego ma
zostać dodany nowo utworzony plik, następnie wybieramy Categories: "C" oraz File
Types "C Source File".
2. Name and Location -> nadajemy nazwę oraz pozostawiamy domyślną lokalizację (tj.
obecnego projektu z pkt-u b).
d) Kod źródłowy
Otworzyć plik źródłowy w edytorze kodu źródłowego. Wpisać odpowiedni kod zgodnie z
pkt 4.2.
e) Ustawienia
W kodzie źródłowym zamieszczamy linię odpowiadającą za ustawienie oscylatora w tryb
"High Speed" oraz wyłączenie Watchdog Timer:
#pragma fuses HS, NOWDT
f) Kompilacja, programowanie, uruchomienie
W celu skompilowania projektu, zaprogramowania mikrokontrolera z jego jednoczesnym
uruchomieniem należy wywołać funkcję Run -> Run Main Project – ‘F6’.
g) Sprawdzenie
Sprawdzić działanie programu. Zapamiętać opisany wyżej cykl projektowania
oprogramowania. W kolejnych ćwiczeniach cykl ten będzie wielokrotnie powtarzany.
4. Zadania do wykonania
4.1. Wprowadzenie
Wyświetlanie bieżącej wartości temperatury powinno zostać wykonane przy użyciu
wyświetlacza LCD. Do program powinien zostać dołączona biblioteka obsługi wyświetlacza
LCD, którą można skopiować z dysku systemowego z folderu PICC\ LCD.h lub ze strony
internetowej http://elektronika.iee.put.poznan.pl/TM_IIstInf/rozw/LCD.h.
4.2. Przebieg ćwiczenia
Pomoc w zakresie wykorzystywanych funkcji i elementów języka C uzyskać można w
pliku pomocy kompilatora Ccsc.chm znajdującym się w folderze PICC na dysku
systemowym komputera w laboratorium lub plik ten dostępny jest na stronie
http://elektronika.iee.put.poznan.pl/Download/Pic/Ccsc.chm oraz w formacie PDF w pozycji
[2] dostępnej jako załącznik do ćwiczenia 4.
a) Opracować program realizujący wyświetlenie pojedynczych znaków w pierwszej linii
wyświetlacza LCD. Wykorzystać deklaracje funkcji znajdujące się w bibliotece LCD.h
między liniami 29-41 kodu [3].
b) Zmodyfikować program z punktu a) w taki sposób, aby wyświetlić wcześniej
zadeklarowany ciąg znaków. Zrealizować przejście do drugiej linii wyświetlacza LCD z
wyświetleniem dowolnego napisu.
Programowanie mikrokontrolera PIC18F8722
4
c) Opracować program odczytujący temperaturę z termistora (RA1) i wyświetlający ją w
pierwszej linii LCD. W tym celu do konfiguracji przetwornika A/C wykorzystać funkcje
wbudowane: setup_adc_ports(), setup_adc(), set_adc_channel().
W celu przeskalowania wartości napięcia odczytanej z przetwornika ADC na temperaturę
skorzystać z noty katalogowej termistora MCP9700 [4].

Podobne dokumenty