Kompatibilní zapojení: LCD panel s ATmega8

Ke stažení: LCD_001.c == LCD_001.pdf == LCD_001.htm


/*
Začínáme s novým přípravkem ATmega_lcd_uni, který je vybaven znakovým
LCD displejem a klávesnicí.

LCD displej má zobrazovací kapacitu dva řádky po šestnácti sloupcích (32 znaků)
znaky (písmenka a speciální znaky jsou uložené přímo v paměti displeje a
přibližně odpovídají ASCII tabulce (viz datasheet displeje rc1602b-biw-esx)
Protože je ale výrobci jasné, že by někdo mohl chtít na displeji zobrazovat
i jiné znaky, než které jsou uvedeny v tabulce, ponechal 8 míst volných, kam
si můžeme nahrát vlastní znaky Většinou se tato místa využívají pro písmena
s českou interpunkcí (ta v základní tabulce nejsou)

Klávesnice je tvořena dvěma řadami po třech tlačítkách, což je pro většinu
aplikací dostatečný počet. Navíc je ke každému tlačítku sériově připojena
dioda, a to tak, že lze rozlišit i více stisknutých tlačítek najednou.
Je tedy možné používat dvojhmaty (i "vícehmaty"), což nám rozšiřuje počet
samotných tlačítek o jejich vzájemné kombinace.
*/
/*
Jak už to v programování bývá, první co program napíše, je text "Hello World".
Náš první program tedy bude dělat to samé, ale protože jsme Češi, přidáme
ještě tuto hlášku v češtině.
Nejprve ale musíme do našeho programu vložit rutiny pro komunikaci s displejem,
a soubor s konfigurací pinů mikrokontroléru pro tento přípravek.
jedná se o soubory "atmega_lcd_uni_cfg.c" a "lcd.c".
Soubor "atmega_lcd_uni_cfg.c" obsahuje informace o tom, ke kterým pinům je
připojen displej a ke kterým je připojena klávesnice. Musí být proto vložen
ještě před souborem "lcd.c".
Soubor "lcd.c" obsahuje rutiny pro práci s displejem. Nemusíme se tedy starat
o to jak s displejem komunikovat, ale můžeme již rovnou na něj posílat data
pomocí již hotových funkcí.

Funkce v souboru "lcd.c" jsou:

void lcd_ini      (void);//inicializace displeje (nastavení pinů a zahájení komunikace)
void lcd_char     (unsigned char dat);//napíše znak pomocí ASCII kódu (písmena, čísla)
void lcd_num3      (unsigned int num,unsigned char znak);//napíše cislo (3 cifry)
void lcd_num2      (unsigned char num,unsigned char znak);//napíše cislo (2 cifry)