CHERISOFT

저번 시간에는 점을 찍어봤으니 문자를 출력해보도록 해보자.

ASCII 코드, 문자출력

ASCII코드표 (출처 : https://blog.naver.com/vivazzanggu/221379863473)

영 문자의 출력을 위해서는 아스키(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");
    
}