3 LCD Laboratorium 3 wyswietlacz LCD id 755237 (2)

background image

Laboratorium 3 – wyświetlacz LCD

4. Wy

ś

wietlacz LCD




EasyWeb2 pracuje na procesorze z serii ‘1xx i nie zawiera wbudowanego sterownika
wyświetlacza. Wykorzystuje on do wyświetlania specjalizowany układ wyświetlacza LCD z
własnym sterownikiem. Rolę sterownika pełni układ firmy Hitach HD 44780. Do sterownika
mikrokontroler wysyła tylko dane (które mają być wyświetlane) i instrukcje (w jaki sposób
mają być wyświetlane).






background image















Funkcje pinów układu HD44780

background image


Wyświetlacz może pracować z ośmio- bądź cztero- bitową magistralą danych.
Zazwyczaj w systemach mikroprocesorowych stosuje się tryb pracy z czterobitową
magistralą danych. Oprócz linii danych DB4-DB7, do wyświetlacza podłączone są trzy linie
sterujące E,RS,R/W oraz zasilanie.

background image

Sprawdźmy, w jaki sposób odbywa się komunikacja mikrokontrolera z układem HD44780.

Układ ma 2 8-bitowe rejestry rejestr instrukcji IR, wybierany przy stanie 0 na wejściu RS,
oraz rejestr danych DR, wybierany przy stanie 1 na wejściu RS.
Rejestr IR przyjmuje kody instrukcji (np. ustawienie stanu wyświetlacza, czyszczenie
wyświetlacza, przesunięcie kursora). Rejestr DR przyjmuje dane do przesłania na
wyświetlacz.

HD44780U może pracować w jednym z 2 trybów 4 i 8 bitowym. W układzie easyWeb mamy
podłączone wyjścia P2.4 do P2.7 do lini danych DB0 do DB3 kontrolera wyświetlacza.
Wobec tego układ należy ustawić do pracy w trybie 4 bitowym.


Linia RS odpowiada za interpretowanie danych przychodzących do sterownika
wyświetlacza. Gdy linia RS jest w stanie niskim to dane są interpretowane jako
instrukcje, gdy natomiast jest w stanie wysokim to dane są interpretowane jako adres
znaku z tablicy znaków zapisanej w pamięci ROM wyświetlacza. I na wyświetlaczu
pojawia się znak z tej właśnie tablicy.
Linia R/W informuje sterownik wyświetlacza czy mamy zamiar czytać, czy też pisać
do wyświetlacza. W EasyWeb linia ta jest na stałe podłączona do masy, czyli
możliwy jest tylko zapis. Takie rozwiązanie powoduje niewielkie zmniejszenie
funkcjonalności wyświetlacza, ale sprawia, że odchodzi nam problem sterowania tą
linią.

background image

Linia E służy do aktywowania zapisu danych do układu i powinno być aktywna po podaniu
danych na linie danych.

Wysłanie instrukcji do układu powoduje ustawienie flagi BF, która jest aktywna aż do
przetworzenia bieżącej instrukcji i w tym czasie inne instrukcje nie są akceptowane.

Kiedy RS = 0 i R/S = 1 , BF jest podłączona do wyjścia DB7. Następna instrukcja może być
wysłana po sprawdzeniu, że BF jest równa 0.

Komendy Wy

ś

wietlacza






background image

Na podstawie tabeli możemy zdefiniować komendy wyświetlacza.

#define

CLR_DISP

0x01

// clear display

#define

CUR_HOME

0x02

// return home

#define

ENTRY_INC

0x06

// entry mode increment

#define

ENTRY_INC_ROL

0x07

// entry mode increment with rol data

#define

ENTRY_DEC

0x04

// entry mode decrement

#define

ENTRY_DEC_ROL

0x05 // entry mode decrement witch rol dat

#define

DISP_OFF

0x08

// all display off

#define

DISP_ON

