✅ 목표 (Goal)

구조체 내의 포인터 변수에 접근해보자.

✅폰트 배열을 구경해보자.

이러한 폰트가 있다고 가정하자.

폰트의 내용 자체는 중요하지 않으므로 넘어가자.

#define FONT_NEA 10
#define FONT_1EA 5

uint8_t lowercase_font[FONT_NEA][FONT_1EA] = {
	{ 0xAA, 0xAA, 0x34, 0x86, 0x2E, },
	{ 0x2C, 0x89, 0x2C, 0x89, 0x2B, },
	{ 0x29, 0x8C, 0x28, 0x8D, 0x28, },
	{ 0x26, 0x8F, 0x25, 0x90, 0x25, },
	{ 0x23, 0x92, 0x22, 0x93, 0x22, },
	{ 0x00, 0x88, 0x20, 0x8A, 0x01, },
	{ 0x02, 0x88, 0x1E, 0x8B, 0x02, },
	{ 0x03, 0x88, 0x1D, 0x8A, 0x04, },
	{ 0x05, 0x88, 0x1B, 0x8A, 0x06, },
	{ 0x06, 0x88, 0x1A, 0xAA, 0xAA, }
};

uint8_t uppercase_font[FONT_NEA][FONT_1EA] = {
	{ 0xBB, 0xBB, 0x1E, 0xA0, 0x15, },
	{ 0x13, 0xA2, 0x13, 0xA2, 0x13, },
	{ 0x2D, 0x88, 0x2D, 0x88, 0x2C, },
	{ 0x06, 0x88, 0x1C, 0x89, 0x03, },
	{ 0x13, 0xA3, 0x12, 0xA4, 0x11, },
	{ 0x11, 0x8A, 0x0D, 0x8A, 0x13, },
	{ 0x2D, 0x88, 0x2D, 0x88, 0x2D, },
	{ 0x2D, 0x88, 0x2D, 0x88, 0x2D, },
	{ 0x0A, 0x89, 0x18, 0x88, 0x0A, },
	{ 0x0C, 0x89, 0x15, 0x89, 0x0D, }
};

▼ 왜 이렇게 생겨먹은지 알고싶다면?

▼ 마이크로칩: 폰트 코드, 맞는지는 모르것다.

https://www.microchip.com/forums/m702313.aspx

하나하나씩 만들수도 있지만, 너무 노가다라 웹에서 퍼왔다.

✅ CLCD 구조체를 만들어 보자.