Instrukcja_Lab3(2).pdf

(1671 KB) Pobierz
rchitekturykomputerówisystemyoperacyjne
rchitekturakomputerówiytemyoperacyjne
Instrukcja laboratoryjna
Spotkanie 3
WywietlaczLCD,terowanieiprzykłady
Autorzy: mgr inż Paweł Dąbal
Ostatnia aktualizacja: 07.11.2010r.
Wersja:
1.0.0
 
Architektury komputerówisystemyoperacyjne
Spis treści
1.
Wersja 1.0.0
Strona 2
1073139617.007.png 1073139617.008.png
 
Architektury komputerówisystemyoperacyjne
Laboratorium 3 – wywietlacz LCD terowanie i prykłady
1.1. Cel ćwiczenia
Zapoznanie z obługą wywietlaca LCD (dwie linie po enacie naków) e terownikiem HD44780.
Prybliżenie funkcji sprintf() łużącej do tworzenia sformatowanego tekstu dla wywietlacza.
Utrwalenie wceniej zdobytej wiedzy z zakreu piania programów dla mikrokontrolera STM32
1.2. Wymagania
Znajomod dokumentacji terownika HD44780 (8. str.8-33, str.46);
Znajomod chematu blokowego P (2. str.11);
Znajomod chematu i poobu podłącenia LCD do P (7. str.4);
Koniguracja rejetrów GPIOx odpowiedzialnych za porty we/wy (1. str.146-160);
Podtawowa najomod jyka C
1.3. Przykładowe pytania kontrolne
W jakim trybie pracy P komunikuje i wywietlacem LCD?
Ile maksymalnie naków można wywietlid na LCD?
W jaki poób regulujemy kontrat wywietlanych naków?
Jak można terowad podwietleniem LCD?
Jakie polecenie spowoduje ustalenie portu w stan wysoki?
Do jakich linii P pryłącone ą pryciki ora dżojtik?
1.4. Wprowadzenie do ćwiczenia
Schemat podłącenia LCD do P predtawiony otał w (7. str.4) Linie danych podłącone ą odpowiednio
do natpujących wyprowadeo mikrokontrolera: D7->PC0, D6->PC2, D5->PC2, D4->PC3. Sygnały terujące
natomiast odpowiednio do: E->PC10, RW->PC11, RS->PC12. Zamienienie kolejnoci bitów linii danych powoduje
koniecnod programowej miany kolejnoci bitów w wyyłanych pół bajtach przed ich tranmiją Powoduje to
wike łożenie programu odpowiedialnego a komunikacj LCD Do regulacji kontratu łuży potencjometr
montażowy P2 umiecony nad wywietlacem Podwietlenie diodami LED wywietlaca jet ależne od kon-
figuracji zwory JP2 włącone/wyłącone na tałe lub terowane ygnałem PWM podanym na wejcie
LED_PWM łąca pilkowego JP7 (należy doprowadid ygnał PWM jednego wyprowadeo mikrokontrolera
np wyjciem licnika pracującego w trybie PWM). Zetawy laboratoryjne domylnie poiadają włącone pod-
wietlenie wywietlaca na tałe.
Pred właciwą procedurą inicjowania wywietlaca LCD należy konigurowad ytem egarowy P oraz li-
nie wejcia/wyjcia portu GPIOC 0, 1, 2, 3, 10, 11, 12. W prygotowanej aplikacji jako ródło ygnału egarowe-
go wybrany otał ewntrny reonator kwarcowy 8MH którego ctotliwod powielono wykorytaniem
ptli PLL do 72MH. Włącone otały ygnały egarowe dla wykorytywanych bloków (GPIOC, GPIOB, GPIOA,
AFIO, TIM2).
Dla czytelniejszego zapisu ygnałów doprowadzonych do LCD tworone otały natpujące deinicje
#define LCD_D4
((u16)0x0008) // PC3
#define LCD_D5
((u16)0x0004) // PC2
#define LCD_D6
((u16)0x0002) // PC1
#define LCD_D7
((u16)0x0001) // PC0
#define LCD_D_ALL
((u16)0x000F) // PC0, PC1, PC2, PC3
#define LCD_RS
((u16)0x1000) // PC12
#define LCD_RW
((u16)0x0800) // PC11
#define LCD_EN
((u16)0x0400) // PC10
Dla celu prełącania kierunku tranmiji linii danych deiniowano natpujące definicje:
#define LCD_GPIO_L_MASK 0xFFFF0000 // Maska linii danych
Wersja 1.0.0
Strona 3
1073139617.001.png 1073139617.002.png
 
