Práce s grafickým LCD
Úvod
Pro připojení k AVR jsem vybral grafické LCD řízené standardním řadičem KS108. Datasheet řadiče je možné stáhnout si zde: KS108b. Každý tento řadič obsluhuje matici 64x64 bodů. Body jsou rozděleny do 64 sloupců a každý sloupec je rozdělen na 8 řádků (bajtů), kde každý řádek je složen z 8 bodů (bitů). Pokud je tedy kurzor nastaven na pozici 0,0 a my zapíšeme data 0x55, zapíše se do prvního sloupce na prvních 8 bitů shora střídavě tečka a prázné místo.Pokud máme displej s rozlišením 128x64 bodů, musíme mít na displeji řadiče 2, kde každý obluhuje polovinu displeje. To, která polovina je zrovna ovládána, je určeno piny CS (Chip Select).
Knihovny pro GLCD
Jak už je zvykem na tomto webu, je možné si i pro tuto lekci stáhnout knihovnu pro ovládání grafického LCD. Jedná se prozatím o vývojovou verzi, kde kromě inicializace a zobrazení LCD není žádná další funkce, ale i ta může sloužit jako inspirace. Knihovnu je možné si stáhnout v souboru glcd.zip. Knihovna funguje pro následující konfiguraci:- DATA - PORTB
- ENABLE - PA.2
- DATA/COMMAND - PA.0
- READ/WRITE - PA.1
- CS1 - PA.3
- CS2 - PA.4
Ukázková aplikace
#define ADC_VREF_TYPE 0x40
#define F_CPU 147456000
#include <avr/io.h>
#include <stdio.h>
#include <stdlib.h>
#include <avr/pgmspace.h>
#include "glcd_lib.h"
static uint8_t IMAGE[] PROGMEM = {
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,
0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0xFF,0xFF,
0xFF,0xFF,0x7F,0x7F,0x3F,0xBF,0x3F,0x1F,
0x3F,0x3F,0x3F,0x7F,0xFF,0xBF,0x1F,0x47,
0x87,0x07,0x07,0x07,0x27,0x77,0x77,0x67,
0xE7,0xE7,0xE7,0xC7,0x87,0x07,0x07,0x07,
0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x87,
0xC7,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xEF,0x7F,
0x7F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,
0x3F,0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,0x1F,
0x1F,0x1F,0x1F,0x1F,0x0F,0x1F,0x1F,0x1F,
0x3F,0x3F,0x3F,0x3F,0x3F,0x7F,0x7F,0x7F,
0x7F,0x3F,0x3F,0x7F,0x7F,0x7F,0x7F,0x7F,
0x7F,0xFF,0xFF,0xFF,0x7F,0x7F,0xFF,0xFF,
0xFE,0xFE,0xFE,0xFF,0xFF,0xFF,0xF8,0xF8,
0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,
0xF0,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,
0x0C,0x0E,0x1C,0x3F,0x0F,0x03,0x00,0x04,
0x04,0x87,0xCF,0x9F,0xFF,0xFE,0xFC,0xF8,
0xF8,0xFC,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFD,0xFF,0xFF,0xFF,0xDF,0xCF,0x1F,
0x3F,0x3F,0x13,0x03,0x01,0x10,0x1C,0x0C,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x90,0xF8,0xF8,0xF8,0xF8,0xF8,0xCC,
0xE0,0xF0,0xF8,0xF8,0xF8,0xFC,0xFC,0xFE,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xF8,0xF0,0xE0,0xE0,
0xC0,0x80,0x00,0x00,0x00,0x80,0xC0,0xC0,
0xE0,0xE0,0xC0,0xE0,0xF0,0xFC,0xFE,0xFE,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0x3F,0x1F,0x09,0x01,0x00,
0x04,0x06,0x06,0x06,0x0E,0x1C,0x1E,0x18,
0x1C,0x18,0x19,0x19,0x01,0x03,0x00,0x00,
0x00,0x07,0x46,0x00,0x00,0x80,0x80,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x84,0xFC,0xF8,0xF4,0xFE,0xFE,
0xF7,0xFB,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFC,0xFC,0xFC,0xFD,0xF9,
0xF9,0xF3,0xFF,0xFF,0x5F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x1F,0x3F,0x3F,0x3F,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xF0,0xE0,0xC0,0xC0,0xC0,0xC0,
0xC0,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x03,0x06,0x00,
0x88,0xC8,0xFC,0xFC,0xFE,0xFF,0xFF,0xFF,
0xFF,0xFE,0xF0,0xE0,0xF8,0xFC,0xFE,0xFF,
0xFE,0xFC,0xF8,0x30,0x30,0xE0,0xF6,0x7F,
0x3F,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFD,0xF0,0xE0,0xC0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x01,0xF1,0xFB,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFE,0x98,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x80,0xC0,0xFE,0x7F,
0x1F,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFE,0xFC,0xFF,0xFF,0xFE,
0xFE,0x7F,0x7E,0x3F,0x1F,0x1F,0x0F,0x0F,
0x3D,0x39,0x19,0x3B,0x7F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,
0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,
0xFF,0xFF