0x0c

// all display on

#define DATA_ROL_LEFT 0x18 // rol data left
#define DATA_ROL_RIGHT 0x1c // rol data right
#define CUR_SHIFT_LEFT 0x10 // shift coursor left
#define CUR_SHIFT_RIGHT 0x14 // shift coursor right
#define

DD_RAM_ADDR

0x80

// set DD_RAM 1 line

#define

DD_RAM_ADDR2

0xc0

// set DD_RAM 2 line

#define

DD_RAM_ADDR3

0x28

//

#define

CG_RAM_ADDR

0x40

// set CG_RAM


INICJALIZACJA Wy

ś

wietlacza


Wiemy już jak przesyłać dane do sterownika. Jednak zanim zaczniemy to robić
trzeba jeszcze zainicjować sterownik wyświetlacza. Po pierwsze musi być ustalony
tryb pracy magistrali. W tym przypadku trzeba ustalić tryb 4-bitowy. Ponieważ po
włączeniu zasilania występują stany nieustalone, nie wiadomo, w jakim trybie jest
ustawiony interfejs. W tym celu trzykrotnie wysyła się do sterownika komendę
inicjującą tryb ośmiobitowy a następnie komendę inicjującą tryb czterobitowy
(pamiętamy, że RS jest w stanie niskim). Sprawia to, że przechodzimy w tryb
czterobitowy. Następnie trzeba włączyć wyświetlacz, ustawić parametry wyświetlacza,
a po dokonaniu tego wyczyścić wyświetlacz. Opis wszystkich rozkazów wyświetlacza

background image

znajduje się w tabeli.

Zalecenia producenta dotyczące sposobu inicjalizacji układu są następujące:


Na podstawie schematu możemy napisać kod inicjacji układu:

void InitLCD(void)
{
bitclr(P2OUT,RS);
Delay100ms();

//Delay 100ms

LCD_Data |= BIT4 | BIT5; //D7-D4 = 0011
LCD_Data &= ~BIT6 & ~BIT7;
_E(); //toggle E for LCD
Delayx10ms();

//10ms

_E(); //toggle E for LCD
Delayx10ms();

//10ms

_E(); //toggle E for LCD
Delayx10ms();

//10ms

LCD_Data &= ~BIT4;
_E(); //toggle E for LCD

SEND_CMD(DISP_ON);
SEND_CMD(CLR_DISP);
Delay100ms();
}

Opis podstawowych funkcji w powyższym kodzie:


bitclr(P2OUT,RS);

Wyzerowanie bitu RS w porcie P2

background image

Delay100ms();

Pętla opóźniająca 100ms

_E();

Wysłanie impulsu na wyjście E wyświetlacza w celu aktywacji danych
ustawionych na liniach DB4-DB7

SEND_CMD(DISP_ON);

Wysłanie komendy do wyświetlacza DISP_ON


Podstawowe procedury obsługi wy

ś

wietlacza

Podstawowe funkcje obsługi wy

ś

wietlacza stanowi

ą

dwie procedury: SEND_CMD i

SEND_CHAR

void SEND_CMD (unsigned char e)
{
int temp;

Delayx100us(10); //10ms

temp = e & 0xf0;

//get upper nibble

LCD_Data &= 0x0f;

LCD_Data |= temp; //send CMD to LCD

bitclr(P2OUT,RS); //set LCD to CMD mode

_E(); //toggle E for LCD

temp = e & 0x0f;

temp = temp << 4; //get down nibble

LCD_Data &= 0x0f;

LCD_Data |= temp;

bitclr(P2OUT,RS);

//set LCD to CMD mode

_E(); //toggle E for LCD

}

