GND(VSS) i VCC - masa i zasilanie. V0 - regulacja kontrastu

Podobne dokumenty
Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

Programowanie Mikrokontrolerów

1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych

Zespół Szkół Technicznych. Badanie wyświetlaczy LCD

Alfanumeryczny wyświetlacz LCD

Obsługa modułu wyświetlacza LCD

Zewnętrzne układy peryferyjne cz. 1 Wykład 12

Programowanie mikrokontrolerów. 8 listopada 2007

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

WYDZIAŁ ELEKTRYCZNY KATEDRA TELEKOMUNIKACJI I APARATURY ELEKTRONICZNEJ. Instrukcja do zajęć laboratoryjnych. Numer ćwiczenia: 2

Wyświetlacze graficzne : 162x64 z kontrolerem S1D x60 z kontrolerem S1D15710

Obsługa wyświetlaczy graficznych z wbudowanym kontrolerem S6B1713, część 2 Przykłady dla mikrokontrolera AT91SAM7S256

Mikrokontrolery AVR Wprowadzenie

Gdzie przyjęto, że: IR7...IR4 to starsze bity przesyłanej danej lub rozkazu, IR3...IR0 to młodsze bity przesyłanej danej lub rozkazu.

LITEcomp aplikacje Jednokanałowy woltomierz z pamięcią wyników pomiarów

Alternatywa dla alfanumerycznych wyświetlaczy LCD

Instytut Teleinformatyki

Wyświetlacz graficzny LCD ze sterownikiem

Instytut Teleinformatyki

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Opis procedur asemblera AVR

PRUS. projekt dokumentacja końcowa

Niektóre piny mogą pełnić różne role, zależnie od aktualnej wartości sygnałów sterujących.

4 Transmisja szeregowa, obsługa wyświetlacza LCD.

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD.

Czujnik zbliżeniowy indukcyjny

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI

Ćwiczenie 3 Wyświetlacz ciekłokrystaliczny

Uczeń/Uczennica po zestawieniu połączeń zgłasza nauczycielowi gotowość do sprawdzenia układu i wszystkich połączeń.

Stanowisko laboratoryjne dla mikrokontrolera ATXmega32A4 firmy Atmel

Instrukcja do ćwiczeń

Programowanie w językach asemblera i C

i uzyskać całkowicie zgaszoną diodę dla wypełnienia od wciśniętego przycisku inkrementowane lub dekrementowane

Kurs programowania mikrokontrolerów PIC (5)

MODBUS RTU wersja M1.14 protokół komunikacyjny wyświetlaczy LDN

2. Architektura mikrokontrolerów PIC16F8x... 13

Sterowanie wyświetlacza LCD typu HD44780

High Speed USB 2.0 Development Board

Programowanie mikrokontrolerów AVR z rodziny ATmega.

prostych wyświetlaczy

Wyjście do drukarki Centronix

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

INSTRUKCJA UŻYTKOWNIKA MPCC

Rodzaje peryferii. Wyświetlacze LCD. Przetworniki AC. Przetworniki CA, modulacja PWM. sterowanie silnikami i serwami

ZL8AVR. Płyta bazowa dla modułów dipavr

KOMUNIKACJA Z OTOCZENIEM MIKROKONTROLERA

Peryferia mikrokontrolerów - wykład 11

CECHY URZĄDZENIA: Podłączenie wyświetlacza

Elektroniczny Termostat pojemnościowych ogrzewaczy wody

ZL9AVR. Płyta bazowa dla modułów ZL7AVR (ATmega128) i ZL1ETH (RTL8019)

Program EDYTOR-AS-OUX

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Instytut Teleinformatyki

Rozdział ten zawiera informacje na temat zarządzania Modułem Modbus TCP oraz jego konfiguracji.

Magistrala SPI. Linie MOSI i MISO sąwspólne dla wszystkich urządzeńna magistrali, linia SS jest prowadzona do każdego Slave oddzielnie.

Laboratorium Systemów wbudowanych Wyższa Szkoła Zarządzania i Bankowości, Informatyka studia inżynierskie

Schemat blokowy architektury AVR

UW-DAL-MAN v2 Dotyczy urządzeń z wersją firmware UW-DAL v5 lub nowszą.

Sterownik procesorowy S-2 Komunikacja RS485 MODBUS

Dokumentacja Techniczna. Czytnik RFID UW-M4GM

Szkolenia specjalistyczne

Instytut Teleinformatyki

