3 LCD LCD MSP430 id 755238 Nieznany (2)

background image

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.

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

background image

możliwy jest tylko zapis. Takie rozwiązanie powoduje niewielkie zmniejszenie
funkcjonalności wyświetlacza, ale sprawia, że odchodzi nam problem sterowania tą
linią.
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

#define

DD_RAM_ADDR2

0xc0

// set CG_RAM

#define

DD_RAM_ADDR3

0x28

//

#define

CG_RAM_ADDR

0x40

//


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, Se RS jest w stanie niskim). Sprawia to, że przechodzimy w tryb

background image

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
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:

background image

bitclr(P2OUT,RS);

Wyzerowanie bitu RS w porcie P2

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.

2.

Napisać funkcję wyświetlającą napis na ekranie wyświetlacza z możliwością
zdefiniowania przewijania tekstu w prawo i lewo.

background image

3.

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

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:
parametry lcd crt id 349183 Nieznany
CRT LCD PDP OLED DLP id 120436 Nieznany
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
Article ISTN LCD Technology id 69439 (2)
Abolicja podatkowa id 50334 Nieznany (2)
4 LIDER MENEDZER id 37733 Nieznany (2)
katechezy MB id 233498 Nieznany
metro sciaga id 296943 Nieznany
perf id 354744 Nieznany
interbase id 92028 Nieznany
Mbaku id 289860 Nieznany
Probiotyki antybiotyki id 66316 Nieznany
miedziowanie cz 2 id 113259 Nieznany
LTC1729 id 273494 Nieznany

więcej podobnych podstron