void SEND_CHAR (unsigned char d)
{
int temp;

Delayx100us(5); //.5ms

temp = d & 0xf0;

//get upper nibble

LCD_Data &= 0x0f;

LCD_Data |= temp;

bitset(P2OUT,RS); //set LCD to data mode

_E(); //toggle E for LCD

temp = d & 0x0f;

temp = temp << 4; //get down nibble

LCD_Data &= 0x0f;

LCD_Data |= temp;

bitset(P2OUT,RS);

//set LCD to data mode

_E(); //toggle E for LCD

}

Napisy na wy

ś

wietlaczu


Mimo, że na wyświetlaczu jednocześnie możemy wyświetlać dwie linie danych po
16 znaków, to w pamięci danych wyświetlacza DD_RAM dla każdej z linii
wyświetlacza przyporządkowanych jest 40 znaków (00h-27h -górna linia , 40h-67h –
dolna linia).

background image

Przyporządkowanie adresów w DD_RAM dla pozycji na wyświetlaczu
Pozycja 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Linia 1 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
Linia 2 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F

Sprawia to, że możemy przesuwać dane na wyświetlaczu. Przesuwnie danych odbywa
się jednocześnie dla obu linii, ale dzieje się to niezależnie, co oznacza, Se dane nie
przesuwają się pomiędzy liniami.

Adresy DD_RAM po obrocie w lewo
Pozycja 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Linia 1 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10
Linia 2 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50

Po obrocie danych w prawo bądź w lewo zmianie ulegają adresy znaków w pamięci
DD_RAM. W ten sposób można uzyskać tzw. „efekt baneru”.

Adresy DD_RAM po obrocie w prawo
Pozycja 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Linia 1 27 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E
Linia 2 67 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E

Definicje własnych znaków


W pamięci CG_RAM można zdefiniować 8 własnych. Na każdy znak przeznaczonych
jest 8 bajtów w pamięci CG_RAM. Znaki definiuje się po przez odpowiednie ustawianie
bitów D4-D0 (bity D7-D5 są nieistotne) w wysyłanym bajcie.

Zadania

1.

Napisać funkcję wyświetlającą napis na ekranie wyświetlacza w wybranej linii.

2.

Napisać funkcję przewijania tekstu w prawo i lewo o wybraną liczbę pól.

3.

Napisać funkcję wyświetlającą napis na ekranie wyświetlacza z możliwością
zdefiniowania przewijania z pierwszej do drugiej linii wyświetlacza.

background image

4.

Napisać funkcję wyświetlającą na ekranie wyświetlacza liczbę 32 bitową.

5.

Napisać funkcję wyświetlającą na ekranie wyświetlacza liczbę szesnastkową i binarną.

6.

Napisać program wyświetlający na ekranie napis podany przez prowadzącego zajęcia

7.

Napisać program wyświetlający na ekranie napis podany przez prowadzącego zajęcia,
używający zdefiniowanych w pamięci wyświetlacza własnych znaków (np. ąęźżó)


Wyszukiwarka

Podobne podstrony:
HD44780 LCD id 199910 Nieznany
lcd id 263963 Nieznany
Budowa monitora LCD id 94314 Nieznany (2)
How to Use a Graphic LCD id 206 Nieznany
Laboratorium Podstaw Fizyki id Nieznany
Laboratorium z TM spr1 id 26189 Nieznany
Laboratorium sprawozdanie 04 id 261441
Laboratorium sprawozdanie 03 id 261439
laboratorium 01 py id 261468 Nieznany
Laboratorium 2i3 zswier id 2615 Nieznany
Laboratorium sprawozdanie 07 id 261447
Laboratorium wiczenie1 jaro id Nieznany
Laboratorium 7 z TM spr2 id 261 Nieznany
Laboratorium sprawozdanie 06 id 261445
Laboratorium sprawozdanie 05 id 261443
Namar laboratoria 2012 13 id 31 Nieznany
Laboratorium TSS cw3 id 261862 Nieznany
Laboratorium sprawozdanie 02 id 261437
Laboratorium zadania cz 1 id 26 Nieznany

więcej podobnych podstron