Opis funkcjonalny i architektura. Modu³ sterownika mikroprocesorowego KM535

Instrukcja obsługi i użytkowania Panel sterujący KPZ 52(E) 7

Projekt MARM. Dokumentacja projektu. Łukasz Wolniak. Stacja pogodowa

Dodatek D. Układ współpracy z klawiaturą i wyświetlaczem 8279

Instytut Teleinformatyki

Spis treści. 1 Moduł Modbus TCP 4

Mikroprocesory i Mikrosterowniki Laboratorium

WARIATOR USTAWIENIA Białystok, Plażowa 49/1, Poland,

INSTRUKCJA PANEL STERUJĄCY MT-5

ISBN Copyright by Wydawnictwo BTC Legionowo 2008

TECHNIKA MIKROPROCESOROWA II

Sterowanie wyświetlaczem graficznym z kontrolerem firmy Toshiba T6963C kod programu.

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

Listing_ $crystal = deklaracja

LOW ENERGY TIMER, BURTC

Obługa czujników do robota śledzącego linie. Michał Wendland czerwca 2011

ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM

XMEGA. Warsztaty CHIP Rok akademicki 2014/2015

Opis systemu topto v 2.5. Wprowadzenie

LabVIEW PLATFORMA EDUKACYJNA Lekcja 6 LabVIEW i Arduino programy wykorzystujące wyświetlacz LCD, czujnik temperatury, PWM i diodę LED

TWRS-21 TABLICOWY WYŚWIETLACZ CYFROWY DOKUMENTACJA TECHNICZNO-RUCHOWA. Wrocław, listopad 1999 r.

Opis Ogólny OPIS OGÓLNY LICZNIKA AL154LI01.

instrukcja użytkownika terminala ARGOX PA-20 SYSTEMY AUTOMATYCZNEJ IDENTYFIKACJI

Uniwersalny sterownik silnika krokowego z portem szeregowym RS232 z procesorem AT90S2313 na płycie E200. Zestaw do samodzielnego montażu.

Krótki wstęp o wyświetlaczach. Jak zmusić wyświetlacz do pracy?

3.2. Zegar/kalendarz z pamięcią statyczną RAM 256 x 8

Instytut Teleinformatyki

WSPOMAGANIE NAUCZANIA PRZEDMIOTU ALGORYTMY I STRUKTURY DANYCH Z WYKORZYSTANIEM SYMULATORA MASZYNY RAM. Piotr Miszczak, Wojciech Kozioł

Kod produktu: MP01611-ZK

Rejestrator danych Log 10, TFA, zakres -30 do +60 C

Instrukcja obsługi programu M116_Manager

Programowanie xcomfort Cz. I Eaton Corporation. All rights reserved.

WIZUALIZACJA DANYCH SENSORYCZNYCH Sprawozdanie z wykonanego projektu. Jakub Stanisz

Kod produktu: MP01611-ZK

Odczyt zegara ze sterownika do panelu serii TIU z możliwością korekty ustawień zegara w sterowniku

Współpraca mikrokontrolera z wyświetlaczami: ciekłokrystalicznym i siedmiosegmentowym

Transkrypt:

Programowanie wyświetlacza LCD według: http://radziu.dxp.pl Wyświetlacz graficzny 2 x 16 ma 2 wiersze, 16 znaków w wierszu, każdy znak jest wyświetlany w matrycy 5 x 8 pikseli. (2*8 wierszy * 5*16 kolumn = 1280 pixeli). Wyświetlacz montowany jest na płytce drukowanej, do której przymocowane jest szklane pole odczytowe. Kontroler tej płytki, tu posłużymy się wersją HD44780, jest pomostem pomiędzy użytkownikiem a matrycą punktów wyświetlacza. Redukuje on liczbę potrzebnych linii sterujących do 11 (8 bitów znaku oraz 3 bity sterujące: RS, RW i E). GND(VSS) i VCC - masa i zasilanie V0 - regulacja kontrastu RS - rodzaj przesyłanej informacji: 0 - rozkaz sterujący wyswietlaczem, 1 - dana do wyświetlenia RW - kierunek przesyłu danych: 0 - zapis do wyświetlacza, 1 - odczyt RS RW dzialanie 0 0 zapis rozkazu do wyświetlacza 1 0 zapis danej (znaku) do pamięci wyświetlacza 0 1 odczyt stanu wyświetlacza (bieżąca pozycja w DDRAM i flaga zajętości) 1 1 odczyt danej (znaku) z wyświetlacza E - (enable): 1 jest zezwoleniem na odczyt z szyny danych D0 D7 - szyna danych : kod znaku lub rozkaz sterujący, D7 - najstarszy bit, D0 - najmłodszy bit BL+, BL- podświetlenie wyświetlacza (+ anoda, - masa) Generator znaków CG ROM (ang. Character Generator ROM ) jest to pamięć typu ROM, wbudowana w strukturę sterownika HD44780, zawiera kombinacje zgaszonych i zapalonych pikseli w matrycy każego znaku. Użytkownik może zdefiniować max 8 znaków własnych, poprzez odpowiednie ustawianie linii sterujących modułu (D0...D7, RW, RS, E). Te znaki nie będą pamietane w generatorze, trzeba je generować programowo za każdym razem po włączeniu uc. Wyświetlenie znaku polega na umieszczeniu go w tzw. pamięci wyświetlania, w skrócie DDRAM (ang. Display Data RAM ). Pamięć ta ma pojemność 80 bajtów - tyle znaków może mieć wiadomość zapisana w wyświetlaczu. Wyświetlacz LCD typu 2x40 znaków pokaże całość takiej wiadomości, ale na wyświetlaczu o mniejszym polu odczytu np. 2x16 znaków, widoczna będzie tylko pierwsza część wpisanego tekstu. Lista rozkazów kontrolera HD44780

