[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 |