Ć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].