Display clear - (RS = 0, R/W = 0, dane = 00000001) - rozkaz powoduje wyczyszczenie wyświetlacza poprzez wypełnienie go spacjami, ustawienie trybu zapisu danych od pozycji w lewym górnym rogu wyświetlacza oraz wyłączenie trybu przesuwania okna; maksymalny czas trwania instrukcji - 1,64ms Display/cursor home - (RS - 0, R/W = 0, dane = 0000001x) - rozkaz powoduje ustawienie kursora na pozycji pierwszego znaku w pierwszej linii; maksymalny czas trwania instrukcji 1,64ms Entry mode set - (RS = 0; R/W = 0, dane = 000001IS) - określenie trybu pracy kursora/okna wyświetlacza : - dla S = 1 po zapisaniu znaku do wyświetlacza kursor nie zmienia położenia, natomiast przesuwa się cała zawartość wyświetlacza - dla S = 0 po zapisaniu znaku do wyświetlacza kursor zmienia położenie, a przesuwanie okna jest wyłączone - dla I = 1 kursor lub okno wyświetlacza przesuwa się w prawo (inkrementacja adresu znaku) - dla I = 0 kursor lub okno wyświetlacza przesuwa się w lewo (dekrementacja adresu znaku) Maksymalny czas trwania instrukcji - 40us Display ON/OFF - (RS = 0, R/W = 0, dane = 00001DCB) - dla D = 1 - włączenie wyświetlacza - dla D = 0 - wyłączenie wyświetlacza - dla C = 1 - włączenie kursora - dla C = 0 - wyłączenie kursora - dla B = 1 - włączenie migania kursora - dla B = 0 - wyłączenie migania kursora Display cursor shift - (RS = 0, R/W = 0, dane = 0001SRxx) - dla S = 1 - przesuwana jest zawartość okna - dla S = 0 - przesuwany jest kursor - dla R = 1 - kierunek przesuwu w prawo - dla R = 0 - kierunek przesuwu w lewo Function set (RS= 0, R/W = 0, dane = 001DNFxx) - dla D = 1 - interfejs 8-bitowy - dla D = 0 - interfejs 4-bitowy - dla N = 1 - wyświetlacz dwuwierszowy - dla N = 0 - wyświetlacz jednowierszowy - dla F = 1 - matryca znaków 5*10 punktów - dla F = 0 - matryca znaków 5*7punktów CG RAM set - (RS= 0, RW = 0, dane = 01AAALLL) - ustawia adres pamięci generatora znaków. AAA - 3- bitowy adres znaku, LLL - 3-bitowy numer linii składającej się na graficzne odwzorowanie znaku. DD RAM set - (RS = 0, R/W = 0, dane = 1AAAAAAA) - ustawia adres pamięci wyświetlacza, pod który nastąpi zapis (bądź odczyt) danych operacją Data write lub Data read. Busy flag read - (RS = 0, R/W = 1, dane = BAAAAAAA) - odczyt flagi zajętości i adresu pamięci wyświetlacza. B - flaga zajętości wyświetlacza, AAAAAAA - 7-bitowy adres pamięci. Data read - (RS = 1, R/W= 1, dane = odczytywany bajt danych) - odczyt danych z pamięci wyświetlacza, bądź pamięci CG RAM (jeśli poprzednio wydano komendę CG RAM set) Data write - (RS = 1, R/W = 0, dane = zapisywany bajt danych) - zapis danych do pamięci wyświetlacza, bądź pamięci CG RAM (jeśli poprzednio wydano komendę CG RAM set)

