Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Az LCD kijelző programozása

Hasonló előadás


Az előadások a következő témára: "Az LCD kijelző programozása"— Előadás másolata:

1 Az LCD kijelző programozása

2 Az ismeretszerzés menete

3 2X16 karakter Lábkiosztás: Interface Pin Function

4

5 Mikroprocesszor

6

7 A data lábakon ami megjelenik az adat? Vagy utasítás?
Adat jön: RS High, azaz logikai 1 Utasítás jön: RS Low, azaz logikai 0 Hogyan jeleníti meg a karaktereket: 2X16 bd karakter: ennyi memóriacím a DisplayDataRAM-ban. Képernyő memória. AC regiszter: A DDRAM egy címére mutat. Pld: bal felső karakter kezdőcíme: 00 Baloldali szomszéd: 01 (látszik, hogy egy karakter 8 bitből van felépítve.) Alsó sor kezdete balról: 40, jobb alsó sarok 4F Hogyan lesz a 8 bites kódból karakter? CGROM – beépített karakterek CGRAM - átprogramozható

8

9 Ha adat érkezik (RS bit H vagy L) és R/W akkor az adat a DDRAM megfelelő helyére (ahol a kurzor éppen áll) kerül és az adatnak megfelelő karakter megjelenik. Ha utasítás érkezik akkor valami történik a kurzorral, a képernyővel stb.

10

11 A próbapanel kapcsolási rajzán megnézzük, hol az LCD
A föld és a logikai áramköröknek az 5V be van kötve, elvileg. Az A i/O porthoz van kötve az LCD. R/W földelve van. Csak írhatunk az LCD-re. PA0 és PA1 a vezérlő bitek, PA2,3,4,5 a 4 bites adatátvitelre használható. Egy karaktert (8 bit) két részletben kell küldeni. PA 6,7 nem használt. Van egy poti ami a fényerőt szabályozza, (PT1) de lehet, hogy jumperelni kell.

12 /***************************************************************************/
/* */ /* LCD kijelzo kezelo fuggvenyei */ /* PA0 - az LCD kijelzo RS (Reset / Torlo) laba (4 lab) */ /* Fold - R/~W (Read / ~Write) csak irni tudunk az LCD kijelzobe(5 lab) */ /* PA1 - E (Enable / Engedelyezo) lab (6 lab) */ /* PA2-PA5 - az LCD kijelzo DB4-DB7 adatbemenetei */ #include <avr/io.h> #include <util/delay.h> #include "lcd.h" /* #define RS PA0 //Az LCD kijelzo RS jelenek az azonositoja #define EN PA1 //Az LCD kijelzo E jelenek az azonositoja #define TIME 5 //Alapkesleltetes az MCU (1 * 8) MHz-es orajelnel */

13 /*-----------------Az LCD kijelzo adatbeirasanak fuggvenye-----------------*/
void lcd4_dat(unsigned char p) //"p" az adat byte-ja { PORTA |= _BV(RS) | _BV(EN); //RS = EN = 1 jel PORTA &= 0xC3; //A 8 bites adat felso nibble-jenek kiadasa a DB4-DB7 adatsinre PORTA |= ((p & 0xF0) >> 2); _delay_ms(TIME / 2); //Az EN jel idotartartamanak megadasa PORTA &= ~_BV(EN); //EN = 0. Az LCD kijelzo-utasitas beirasanak frontja _delay_ms(5 * TIME / 2); //A kijelzo-utasitas vegrehajtasi idonek megadasa PORTA |= _BV(EN); //EN = 1 jel //A 8 bites adat also nibble-jenek kiadasa a DB4-DB7 adatsinre PORTA |= ((p & 0x0F) << 2); } //Az "lcd4_dat" fuggveny vege

14 /*----------------Az LCD kijelzo utasitasbeirasanak fuggvenye--------------*/
void lcd4_com(unsigned char p) //"p" az utasitas byte-ja { PORTA &= ~_BV(RS); //RS = 0 jel PORTA |= _BV(EN); //EN = 1 jel PORTA &= 0xC2; //A 8 bites LCD kijelzo-utasitas felso nibble-jenek kiadasa a //DB4-DB7 adatsinre PORTA |= ((p & 0xF0) >> 2); _delay_ms(TIME); //Az EN jel idotartartamanak megadasa PORTA &= ~_BV(EN); //EN = 0. Az LCD kijelzo-utasitas beirasanak frontja _delay_ms(5 * TIME); //A kijelzo-utasitas vegrehajtasi idonek megadasa //A 8 bites LCD kijelzo-utasitas also nibble-jenek kiadasa a PORTA |= ((p & 0x0F) << 2); } //Az "lcd4_com" fuggveny vege

15 /*---------------------------Az LCD kijelzo inicializalasa----------------*/
void lcd4_init(void) //4 bites uzemmod, villogo kurzor { lcd4_com(0x33); //Elokeszites _delay_ms(10 * TIME); lcd4_com(0x32); //4 bit, 2 sor lcd4_com(0x28); lcd4_com(0x08); //Az LCD kijelzo teljes kikapcsolasa lcd4_com(0x01); //Az LCD kijelzo torlese lcd4_com(0x06); //A kurzor eltolasa jobbra lcd4_com(0x0D); //Az LCD kijelzo bekapcsolasa, villogo kurzor } //Az "lcd4_init" fuggveny vege

16 Mintaprojekt Az lcd.c kerüljön a makefile SRC sorába!
#include <avr/io.h> //Az I/O konyvtar #include <util/delay.h> //A kesleltetes-beallitas konyvtar #include <avr/sleep.h> #include "lcd.h"

17 int main(void) //A foprogram kezdete
{ DDRA = 0xFF; //A PORT A kimenet PORTA = 0xC0; //A PORT A (PA0-PA5) kimeneteit 0-ra allitjuk, a (PA6-PA7) - 1-re lcd4_init(); //Az LCD kijelzo inicializalasa (4 bit, 2 sor) //A szoveg kezdete lcd4_dat('H'); lcd4_dat('e'); lcd4_dat('l'); lcd4_dat('o'); lcd4_dat(','); lcd4_dat(' '); lcd4_dat('v'); lcd4_dat('i'); lcd4_dat('a'); lcd4_dat('g'); lcd4_dat('!'); //A szoveg vege lcd4_com(0xC0); //Beiras az LCD kijelzo masodik soraba sleep_cpu(); //A MPU "elaltatasa" return(0); //A "main" program sikeres befejezese }

18 Feladatok: Mozgassunk egy karaktert az LCD-n. Az lcd-n írjuk ki, ha a futófény balra vagy jobbra megy.


Letölteni ppt "Az LCD kijelző programozása"

Hasonló előadás


Google Hirdetések