[AVR] GLCD제어_KS0108 - 4편(Hello World, 문자 출력)
저번 시간에는 점을 찍어봤으니 문자를 출력해보도록 해보자.
ASCII 코드, 문자출력
영 문자의 출력을 위해서는 아스키(ASCII)코드를 이용하면 편하다.
C언어를 기반으로 만들어진 컴파일러는 문자상수를 아스키코드로 변환하는데
이 말은 즉슨,
char A = 'A';
A라는 변수에 'A'라는 문자상수를 넣는 것은 사실 컴파일러 내에서는 'A'에 해당하는 아스키코드인 65로 변환한다는 말이다.
그러므로 ASCII코드에 해당하는 128개의 배열을 만든 다음, 그에 해당하는 문자를 점을 찍어 표시하도록 데이터를 넣는다면 문자를 쉽게 표시할 수 있다.
flash unsigned char ASCII[128][16] = {
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x00
{0xF8,0x04,0x14,0x04,0x04,0x14,0x04,0xF8,0x07,0x08,0x09,0x0B,0x0B,0x09,0x08,0x07}, // 0x01
{0xF8,0xFC,0x6C,0x7C,0x7C,0x6C,0xFC,0xF8,0x07,0x0F,0x0F,0x0C,0x0C,0x0F,0x0F,0x07}, // 0x02
{0x00,0xF0,0xF8,0xF8,0xF0,0xF8,0xF8,0xF0,0x00,0x00,0x01,0x03,0x07,0x03,0x01,0x00}, // 0x03
{0x00,0x40,0xE0,0xF0,0xF8,0xF0,0xE0,0x40,0x00,0x00,0x00,0x01,0x03,0x01,0x00,0x00}, // 0x04
{0xE0,0xE0,0xF8,0x1C,0x1C,0xF8,0xE0,0xE0,0x00,0x00,0x04,0x07,0x07,0x04,0x00,0x00}, // 0x05
{0x60,0xF0,0xF8,0xFC,0xFC,0xF8,0xF0,0x60,0x00,0x00,0x04,0x07,0x07,0x04,0x00,0x00}, // 0x06
{0x00,0x00,0x60,0xF0,0xF0,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x07
{0x00,0xFF,0x1F,0x0F,0x0F,0x0F,0x1F,0xFF,0x00,0xFF,0xFF,0xFE,0xFE,0xFE,0xFF,0xFF}, // 0x08
{0x00,0x00,0xE0,0x10,0x10,0x10,0xE0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00}, // 0x09
{0x00,0xFF,0x1F,0xEF,0xEF,0xEF,0x1F,0xFF,0x00,0xFF,0xFF,0xFE,0xFE,0xFE,0xFF,0xFF}, // 0x0A
{0x00,0x00,0x90,0x48,0x7C,0x48,0x90,0x00,0x00,0x03,0x04,0x08,0x08,0x08,0x04,0x03}, // 0x0B
{0x00,0x30,0x48,0x84,0x84,0x84,0x48,0x30,0x00,0x02,0x02,0x02,0x0F,0x02,0x02,0x02}, // 0x0C
{0x00,0x00,0x00,0xFC,0x04,0x08,0x70,0x00,0x00,0x06,0x0F,0x07,0x00,0x00,0x00,0x00}, // 0x0D
{0x00,0x00,0x00,0xFC,0x14,0x14,0x14,0xFC,0x00,0x0C,0x1E,0x0F,0x00,0x06,0x0F,0x07}, // 0x0E
{0x50,0x50,0xE0,0xBC,0xBC,0xE0,0x50,0x50,0x01,0x01,0x00,0x07,0x07,0x00,0x01,0x01}, // 0x0F
{0x00,0x00,0xFC,0xF8,0xF0,0xE0,0x40,0x00,0x00,0x00,0x07,0x03,0x01,0x00,0x00,0x00}, // 0x10
{0x00,0x00,0x40,0xE0,0xF0,0xF8,0xFC,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x00}, // 0x11
{0x00,0x10,0x18,0xFC,0xFC,0x18,0x10,0x00,0x00,0x01,0x03,0x07,0x07,0x03,0x01,0x00}, // 0x12
{0x00,0x00,0xFC,0xFC,0x00,0x00,0xFC,0xFC,0x00,0x00,0x04,0x04,0x00,0x00,0x04,0x04}, // 0x13
{0x38,0x7C,0x44,0xFC,0xFC,0x04,0xFC,0xFC,0x00,0x00,0x00,0x07,0x07,0x00,0x07,0x07}, // 0x14
{0x00,0xC4,0xEE,0x3A,0x12,0x32,0xE6,0xC4,0x00,0x08,0x19,0x13,0x12,0x17,0x1D,0x08}, // 0x15
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x00}, // 0x16
{0x00,0x10,0x18,0xFC,0xFC,0x18,0x10,0x00,0x08,0x09,0x0B,0x0F,0x0F,0x0B,0x09,0x08}, // 0x17
{0x00,0x10,0x18,0xFC,0xFC,0x18,0x10,0x00,0x00,0x00,0x00,0x07,0x07,0x00,0x00,0x00}, // 0x18
{0x00,0x00,0x00,0xFC,0xFC,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x07,0x03,0x01,0x00}, // 0x19
{0x00,0x40,0x40,0x40,0x50,0xF0,0xE0,0x40,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00}, // 0x1A
{0x00,0x40,0xE0,0xF0,0x50,0x40,0x40,0x40,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00}, // 0x1B
{0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02}, // 0x1C
{0x40,0xE0,0x50,0x40,0x40,0x50,0xE0,0x40,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00}, // 0x1D
{0x00,0x00,0x00,0xC0,0xF0,0xC0,0x00,0x00,0x00,0x04,0x07,0x07,0x07,0x07,0x07,0x04}, // 0x1E
{0x00,0x10,0x70,0xF0,0xF0,0xF0,0x70,0x10,0x00,0x00,0x00,0x01,0x07,0x01,0x00,0x00}, // 0x1F
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // space
{0x00,0x00,0x38,0xFC,0xFC,0x38,0x00,0x00,0x00,0x00,0x00,0x0D,0x0D,0x00,0x00,0x00}, // !
{0x00,0x0E,0x1E,0x00,0x00,0x1E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // "
{0x20,0xF8,0xF8,0x20,0xF8,0xF8,0x20,0x00,0x02,0x0F,0x0F,0x02,0x0F,0x0F,0x02,0x00}, // #
{0x38,0x7C,0x44,0x47,0x47,0xCC,0x98,0x00,0x06,0x0C,0x08,0x38,0x38,0x0F,0x07,0x00}, // $
{0x30,0x30,0x00,0x80,0xC0,0x60,0x30,0x00,0x0C,0x06,0x03,0x01,0x00,0x0C,0x0C,0x00}, // %
{0x80,0xD8,0x7C,0xE4,0xBC,0xD8,0x40,0x00,0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00}, // &
{0x00,0x10,0x1E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // '
{0x00,0x00,0xF0,0xF8,0x0C,0x04,0x00,0x00,0x00,0x00,0x03,0x07,0x0C,0x08,0x00,0x00}, // (
{0x00,0x00,0x04,0x0C,0xF8,0xF0,0x00,0x00,0x00,0x00,0x08,0x0C,0x07,0x03,0x00,0x00}, // )
{0x80,0xA0,0xE0,0xC0,0xC0,0xE0,0xA0,0x80,0x00,0x02,0x03,0x01,0x01,0x03,0x02,0x00}, // *
{0x00,0x80,0x80,0xE0,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x00}, // +
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x1E,0x0E,0x00,0x00,0x00}, // ,
{0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // -
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00}, // .
{0x00,0x00,0x00,0x80,0xC0,0x60,0x30,0x00,0x0C,0x06,0x03,0x01,0x00,0x00,0x00,0x00}, // /
{0xF0,0xF8,0x0C,0xC4,0x0C,0xF8,0xF0,0x00,0x03,0x07,0x0C,0x08,0x0C,0x07,0x03,0x00}, // 0
{0x00,0x10,0x18,0xFC,0xFC,0x00,0x00,0x00,0x00,0x08,0x08,0x0F,0x0F,0x08,0x08,0x00}, // 1
{0x08,0x0C,0x84,0xC4,0x64,0x3C,0x18,0x00,0x0E,0x0F,0x09,0x08,0x08,0x0C,0x0C,0x00}, // 2
{0x08,0x0C,0x44,0x44,0x44,0xFC,0xB8,0x00,0x04,0x0C,0x08,0x08,0x08,0x0F,0x07,0x00}, // 3
{0xC0,0xE0,0xB0,0x98,0xFC,0xFC,0x80,0x00,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00}, // 4
{0x7C,0x7C,0x44,0x44,0x44,0xC4,0x84,0x00,0x04,0x0C,0x08,0x08,0x08,0x0F,0x07,0x00}, // 5
{0xF0,0xF8,0x4C,0x44,0x44,0xC0,0x80,0x00,0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00}, // 6
{0x0C,0x0C,0x04,0x84,0xC4,0x7C,0x3C,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00}, // 7
{0xB8,0xFC,0x44,0x44,0x44,0xFC,0xB8,0x00,0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00}, // 8
{0x38,0x7C,0x44,0x44,0x44,0xFC,0xF8,0x00,0x00,0x08,0x08,0x08,0x0C,0x07,0x03,0x00}, // 9
{0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00}, // :
{0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x08,0x0E,0x06,0x00,0x00,0x00}, // ;
{0x00,0x80,0xC0,0x60,0x30,0x18,0x08,0x00,0x00,0x00,0x01,0x03,0x06,0x0C,0x08,0x00}, // <
{0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00}, // =
{0x00,0x08,0x18,0x30,0x60,0xC0,0x80,0x00,0x00,0x08,0x0C,0x06,0x03,0x01,0x00,0x00}, // >
{0x18,0x1C,0x04,0xC4,0xE4,0x3C,0x18,0x00,0x00,0x00,0x00,0x0D,0x0D,0x00,0x00,0x00}, // ?
{0xF0,0xF8,0x08,0xC8,0xC8,0xF8,0xF0,0x00,0x07,0x0F,0x08,0x0B,0x0B,0x0B,0x01,0x00}, // @
{0xE0,0xF0,0x98,0x8C,0x98,0xF0,0xE0,0x00,0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00}, // A
{0x04,0xFC,0xFC,0x44,0x44,0xFC,0xB8,0x00,0x08,0x0F,0x0F,0x08,0x08,0x0F,0x07,0x00}, // B
{0xF0,0xF8,0x0C,0x04,0x04,0x0C,0x18,0x00,0x03,0x07,0x0C,0x08,0x08,0x0C,0x06,0x00}, // C
{0x04,0xFC,0xFC,0x04,0x0C,0xF8,0xF0,0x00,0x08,0x0F,0x0F,0x08,0x0C,0x07,0x03,0x00}, // D
{0x04,0xFC,0xFC,0x44,0xE4,0x0C,0x1C,0x00,0x08,0x0F,0x0F,0x08,0x08,0x0C,0x0E,0x00}, // E
{0x04,0xFC,0xFC,0x44,0xE4,0x0C,0x1C,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00}, // F
{0xF0,0xF8,0x0C,0x84,0x84,0x8C,0x98,0x00,0x03,0x07,0x0C,0x08,0x08,0x07,0x0F,0x00}, // G
{0xFC,0xFC,0x40,0x40,0x40,0xFC,0xFC,0x00,0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00}, // H
{0x00,0x00,0x04,0xFC,0xFC,0x04,0x00,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00}, // I
{0x00,0x00,0x00,0x04,0xFC,0xFC,0x04,0x00,0x07,0x0F,0x08,0x08,0x0F,0x07,0x00,0x00}, // J
{0x04,0xFC,0xFC,0xC0,0xE0,0x3C,0x1C,0x00,0x08,0x0F,0x0F,0x00,0x01,0x0F,0x0E,0x00}, // K
{0x04,0xFC,0xFC,0x04,0x00,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x08,0x0C,0x0E,0x00}, // L
{0xFC,0xFC,0x38,0x70,0x38,0xFC,0xFC,0x00,0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00}, // M
{0xFC,0xFC,0x38,0x70,0xE0,0xFC,0xFC,0x00,0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00}, // N
{0xF8,0xFC,0x04,0x04,0x04,0xFC,0xF8,0x00,0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00}, // O
{0x04,0xFC,0xFC,0x44,0x44,0x7C,0x38,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00}, // P
{0xF8,0xFC,0x04,0x04,0x04,0xFC,0xF8,0x00,0x07,0x0F,0x08,0x0E,0x3C,0x3F,0x27,0x00}, // Q
{0x04,0xFC,0xFC,0x44,0xC4,0xFC,0x38,0x00,0x08,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00}, // R
{0x18,0x3C,0x64,0x44,0xC4,0x9C,0x18,0x00,0x06,0x0E,0x08,0x08,0x08,0x0F,0x07,0x00}, // S
{0x00,0x1C,0x0C,0xFC,0xFC,0x0C,0x1C,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00}, // T
{0xFC,0xFC,0x00,0x00,0x00,0xFC,0xFC,0x00,0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00}, // U
{0xFC,0xFC,0x00,0x00,0x00,0xFC,0xFC,0x00,0x01,0x03,0x06,0x0C,0x06,0x03,0x01,0x00}, // V
{0xFC,0xFC,0x00,0xC0,0x00,0xFC,0xFC,0x00,0x07,0x0F,0x0E,0x03,0x0E,0x0F,0x07,0x00}, // W
{0x0C,0x3C,0xF0,0xE0,0xF0,0x3C,0x0C,0x00,0x0C,0x0F,0x03,0x01,0x03,0x0F,0x0C,0x00}, // X
{0x00,0x3C,0x7C,0xC0,0xC0,0x7C,0x3C,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00}, // Y
{0x1C,0x0C,0x84,0xC4,0x64,0x3C,0x1C,0x00,0x0E,0x0F,0x09,0x08,0x08,0x0C,0x0E,0x00}, // Z
{0x00,0x00,0xFC,0xFC,0x04,0x04,0x00,0x00,0x00,0x00,0x0F,0x0F,0x08,0x08,0x00,0x00}, // [
{0x38,0x70,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x0E,0x00}, // (\)
{0x00,0x00,0x04,0x04,0xFC,0xFC,0x00,0x00,0x00,0x00,0x08,0x08,0x0F,0x0F,0x00,0x00}, // ]
{0x08,0x0C,0x06,0x03,0x06,0x0C,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // ^
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20}, // _
{0x00,0x00,0x03,0x07,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // `
{0x00,0xA0,0xA0,0xA0,0xE0,0xC0,0x00,0x00,0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00}, // a
{0x04,0xFC,0xFC,0x20,0x60,0xC0,0x80,0x00,0x00,0x0F,0x0F,0x08,0x08,0x0F,0x07,0x00}, // b
{0xC0,0xE0,0x20,0x20,0x20,0x60,0x40,0x00,0x07,0x0F,0x08,0x08,0x08,0x0C,0x04,0x00}, // c
{0x80,0xC0,0x60,0x24,0xFC,0xFC,0x00,0x00,0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00}, // d
{0xC0,0xE0,0xA0,0xA0,0xA0,0xE0,0xC0,0x00,0x07,0x0F,0x08,0x08,0x08,0x0C,0x04,0x00}, // e
{0x40,0xF8,0xFC,0x44,0x0C,0x18,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00}, // f
{0xC0,0xE0,0x20,0x20,0xC0,0xE0,0x20,0x00,0x27,0x6F,0x48,0x48,0x7F,0x3F,0x00,0x00}, // g
{0x04,0xFC,0xFC,0x40,0x20,0xE0,0xC0,0x00,0x08,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00}, // h
{0x00,0x00,0x20,0xEC,0xEC,0x00,0x00,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00}, // i
{0x00,0x00,0x00,0x00,0x20,0xEC,0xEC,0x00,0x00,0x30,0x70,0x40,0x40,0x7F,0x3F,0x00}, // j
{0x04,0xFC,0xFC,0x80,0xC0,0x60,0x20,0x00,0x08,0x0F,0x0F,0x01,0x03,0x0E,0x0C,0x00}, // k
{0x00,0x00,0x04,0xFC,0xFC,0x00,0x00,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00}, // l
{0xE0,0xE0,0x60,0xC0,0x60,0xE0,0xC0,0x00,0x0F,0x0F,0x00,0x07,0x00,0x0F,0x0F,0x00}, // m
{0x20,0xE0,0xC0,0x20,0x20,0xE0,0xC0,0x00,0x00,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00}, // n
{0xC0,0xE0,0x20,0x20,0x20,0xE0,0xC0,0x00,0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00}, // o
{0x20,0xE0,0xC0,0x20,0x20,0xE0,0xC0,0x00,0x40,0x7F,0x7F,0x48,0x08,0x0F,0x07,0x00}, // p
{0xC0,0xE0,0x20,0x20,0xC0,0xE0,0x20,0x00,0x07,0x0F,0x08,0x48,0x7F,0x7F,0x40,0x00}, // q
{0x20,0xE0,0xC0,0x60,0x20,0xE0,0xC0,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00}, // r
{0x40,0xE0,0xA0,0x20,0x20,0x60,0x40,0x00,0x04,0x0C,0x09,0x09,0x0B,0x0E,0x04,0x00}, // s
{0x20,0x20,0xF8,0xFC,0x20,0x20,0x00,0x00,0x00,0x00,0x07,0x0F,0x08,0x0C,0x04,0x00}, // t
{0xE0,0xE0,0x00,0x00,0xE0,0xE0,0x00,0x00,0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00}, // u
{0x00,0xE0,0xE0,0x00,0x00,0xE0,0xE0,0x00,0x00,0x03,0x07,0x0C,0x0C,0x07,0x03,0x00}, // v
{0xE0,0xE0,0x00,0x80,0x00,0xE0,0xE0,0x00,0x07,0x0F,0x0C,0x07,0x0C,0x0F,0x07,0x00}, // w
{0x20,0x60,0xC0,0x80,0xC0,0x60,0x20,0x00,0x08,0x0C,0x07,0x03,0x07,0x0C,0x08,0x00}, // x
{0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,0x00,0x47,0x4F,0x48,0x48,0x68,0x3F,0x1F,0x00}, // y
{0x60,0x60,0x20,0xA0,0xE0,0x60,0x20,0x00,0x0C,0x0E,0x0B,0x09,0x08,0x0C,0x0C,0x00}, // z
{0x00,0x40,0x40,0xF8,0xBC,0x04,0x04,0x00,0x00,0x00,0x00,0x07,0x0F,0x08,0x08,0x00}, // {
{0x00,0x00,0x00,0xBC,0xBC,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00}, // |
{0x00,0x04,0x04,0xBC,0xF8,0x40,0x40,0x00,0x00,0x08,0x08,0x0F,0x07,0x00,0x00,0x00}, // }
{0x80,0xC0,0x40,0xC0,0x80,0xC0,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // ~
{0x80,0xC0,0x60,0x30,0x60,0xC0,0x80,0x00,0x07,0x07,0x04,0x04,0x04,0x07,0x07,0x00}}; // 0x7F
이는 8X16크기의 ASCII코드 폰트를 만든 것이다.
이제 순차적으로 출력하기만 하면 문자 하나를 출력할 수 있다.
프로그래밍
#include <mega328.h>
#include <delay.h>
#include "GLCD.h"
void main()
{
GLCD_ON();
GLCD_ASCII(0,0,'A');
}
void GLCD_ASCII(unsigned short x, unsigned short y, unsigned int data)
{
unsigned short j;
GLCD_XY(x,y);
for(j=0; j<8; j++)
{
GLCD_Write(ASCII[data][j]);
}
GLCD_XY(x,y+1);
for(; j<16; j++)
{
GLCD_Write(ASCII[data][j]);
}
}
'GLCD.h'에는 3편에 등장한 모든 함수들과 위에 올린 ASCII코드 배열을 합쳐놓았다.
GLCD_ASCII 함수는 X와 Y 좌표값과 표시할 문자상수를 입력받는다.
GLCD_XY함수로 기준좌표를 잡고, Y번째줄(Y page)에 아스키코드 배열 중 0~7(8bit)까지 데이터를 출력시킨다.
그리고 Y+1번째줄(Y+1 page)로 좌표를 다시 잡고 나머지 아스키코드 배열 8~15(8bit)를 출력시킨다.
이렇게 X길이 : 8, Y길이 : 16짜리 문자하나를 출력시킨다.
시뮬레이션 결과
"Hello, World!" 문자열 출력
문자열 출력은 결국, 여러 문자를 연속적으로 출력하는 것이다.
#include <mega328.h>
#include <delay.h>
#include "GLCD.h"
void main()
{
GLCD_ON();
GLCD_Print_ENG(0,0,"Hello, World!");
}
void GLCD_Print_ENG(unsigned short x, unsigned short y, char *str)
{
while(*str != NULL)
{
GLCD_ASCII(x,y,*str);
str++;
x+=8;
}
}
void GLCD_ASCII(unsigned short x, unsigned short y, unsigned int data)
{
unsigned short j;
GLCD_XY(x,y);
for(j=0; j<8; j++)
{
GLCD_Write(ASCII[data][j]);
}
GLCD_XY(x,y+1);
for(; j<16; j++)
{
GLCD_Write(ASCII[data][j]);
}
}
GLCD_Print_ENG 함수는 XY좌표와 포인터형 문자열을 입력받는다.
배열에 NULL값이 나오지 않을 때까지 str 주소값을 증가시키며 하나씩 GLCD_ASCII로 출력시킨다.
시뮬레이션 결과
<응용>
void main()
{
GLCD_ON();
GLCD_Print_ENG(0,0,"Hello, World!");
GLCD_Print_ENG(0,2,"ABCDEFGHIJKLM");
GLCD_Print_ENG(0,4,"C LANGUAGE");
GLCD_Print_ENG(0,6,"Welcome to AVR");
}
'AVR > GLCD' 카테고리의 다른 글
[AVR] GLCD제어_KS0108 - 3편(점 찍기, 프로테우스) (4) | 2021.01.05 |
---|---|
[AVR] GLCD제어_KS0108 - 2편(핀 기능 정리, 인터페이스) (0) | 2021.01.05 |
[AVR] GLCD제어_KS0108 - 1편(작동원리, 데이터시트) (0) | 2021.01.05 |