1 / 18

Az LCD kijelző programozása

Az LCD kijelző programozása. Az ismeretszerzés menete. 2X16 karakter Lábkiosztás: Interface Pin Function. Mikroprocesszor. 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:

melina
Download Presentation

Az LCD kijelző programozása

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Az LCD kijelző programozása

  2. Az ismeretszerzés menete

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

  4. Mikroprocesszor

  5. 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ó

  6. 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.

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

  8. /***************************************************************************//***************************************************************************/ /* */ /* 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 */

  9. /*-----------------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 PORTA &= 0xC3; //A 8 bites adat also nibble-jenek kiadasa a DB4-DB7 adatsinre PORTA |= ((p & 0x0F) << 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 } //Az "lcd4_dat" fuggveny vege

  10. /*----------------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 PORTA |= _BV(EN); //EN = 1 jel PORTA &= 0xC2; //A 8 bites LCD kijelzo-utasitas also nibble-jenek kiadasa a //DB4-DB7 adatsinre PORTA |= ((p & 0x0F) << 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 } //Az "lcd4_com" fuggveny vege

  11. /*---------------------------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 _delay_ms(10 * TIME); lcd4_com(0x06); //A kurzor eltolasa jobbra lcd4_com(0x0D); //Az LCD kijelzo bekapcsolasa, villogo kurzor } //Az "lcd4_init" fuggveny vege

  12. MintaprojektAz 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"

  13. 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('l'); lcd4_dat('o'); lcd4_dat(','); lcd4_dat(' '); lcd4_dat('v'); lcd4_dat('i'); lcd4_dat('l'); lcd4_dat('a'); lcd4_dat('g'); lcd4_dat('!'); //A szoveg vege lcd4_com(0xC0); //Beiras az LCD kijelzo masodik soraba lcd4_dat('H'); lcd4_dat('e'); lcd4_dat('l'); lcd4_dat('l'); lcd4_dat('o'); lcd4_dat(','); lcd4_dat(' '); lcd4_dat('v'); lcd4_dat('i'); lcd4_dat('l'); lcd4_dat('a'); lcd4_dat('g'); lcd4_dat('!'); sleep_cpu(); //A MPU "elaltatasa" return(0); //A "main" program sikeres befejezese }

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

More Related