Przykład. Wyświetlanie tekstu w trybie sterowania 8-bitowego bez odczytu flagi zajetości Podłącz pierwsze trzy piny wyświetlacza 1 - VSS -> masa 2 - VDD -> zasilanie 3 - V0 (kontrast) -> 0V, masa Jeśli teraz prześlesz program do uc, na wyświetlaczu powinien pokazać się pierwszy (górny) wiersz czarnych prostokącików. Podłącz pint sterujące, na przykad do portu C mikrokontrolera 4 - RS -> PC0 (pin 23) 5 - RW -> masa (nie będziemy nic odczytywać z wyświetlacza) 6 - E -> PC2 (pin 25) Podłącz szynę danych D0..D7 wyświetlacza, np do portu D mikrokontrolera D0 -> PD0 (pin 2) D1 -> PD1 (pin 3) D2 -> PD2 (pin 4) D3 -> PD3 (pin 5) D4 -> PD4 (pin 6) D5 -> PD5 (pin 11) D6 -> PD6 (pin 12) D7 -> PD7 (pin 13) Podłącz podświetlenie wyświetlacza 15 - A (BL+) -> zasilanie 16 - K (BL-) -> masa Do nowego projektu AVR zaimportuj pliki lcd.h i lcd.c (File/Import/General/File System/From directory), zaznacz wybrane pliki, rozwiń Into Folder, wybierz folder główny swojego projektu, kliknij Finish. W pliku main.c umieść #include "lcd.h" Plik nagłówkowy lcd.h i plik lcd.c zawierają definicje wybranych stałych i funkcji, przydatnych do sterowania wyświetlaczem LCD z kontrolerem HD44780 #include <avr/io.h> #include "lcd.h" int main() { LCD_Initalize() ; - - - - - - - - - - - - - - - - main.c // inicjalizacja wyświetlacza char t[] = "HAKUNA MATATA ; // ten tekst wypiszemy na wyświetlaczu // LCD_WriteText(t); // można tak, wykorzystując funkcję zdefiniowaną w pliku lcd.c unsigned int n = strlen(t) int i = 0; while (i<n) { LCD_WriteData(t[i]); i++; while(1) { return 0; // albo tak, wypisując samodzielnie w pętli po jednym znaku

#include <avr/io.h> - - - - - - - - - - - - - - - - lcd.h // Konfiguracja sterowania wyświetlaczem HD44780 przez mikrokontroler #define LCD_DDR_DATA DDRD // rejestr kierunkowy portu danych dla wyświetlacza #define LCD_PORT_DATA PORTD // rejestr portu wyjscia danych dla wyswietlacza #define LCD_DDR_CONTROL DDRC // rejestr kierunkowy portu sterowania wyświetlaczem #define LCD_PORT_CONTROL PORTC // rejestr kierunkowy portu sterowania wyświetlaczem #define LCD_RS PC0 // bit sterujący linią RS #define LCD_E PC2 // bit sterujący linią E // Instrukcje kontrolera Hitachi HD44780 #define HD44780_CLEAR 0x01 #define HD44780_HOME 0x02 #define HD44780_ENTRY_MODE 0x04 #define HD44780_EM_SHIFT_CURSOR 0 #define HD44780_EM_SHIFT_DISPLAY 1 #define HD44780_EM_DECREMENT 0 #define HD44780_EM_INCREMENT2 #define HD44780_DISPLAY_ONOFF 0x08 #define HD44780_DISPLAY_OFF 0 #define HD44780_DISPLAY_ON 4 #define HD44780_CURSOR_OFF 0 #define HD44780_CURSOR_ON 2 #define HD44780_CURSOR_NOBLINK 0 #define HD44780_CURSOR_BLINK 1 #define HD44780_DISPLAY_CURSOR_SHIFT 0x10 #define HD44780_SHIFT_CURSOR 0 #define HD44780_SHIFT_DISPLAY 8 #define HD44780_SHIFT_LEFT 0 #define HD44780_SHIFT_RIGHT 4 #define HD44780_FUNCTION_SET 0x20 #define HD44780_FONT5x7 0 #define HD44780_FONT5x10 4 #define HD44780_ONE_LINE 0 #define HD44780_TWO_LINE 8 #define HD44780_4_BIT 0 #define HD44780_8_BIT 16 #define HD44780_CGRAM_SET #define HD44780_DDRAM_SET 0x40 0x80 void LCD_Write(unsigned char dana); void LCD_WriteCommand(unsigned char rozkaz); void LCD_WriteData(unsigned char dana); void LCD_WriteText(char * text); // void LCD_GoTo(unsigned char x, unsigned char y); // void LCD_Clear(void); // void LCD_Home(void); void LCD_Initalize();

