BASIC4MCU | 질문게시판 | OLED에 큰 폰트를 사용하여 숫자 나타내기
페이지 정보
작성자 kindrightL 작성일2020-11-02 13:54 조회6,500회 댓글1건본문
안녕하세요
저는 지금 OLED SSD1306에 32x48사이즈로 폰트를 나타내려고 하는데요
5x8폰트는 잘 나오는데 32x48같이 큰 사이즈 폰트를 사용하려 하니 원리를 잘 이해하지 못했는지 잘 진행이 되지 않습니다ㅠㅠ
이것은 main.c이구요
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <util/delay.h>
#include "spi.h"
typedef int bool;
enum
{
false,
true
};
/*============================================================================*/
#define PORTB_REG 0x23
struct port
{
uint8_t pin;
uint8_t ddr;
uint8_t port;
};
volatile struct port *const portb = (void*)PORTB_REG;
#define SCK 0x20
#define MISO 0x10
#define MOSI 0x08
#define CS 0x04
#define DC 0x02
#define RST 0x01
/*============================================================================*/
static inline void cs_high(void)
{
portb->port |= CS;
}
static inline void cs_low(void)
{
portb->port &= ~CS;
}
static inline void dc_high(void)
{
portb->port |= DC;
}
static inline void dc_low(void)
{
portb->port &= ~DC;
}
static inline void rst_high(void)
{
portb->port |= RST;
}
static inline void rst_low(void)
{
portb->port &= ~RST;
}
/*============================================================================*/
static void port_init(void)
{
portb->ddr = (SCK | MOSI | CS | DC | RST);
portb->port = (CS | DC | RST);
}
/*============================================================================*/
/* Fundamental Command */
#define SSD1306_CMD_ENTIRE_ON 0xA4
#define SSD1306_CMD_DISPLAY_ON 0xAE
/* Addressing Setting Command */
#define SSD1306_CMD_ADDR_MODE 0x20
#define SSD1306_CMD_COL_ADDR 0x21
#define SSD1306_CMD_ROW_ADDR 0x22
enum
{
HORIZONTAL,
VERTICAL,
PAGE
};
#define SSD1306_CMD_COL_LO_ADDR 0x00
#define SSD1306_CMD_COL_HI_ADDR 0x10
#define SSD1306_CMD_PAGE_START_ADDR 0xB0
/* Charge Pump Command */
#define SSD1306_CMD_CHARGEPUMP 0x8D
/*============================================================================*/
void ssd1306_reset(void)
{
rst_low();
_delay_ms(1);
rst_high();
}
void ssd1306_cmd(uint8_t *cmd, uint8_t len)
{
int i;
dc_low();
cs_low();
for (i=0; i<len; i++)
spi_rw(*cmd++);
cs_high();
}
void ssd1306_data(uint8_t *data, uint16_t len)
{
int i;
dc_high();
cs_low();
for (i=0; i<len; i++)
spi_rw(*data++);
cs_high();
}
/*============================================================================*/
static void ssd1306_chargepump_enable(bool enable)
{
uint8_t cmd_buf[2];
cmd_buf[0] = SSD1306_CMD_CHARGEPUMP;
cmd_buf[1] = 0x10 | (enable ? 4 : 0);
ssd1306_cmd(cmd_buf, 2);
}
static void ssd1306_entire_on(bool enable)
{
uint8_t cmd = SSD1306_CMD_ENTIRE_ON | enable;
ssd1306_cmd(&cmd, 1);
}
static void ssd1306_display_on(bool enable)
{
uint8_t cmd = SSD1306_CMD_DISPLAY_ON | enable;
ssd1306_cmd(&cmd, 1);
}
static void ssd1306_set_addr_mode(uint8_t mode)
{
uint8_t cmd_buf[2];
cmd_buf[0] = SSD1306_CMD_ADDR_MODE;
cmd_buf[1] = mode;
ssd1306_cmd(cmd_buf, 2);
}
static void ssd1306_set_page_start(uint8_t page)
{
uint8_t cmd = SSD1306_CMD_PAGE_START_ADDR | page;
ssd1306_cmd(&cmd, 1);
}
static void ssd1306_set_column_addr(uint8_t column)
{
uint8_t cmd;
cmd = SSD1306_CMD_COL_LO_ADDR | (column & 0xF);
ssd1306_cmd(&cmd, 1);
cmd = SSD1306_CMD_COL_HI_ADDR | ((column >> 4) & 0xF);
ssd1306_cmd(&cmd, 1);
}
void ssd1306_init(void)
{
_delay_ms(1);
ssd1306_reset();
ssd1306_chargepump_enable(true);
ssd1306_entire_on(false);
ssd1306_display_on(true);
}
/*============================================================================*/
#define PAGE_NUM 8
#define COL_NUM 128
#define CHAR_WIDTH 6
#define MAX_CH_PER_LINE 21
static uint8_t gddram[COL_NUM];
void clear_screen(void)
{
uint8_t page;
uint8_t col;
for (col=0; col<COL_NUM; col++)
{
gddram[col] = 0;
for (page=0; page<PAGE_NUM; page++)
{
ssd1306_set_page_start(page);
ssd1306_data(gddram, COL_NUM);
};
};
ssd1306_set_column_addr(0);
}
extern void get_ch_data(uint8_t ch, uint8_t *buffer);
void setup(void)
{
port_init();
spi_init();
ssd1306_init();
ssd1306_set_addr_mode(PAGE);
clear_screen();
oled_msg(0, 0, "> Positioned Text <");
oled_msg(2, 2, "Even :");
oled_msg(3, 2, "Odd :");
}
void loop(void)
{
static int loop = 0;
oled_msg(2, 9, "%6d", loop * 2);
oled_msg(3, 9, "%6d", loop * 2 + 1);
loop++;
_delay_ms(1000);
}
int main(void)
{
setup();
int j;
for(j=0; j<6; j++)
{
get_ch_data(3, gddram);
ssd1306_set_page_start(j);
ssd1306_set_column_addr(0);
ssd1306_data(gddram[j*32],32);
};
}
여기부터가 제가 만든 font 입니다.
#include <avr/pgmspace.h>
static const uint8_t MYFONT3248[11][192] PROGMEM ={{0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFC,0x7E,0x3E,0x1F,0x1F,0x1F,0x1F,0x1F,0x3E,0x7E,0xFC,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xF8,0xFE,0xFF,0xFF,0x7F,0x0F,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x0F,0x7F,0xFF,0xFF,0xFE,0xF8,0xC0,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xF8,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xF8,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x01,0x07,0x3F,0xFF,0xFF,0xFF,0xFC,0xF0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xF0,0xFC,0xFF,0xFF,0xFF,0x3F,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x0F,0x1F,0x1F,0x3F,0x3E,0x7C,0x7C,0x7C,0x7C,0x7C,0x3E,0x3F,0x1F,0x1F,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00},{0xE0,0xE0,0xE0,0xE0,0xE0,0xF0,0xF0,0xF0,0xF8,0xF8,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x00},{0xF0,0xF8,0xFC,0xFC,0xFC,0xFE,0x7E,0x7E,0x7E,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x7F,0xFF,0xFF,0xFE,0xFE,0xFE,0xFC,0xFC,0xF8,0xF0,0xE0,0xC0,0x00,0x00,0x03,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xF0,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x0F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF,0xFF,0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF,0xFF,0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7D,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x00},{0x00,0xF8,0xFC,0xFC,0xFC,0xFE,0xFE,0xFE,0x7E,0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,0x3F,0x7F,0x7F,0x7F,0xFE,0xFE,0xFE,0xFC,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x07,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x83,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xFC,0xFC,0xDE,0x9F,0x8F,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x03,0x07,0x1F,0x3F,0x7F,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x00,0x00,0xE0,0xC0,0xC0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xF0,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x1F,0x00,0x1F,0x1F,0x1F,0x3F,0x3F,0x3F,0x3F,0x7F,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7F,0x7F,0x3F,0x3F,0x1F,0x1F,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00},{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF1,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xE0,0xF0,0xF8,0xFC,0xFE,0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x03,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00},{0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E,0x7E,0x7E,0xFC,0xFC,0xFC,0xF8, 0xF8,0xF0,0xE0,0xC0,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,0x01,0x03,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xF0,0x00,0xC0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xF0,0xFF,0xFF,0xFF,0xFF,0x7F,0x1F,0x07,0x00,0x0F,0x1F,0x1F,0x3F,0x3F,0x7E,0x7E,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7E,0x7E,0x3F,0x3F,0x1F,0x1F,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00},{0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0x7E,0x3F,0x1F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x1F,0x1E,0x1E,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xF0,0xFC,0xFF,0xFF,0xFF,0x7F,0x1F,0x07,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x78,0x3C,0x3C,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E,0x3C,0x7C,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x07,0x3F,0x7F,0xFF,0xFF,0xF8,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF8,0xFF,0xFF,0x7F,0x3F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x0F,0x1F,0x1F,0x3F,0x3E,0x7E,0x7C,0x7C,0x7C,0x7C,0x7C,0x7E,0x3E,0x3F,0x1F,0x1F,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00},{0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xF0,0xFC,0xFF,0xFF,0xFF,0x3F,0x0F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0xF8,0xFE,0xFF,0xFF,0x7F,0x1F,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0xF8,0xFE,0xFF,0xFF,0x7F,0x1F,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xF8,0xFE,0xFF,0xFF,0x7F,0x1F,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x70,0x7C,0x7F,0x7F,0x7F,0x7F,0x1F,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},{0x00,0x00,0x80,0xE0,0xF8,0xF8,0xFC,0x7E,0x3E,0x3E,0x1F,0x1F,0x1F,0x0F,0x0F,0x1F,0x1F,0x1F,0x1F,0x3E,0x3E,0x7E,0xFC,0xFC,0xF8,0xF0,0xE0,0xC0,0x00,0x00,0x00,0x00,0x7E,0xFF,0xFF,0xFF,0xFF,0xFF,0xC1,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x81,0xFF,0xFF,0xFF,0xFF,0xFF,0x3E,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x8F,0x9F,0xDF,0xFF,0xFF,0xFE,0xFC,0xFC,0xFC,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF8,0xFC,0xFE,0xBF,0x9F,0x0F,0x07,0x03,0x00,0x00,0x00,0x00,0xC0,0xF0,0xFC,0xFE,0xFF,0xFF,0x3F,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x03,0x03,0x03,0x07,0x0F,0x0F,0x1F,0x7F,0xFF,0xFF,0xFE,0xFC,0xF0,0xC0,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x01,0x03,0x07,0x0F,0x1F,0x1F,0x3F,0x3E,0x3E,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x3E,0x3E,0x3F,0x1F,0x1F,0x0F,0x07,0x03,0x01,0x00,0x00,0x00},{0x00,0x00,0x80,0xE0,0xF0,0xF8,0xF8,0xFC,0xFE,0x7E,0x3E,0x3F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x3F,0x3E,0x7E,0xFE,0xFC,0xFC,0xF8,0xF0,0xE0,0xC0,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x07,0x1F,0xFF,0xFF,0xFF,0xFF,0xFC,0xC0,0x00,0x0F,0x7F,0xFF,0xFF,0xFF,0xFF,0xF8,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x03,0x07,0x07,0x0F,0x0F,0x1F,0x1F,0x1F,0x3F,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E,0x1E,0x1F,0x1F,0x0F,0x0F,0x07,0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF8,0xFE,0xFF,0x7F,0x1F,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x7E,0x7E,0x7E,0x7C,0x7C,0x7C,0x7C,0x7C,0x7E,0x3E,0x3E,0x3E,0x1F,0x1F,0x0F,0x0F,0x07,0x03,0x01,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,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,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,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,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,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,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}};void get_ch_data(uint8_t ch, uint8_t *buffer){int i;for(i=0; i<196; i++)*buffer++ = pgm_read_byte(MYFONT3248[ch][i]);}위의 코드는 3이라는 숫자를 나타내기 위해 작성해본 코드이고 제가 이해를 잘 하지 못하여 빌드를 했을 때 몇가지의 에러가 나는 상황이고숫자가 아닌 이상한 그래픽이 디스플레이 되고 있습니다ㅠㅠpage0에 32x8을 써넣고 다음 page로 넘어가서 다음 32x8을 써넣는 방식으로 해야할 것 같은데 코드로 어떻게 구현해야할지 모르겠습니다.도와주세요ㅠㅠㅠㅠㅠ
댓글 1
조회수 6,500master님의 댓글
master 작성일
https://www.hackster.io/jdmorise/big-characters-on-ssd1306-on-microchip-avr-e9e198
웹검색해서 방법을 찾아보세요
(5x8 출력을 완전히 이해하면 32x48을 출력하는 것도 어렵지 않습니다.)