Architektury komputerówisystemyoperacyjne
#define LCD_GPIO_H_MASK 0xFFF000FF // Maska linii sterujących
// Konfiguracja młodszego bajtu GPIOC w trybie odczytu z LCD
#define LCD_GPIO_READ_L ((I_FLOTING<<12)|(I_FLOTING<< 8)|(I_FLOTING << 4)|(I_FLOTING << 0))
// Konfiguracja starszego bajtu GPIOC w trybie odczytu z LCD
#define LCD_GPIO_READ_H ((O_PP_2MHz<<16)|(O_PP_2MHz<<12)|(O_PP_2MHz << 8))
// Konfiguracja młodszego bajtu GPIOC w trybie zapisu do LCD
#define LCD_GPIO_WRITE_L ((O_PP_2MHz<<12)|(O_PP_2MHz<< 8)|(O_PP_2MHz << 4)|(O_PP_2MHz << 0))
// Konfiguracja starszego bajtu GPIOC w trybie zapisu do LCD
#define LCD_GPIO_WRITE_H ((O_PP_2MHz<<16)|(O_PP_2MHz<<12)|(O_PP_2MHz << 8))
Definicje LCD_GPIO_WRITE_H i LCD_GPIO_READ_H ą identycne i podane otały dla pełnego apiu (nie
ma zmiany kierunku transmisji na liniach terujących) Do obługi modułu wywietlaca łużą dwie podtawowe
funkcje LCD_SendByte() oraz LCD_ReadByte() Pierwa nich umożliwia wyłanie do LCD jednego bajtu druga
natomiat odcyt bajtu LCD w trybie pracy magitralą 4 bitową Funkcja odcytu wykorystywana jest do
prawdania tanu terownika wywietlaca cy ukoocył wceniej lecone zadanie (MSB = 1 - ajty) Do a-
inicjowania wywietlaca łuży unkcja LCD_Init() która wyyła do wywietlaca ereg okrelonych komend
godnie procedurą podaną w (8 tr46) Funkcje LCD_SendCmd() oraz LCD_SendData() łużą do wyłania bajtu
komendy i danych do LCD Ich diałanie polega na utawieniu linii terującej RS ależnoci od typu danych
a natpnie wywołaniu unkcji LCD_SendByte() . Kolejna funkcja LCD_SendText() umożliwia wyłanie łaocucha
naków akooconego nakiem ‘\0’ Łaocuch nie powinien byd dłuży niż 16 naków be ‘\0’ w preciwnym
wypadku wywietlone otanie jedynie pierwe 16 naków Do terowania wywietlacem łużą dwie unkcje
LCD_Clear() powoduje apianie do pamici terownika LCD na wytkich poycjach wartoci 0x20 (kod ASCII
pacji) odpowiada to kaowaniu wywietlanych naków LCD_GoTo(wiersz, kolumna) ustawia kursor na wska-
zanej pozycji.
Dodatkowo deiniowane otały dwie unkcje umożliwiające wprowadenie opónienia o adaną wartod
mikro i milisekund – delay_us() i delay_ms() . Wartod generowanego opónienia jet bliżona do wywołanej Do
generowania precyzyjnych odcinków cau należy wykorytad jeden dotpnych licników Wszystkie w/w
unkcje najdują i w pliku lcd4bit.c natomiast prototypy funkcji i stosowane definicje w lcd4bit.h . Do korzy-
tania wywietlaca w najprotym prypadku wytarcy najomod dwóch unkcji LCD_GoTo(wiersz, kolum-
na) która umieca kuror w poycji danej wpółrdnymi ora LCD_SendText(”Tekstdowyslania\0”) .
Dla uproszczenia podczas tworzenia programu i uczynienia zapisu czytelniejszym wykrywanie tanów pry-
cików i dżojtiku odbywa i popre poniże deinicje które wracają wartod TRUE w stanie aktywnym:
#define
SW0 ((GPIOA->IDR & GPIO_Pin_0) == RESET)
#define
SW1 ((GPIOA->IDR & GPIO_Pin_1) == RESET)
#define
SW2 ((GPIOA->IDR & GPIO_Pin_2) == RESET)
#define
SW3 ((GPIOA->IDR & GPIO_Pin_3) == RESET)
#define
PRES ((GPIOC->IDR & GPIO_Pin_5) == RESET)
Wersja 1.0.0
Strona 4
1073139617.003.png 1073139617.004.png
 
Architektury komputerówisystemyoperacyjne
1.5. Opis przygotowanego projektu bazowego
Kolejne zadania baowad bdą na wceniej prygotowanym projekcie awierającym ablony unkcji. Wy-
korytując kompilacje warunkową możemy wybrad które unkcje bdą uwgldnione w proceie kompilacji.
Nazwy tych funkcji to: funC1, funC2, funC3, funC4, funC5 . Umiecone otały w oddielnych plikach o takiej
samej nazwie jak nazwa funkcji. Wyboru funkcji (zadania) dokonujemy poprzez wybranie z pola Select Target
(jego położenie anacono na poniżym ry. 1) odpowiedniej pozycji: lab3_cw1 – lab3_cw5 . Po każdoraowej
zmianie należy kompilowad program (klawi F7)
Ry.1.ŚrodowikoIDEwtrybieedycjiprogramu.
Zajcia podielone otały na 5 adao które umożliwią aponanie i obługą i wykorytaniem wywie-
tlacza LCD. Ich lista przedstawiona jest poniżej.
Zdania :
1. Analiza funkcji inicjalizacji i komunikacji z LCD - pliki lcd4bit.c i lcd4bit.h.
2. Wywietlenie imion oób w podgrupach oraz animacja tekstu na LCD – wykorzystanie funkcji
LCD_GoTo() oraz LCD_SendText() .
3. Wykorzystanie funkcji sprintf() do wywietlania ormatowanych licb awierających cd ułamkową.
4. Wywietlenie protego dwupoiomowego menu ora nawigacja po nim wykorzystaniem dotpnego
joysticka.
5. Premiecanie naku ‘X’ po ekranie i regulacja podwietlenia wywietlaca LCD wykorytaniem y-
gnału PWM.
Wersja 1.0.0
Strona 5
1073139617.005.png 1073139617.006.png
 
Zgłoś jeśli naruszono regulamin