#include "lcd.h" // #include <string.h> #include <util/delay.h> - - - - - - - - - - - - - - - - lcd.c // zapis bajta do wyświetlacza (bez rozróżnienia rozkaz/dane). void LCD_Write(unsigned char dana) { LCD_PORT_CONTROL = 1<<LCD_E; // 1 - zezwolenie na zapis do wyświetlacza LCD_PORT_DATA = dana; LCD_PORT_CONTROL &= ~(1<<LCD_E); // 0 - odwołanie zezwolenia na zapis _delay_us(50); // zapis rozkazu do wyświetlacza void LCD_WriteCommand(unsigned char rozkaz) { LCD_PORT_CONTROL &= ~(1<<LCD_RS); LCD_Write(rozkaz); // bit RS ustaw na 0 - zapis rozkazu // zapis danej do wyświetlacza void LCD_WriteData(unsigned char dana) { LCD_PORT_CONTROL = (1<<LCD_RS); LCD_Write(dana); // bit RS ustaw na 1 - zapis danej // wyświetlenie tekstu na wyswietlaczu. // void LCD_WriteText(char * text) { // while(*text) LCD_WriteData(*text++); // // ustawienie współrzędnych ekranowych // void LCD_GoTo(unsigned char x, unsigned char y) { // LCD_WriteCommand(HD44780_DDRAM_SET (x + (0x40 * y))); // // czyszczenie ekranu // void LCD_Clear(void) { // LCD_WriteCommand(HD44780_CLEAR); // _delay_ms(2); // // przywrócenie początkowych współrzędnych wyświetlacza. // void LCD_Home(void) { // LCD_WriteCommand(HD44780_HOME); // _delay_ms(2); // // inicjalizacja kontrolera HD44780: // włączenie wyświetlacza, czyszczenie pamięci (wypełnienie spacjami) // ustwienie trybu pracy: sterowanie 8- lub 4-bitowe, 2 lub 1 wierszy, matryca znaku 5x7 lub 5x10 pikseli // właczenie/wyłaczenie kursora, ustawienie pozycji kursowa, migotanie kursora void LCD_Initalize() { unsigned char i; LCD_DDR_DATA = 0xFF; // wszystkie bity ustaw na 1, będą wyjsciami LCD_DDR_CONTROL = (1<<LCD_RS) (1<<LCD_E); // bity RS i E na 1, wyjscia

_delay_ms(15); // oczekiwanie na ustalibizowanie się napiecia zasilajacego LCD_PORT_CONTROL &= ~(1<<LCD_RS); // wyzerowanie linii RS, wysyłanie rozkazów LCD_PORT_CONTROL &= ~(1<<LCD_E); // wyzerowanie linii E for(i = 0; i < 3; i++) { // trzykrotne powtórzenie wysłanie rozkazu: 0011 1111 LCD_Write(0x3F); _delay_ms(5); _delay_ms(1); LCD_WriteCommand(HD44780_FUNCTION_SET HD44780_FONT5x7 HD44780_TWO_LINE HD44780_8_BIT); // sterowanie 8-bitowe, 2-linie, znak 5x7 pixeli LCD_WriteCommand(HD44780_DISPLAY_ONOFF HD44780_DISPLAY_OFF); // wyłączenie wyswietlacza LCD_WriteCommand(HD44780_CLEAR); // czyszczenie zawartosci pamieci DDRAM _delay_ms(2); LCD_WriteCommand(HD44780_ENTRY_MODE HD44780_EM_SHIFT_CURSOR HD44780_EM_INCREMENT);// tryb pracy kursowa: przesuwanie kursora po wypisaniu znaku LCD_WriteCommand(HD44780_DISPLAY_ONOFF HD44780_DISPLAY_ON HD44780_CURSOR_OFF HD44780_CURSOR_NOBLINK); // włącz LCD, bez kursora i mrugania