Egyszerű driver AVR -procikra,
HD44780 kompatibilis LCD kijelzőkhöz

Szeretnék közzé tenni egy általam fejlesztett HD44780 alapú LCD drivert, amely AVR mikrovezérlőkön használható.
Egy időben sok idő töltöttem azzal, hogy LCD drivert keresgéltem AVR
procira a neten. Igaz ami igaz, olyat ami könnyen működésre birható lett
volna, meg a CGRAM-ot is kezeli, nem találtam. Ekkor kezdtem el
fejleszteni a saját verziót.
Mint tudjuk a HD44780 alapú LCD kijelzők vezérelhetők 4 -és 8 bites módban is.
Ez a driver 4 bites módban való vezérlésre alkalmas, ezért mindössze 6
db I/O-ra van szükség az LCD vezérléséhez. Az I/O bekötésekhez lásd a simple_driver.h állományt. Továbbá itt állítható át szükség szerint a megfelelő I/O.
A driver csak írni tud a kijelzőre, következésképp az LCD:RW lábat GND-re kell kötni.
Kezeli a CGRAM-ot, így saját karakterek megjelenítésére, animálására is használható. 8 karakteres "vertical scroll"-t is tud.
A mellékletben található példaprogramok ATmega8 AVR-en voltak sikeresen tesztelve.
Fontos megemlíteni, hogy a példaprogik tesztelésénél az AVR belső
8MHz-es oszcillátoráról müködött. Eszerint vannak az időosztások
számolva !
A main2.c példaprogram "vertical scroll" -ra, a main.c pedig saját karakterek egyszerű animálására mutat példát.
A driver C nyelven lett fejlesztve (avr-gcc). Az általa nyújtott API a simple_driver.c állományban van leírva.
Használat előtt mindenképp olvasd el a mellékletben található OLVASSEL állományt !
Használható API:
void lcd_delay (unsigned int p);
void lcd_toggle_E ();
void lcd_cls ();
void lcd_home ();
void lcd_control (uint8_t disonoff, uint8_t curonoff, uint8_t curblink);
void lcd_set_CGRAM_addr (uint8_t addr);
void lcd_set_DDRAM_addr (uint8_t mesto);
uint8_t lcd_put_custom_char (uint8_t charnum, const uint8_t * values);
void lcd_vertical_scroll (const void *__custom_chars, uint8_t __NUM,
uint16_t __verti_delay_ms, uint16_t __horiz_delay_ms,
uint8_t ddram_addr, uint8_t __clear);
void lcd_clear_CRGAM ();
void lcd_putch (uint8_t data);
void lcd_putstr (const uint8_t * data, uint8_t addr);
void lcd_init (void);
Az LCD kijelzők vezérléséhez szükséges alapismeretekről itt olvashatsz.
A driver letölthető innen.
gtk, 2007.06.11
---
Visszajelzések voltak a driverrel kapcsolatban, hogy az AVR
felprogramozása után mindig újra kell indítani a HW-t, különben nem
müködik a kijelző.
"Nekem az volt a gond a driver-el, hogy programozás után mindig
áramtalanítani kellett mindent, majd újbóli bekapcsoláskor működött csak
rendesen.
De kiegészítettem a kódot, a kijelző inicializálásnál először 8 bitesre
kapcsolom, és csak aztán 4 bitesre, így programozás befejeztével mindig
jól kapcsol be az LCD." Idézet: Vzoole
A javított driver letölthető innen: lcd_driver_12.zip
gtk. 2009_03_31
--
Közben újabb hiba lett javítva az LCD I/O - bekötés sorrenddel kapcsolatban.
Itt az 1v3 változat. (Csak a driver fájlok)
2010.11.04