打印
[其他ST产品]

stm32-OLED显示屏学习

[复制链接]
874|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
拖了很久的OLED还没实现的,最近实现了,分享一下怎么实现的。图片和文字都试一下。
开发板上两个管脚连接到OLED上面的。PB8和PB9管脚。


使用特权

评论回复
沙发
梅花香自123|  楼主 | 2023-3-29 12:38 | 只看该作者
1- 文字显示
(1)PCtoLCD2002处理生成字模
记得换切换模模式为字符模式。然后点击生成字模。

使用特权

评论回复
板凳
梅花香自123|  楼主 | 2023-3-29 12:39 | 只看该作者
记得在设置中将格式设置为C51格式的。

使用特权

评论回复
地板
梅花香自123|  楼主 | 2023-3-29 12:40 | 只看该作者
复制代码带二维数组中。
#ifndef __FONT_HZK_H
#define __FONT_HZK_H           

#include <stdint.h>

/*  宋体 16X16:  生日快乐呀! */
#define HZK_LEN_BIRTH        6
static uint8_t Hzk_Birth[][32]=
{

                {0x80,0x40,0x30,0x1E,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00},
                {0x40,0x40,0x42,0x42,0x42,0x42,0x42,0x7F,0x42,0x42,0x42,0x42,0x42,0x40,0x40,0x00},/*"生",0*/
                /* (16 X 16 , 宋体 )*/

                {0x00,0x00,0x00,0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE,0x00,0x00,0x00,0x00},
                {0x00,0x00,0x00,0xFF,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xFF,0x00,0x00,0x00,0x00},/*"日",1*/
                /* (16 X 16 , 宋体 )*/

                {0x00,0xE0,0x00,0xFF,0x10,0x20,0x08,0x08,0x08,0xFF,0x08,0x08,0xF8,0x00,0x00,0x00},
                {0x01,0x00,0x00,0xFF,0x00,0x81,0x41,0x31,0x0D,0x03,0x0D,0x31,0x41,0x81,0x81,0x00},/*"快",2*/
                /* (16 X 16 , 宋体 )*/

                {0x00,0x00,0xE0,0x9C,0x84,0x84,0x84,0xF4,0x82,0x82,0x83,0x82,0x80,0x80,0x00,0x00},
                {0x00,0x20,0x10,0x08,0x06,0x40,0x80,0x7F,0x00,0x00,0x02,0x04,0x08,0x30,0x00,0x00},/*"乐",3*/
                /* (16 X 16 , 宋体 )*/

                {0x00,0xFC,0x04,0x04,0xFC,0x00,0xC2,0xBA,0x82,0x82,0x82,0xFE,0x82,0x82,0x80,0x00},
                {0x00,0x0F,0x04,0x04,0x0F,0x20,0x10,0x08,0x04,0x42,0x81,0x7F,0x00,0x00,0x00,0x00},/*"呀",4*/
                /* (16 X 16 , 宋体 )*/

                {0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
                {0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",5*/
                /* (16 X 16 , 宋体 )*/
};

#endif

使用特权

评论回复
5
梅花香自123|  楼主 | 2023-3-29 12:44 | 只看该作者
复制代码带二维数组中。

#ifndef __FONT_HZK_H
#define __FONT_HZK_H           

#include <stdint.h>

/*  宋体 16X16:  生日快乐呀! */
#define HZK_LEN_BIRTH        6
static uint8_t Hzk_Birth[][32]=
{

                {0x80,0x40,0x30,0x1E,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00},
                {0x40,0x40,0x42,0x42,0x42,0x42,0x42,0x7F,0x42,0x42,0x42,0x42,0x42,0x40,0x40,0x00},/*"生",0*/
                /* (16 X 16 , 宋体 )*/

                {0x00,0x00,0x00,0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE,0x00,0x00,0x00,0x00},
                {0x00,0x00,0x00,0xFF,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xFF,0x00,0x00,0x00,0x00},/*"日",1*/
                /* (16 X 16 , 宋体 )*/

                {0x00,0xE0,0x00,0xFF,0x10,0x20,0x08,0x08,0x08,0xFF,0x08,0x08,0xF8,0x00,0x00,0x00},
                {0x01,0x00,0x00,0xFF,0x00,0x81,0x41,0x31,0x0D,0x03,0x0D,0x31,0x41,0x81,0x81,0x00},/*"快",2*/
                /* (16 X 16 , 宋体 )*/

                {0x00,0x00,0xE0,0x9C,0x84,0x84,0x84,0xF4,0x82,0x82,0x83,0x82,0x80,0x80,0x00,0x00},
                {0x00,0x20,0x10,0x08,0x06,0x40,0x80,0x7F,0x00,0x00,0x02,0x04,0x08,0x30,0x00,0x00},/*"乐",3*/
                /* (16 X 16 , 宋体 )*/

                {0x00,0xFC,0x04,0x04,0xFC,0x00,0xC2,0xBA,0x82,0x82,0x82,0xFE,0x82,0x82,0x80,0x00},
                {0x00,0x0F,0x04,0x04,0x0F,0x20,0x10,0x08,0x04,0x42,0x81,0x7F,0x00,0x00,0x00,0x00},/*"呀",4*/
                /* (16 X 16 , 宋体 )*/

                {0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
                {0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",5*/
                /* (16 X 16 , 宋体 )*/
};

#endif

使用特权

评论回复
6
梅花香自123|  楼主 | 2023-3-29 12:45 | 只看该作者
这里调用的是OLED_ShowChinese()函数。
/* Show Chinese on OLED */
void OLED_ShowChinese(uint8_t (*Hzk)[32], uint8_t x, uint8_t y, uint8_t no)
{                                  
        uint8_t                 t,adder=0;
       
        OLED_Set_Pos(x, y);       
        for(t=0;t<16;t++)
        {
                OLED_WR_Byte(Hzk[2*no][t],OLED_DATA);
                adder+=1;
        }       
       
        OLED_Set_Pos(x,y+1);       
        for(t=0;t<16;t++)
        {       
                OLED_WR_Byte(Hzk[2*no+1][t],OLED_DATA);
                adder+=1;
        }                                       
}

使用特权

评论回复
7
梅花香自123|  楼主 | 2023-3-29 12:45 | 只看该作者

使用特权

评论回复
8
梅花香自123|  楼主 | 2023-3-29 12:49 | 只看该作者
2- 英文与符号显示(直接用)
这个可以直接在头文件中声明,因为英文的字符串都是有线程的编码的,可以直接调用。
OLED_ShowString(pos_x, pos_y, “WangDengtao”, OLED_FONT16);
#ifndef __FONT_ASCII_H
#define __FONT_ASCII_H           

#include <stdint.h>

/************************************ ASCII font size 6x8 ************************************/
static const uint8_t F6x8[][6] =
{
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00},// sp
        {0x00, 0x00, 0x00, 0x2f, 0x00, 0x00},// !
        {0x00, 0x00, 0x07, 0x00, 0x07, 0x00},// "
        {0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14},// #
        {0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12},// $
        {0x00, 0x62, 0x64, 0x08, 0x13, 0x23},// %
        {0x00, 0x36, 0x49, 0x55, 0x22, 0x50},// &
        {0x00, 0x00, 0x05, 0x03, 0x00, 0x00},// '
        {0x00, 0x00, 0x1c, 0x22, 0x41, 0x00},// (
        {0x00, 0x00, 0x41, 0x22, 0x1c, 0x00},// )
        {0x00, 0x14, 0x08, 0x3E, 0x08, 0x14},// *
        {0x00, 0x08, 0x08, 0x3E, 0x08, 0x08},// +
        {0x00, 0x00, 0x00, 0xA0, 0x60, 0x00},// ,
        {0x00, 0x08, 0x08, 0x08, 0x08, 0x08},// -
        {0x00, 0x00, 0x60, 0x60, 0x00, 0x00},// .
        {0x00, 0x20, 0x10, 0x08, 0x04, 0x02},// /
        {0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E},// 0
        {0x00, 0x00, 0x42, 0x7F, 0x40, 0x00},// 1
        {0x00, 0x42, 0x61, 0x51, 0x49, 0x46},// 2
        {0x00, 0x21, 0x41, 0x45, 0x4B, 0x31},// 3
        {0x00, 0x18, 0x14, 0x12, 0x7F, 0x10},// 4
        {0x00, 0x27, 0x45, 0x45, 0x45, 0x39},// 5
        {0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30},// 6
        {0x00, 0x01, 0x71, 0x09, 0x05, 0x03},// 7
        {0x00, 0x36, 0x49, 0x49, 0x49, 0x36},// 8
        {0x00, 0x06, 0x49, 0x49, 0x29, 0x1E},// 9
        {0x00, 0x00, 0x36, 0x36, 0x00, 0x00},// :
        {0x00, 0x00, 0x56, 0x36, 0x00, 0x00},// ;
        {0x00, 0x08, 0x14, 0x22, 0x41, 0x00},// <
        {0x00, 0x14, 0x14, 0x14, 0x14, 0x14},// =
        {0x00, 0x00, 0x41, 0x22, 0x14, 0x08},// >
        {0x00, 0x02, 0x01, 0x51, 0x09, 0x06},// ?
        {0x00, 0x32, 0x49, 0x59, 0x51, 0x3E},// @
        {0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C},// A
        {0x00, 0x7F, 0x49, 0x49, 0x49, 0x36},// B
        {0x00, 0x3E, 0x41, 0x41, 0x41, 0x22},// C
        {0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C},// D
        {0x00, 0x7F, 0x49, 0x49, 0x49, 0x41},// E
        {0x00, 0x7F, 0x09, 0x09, 0x09, 0x01},// F
        {0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A},// G
        {0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F},// H
        {0x00, 0x00, 0x41, 0x7F, 0x41, 0x00},// I
        {0x00, 0x20, 0x40, 0x41, 0x3F, 0x01},// J
        {0x00, 0x7F, 0x08, 0x14, 0x22, 0x41},// K
        {0x00, 0x7F, 0x40, 0x40, 0x40, 0x40},// L
        {0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F},// M
        {0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F},// N
        {0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E},// O
        {0x00, 0x7F, 0x09, 0x09, 0x09, 0x06},// P
        {0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E},// Q
        {0x00, 0x7F, 0x09, 0x19, 0x29, 0x46},// R
        {0x00, 0x46, 0x49, 0x49, 0x49, 0x31},// S
        {0x00, 0x01, 0x01, 0x7F, 0x01, 0x01},// T
        {0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F},// U
        {0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F},// V
        {0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F},// W
        {0x00, 0x63, 0x14, 0x08, 0x14, 0x63},// X
        {0x00, 0x07, 0x08, 0x70, 0x08, 0x07},// Y
        {0x00, 0x61, 0x51, 0x49, 0x45, 0x43},// Z
        {0x00, 0x00, 0x7F, 0x41, 0x41, 0x00},// [
        {0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55},// 55
        {0x00, 0x00, 0x41, 0x41, 0x7F, 0x00},// ]
        {0x00, 0x04, 0x02, 0x01, 0x02, 0x04},// ^
        {0x00, 0x40, 0x40, 0x40, 0x40, 0x40},// _
        {0x00, 0x00, 0x01, 0x02, 0x04, 0x00},// '
        {0x00, 0x20, 0x54, 0x54, 0x54, 0x78},// a
        {0x00, 0x7F, 0x48, 0x44, 0x44, 0x38},// b
        {0x00, 0x38, 0x44, 0x44, 0x44, 0x20},// c
        {0x00, 0x38, 0x44, 0x44, 0x48, 0x7F},// d
        {0x00, 0x38, 0x54, 0x54, 0x54, 0x18},// e
        {0x00, 0x08, 0x7E, 0x09, 0x01, 0x02},// f
        {0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C},// g
        {0x00, 0x7F, 0x08, 0x04, 0x04, 0x78},// h
        {0x00, 0x00, 0x44, 0x7D, 0x40, 0x00},// i
        {0x00, 0x40, 0x80, 0x84, 0x7D, 0x00},// j
        {0x00, 0x7F, 0x10, 0x28, 0x44, 0x00},// k
        {0x00, 0x00, 0x41, 0x7F, 0x40, 0x00},// l
        {0x00, 0x7C, 0x04, 0x18, 0x04, 0x78},// m
        {0x00, 0x7C, 0x08, 0x04, 0x04, 0x78},// n
        {0x00, 0x38, 0x44, 0x44, 0x44, 0x38},// o
        {0x00, 0xFC, 0x24, 0x24, 0x24, 0x18},// p
        {0x00, 0x18, 0x24, 0x24, 0x18, 0xFC},// q
        {0x00, 0x7C, 0x08, 0x04, 0x04, 0x08},// r
        {0x00, 0x48, 0x54, 0x54, 0x54, 0x20},// s
        {0x00, 0x04, 0x3F, 0x44, 0x40, 0x20},// t
        {0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C},// u
        {0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C},// v
        {0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C},// w
        {0x00, 0x44, 0x28, 0x10, 0x28, 0x44},// x
        {0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C},// y
        {0x00, 0x44, 0x64, 0x54, 0x4C, 0x44},// z
        {0x14, 0x14, 0x14, 0x14, 0x14, 0x14},// horiz lines
};

/************************************ ASCII font size 8x16 ************************************/
static const uint8_t F8X16[]=
{
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//  0
        0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//! 1
        0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" 2
        0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//# 3
        0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$ 4
        0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//% 5
        0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//& 6
        0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//' 7
        0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,//( 8
        0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,//) 9
        0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,//* 10
        0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+ 11
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//, 12
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//- 13
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//. 14
        0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/// 15
        0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0 16
        0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1 17
        0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2 18
        0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3 19
        0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4 20
        0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5 21
        0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6 22
        0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7 23
        0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8 24
        0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//9 25
        0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//: 26
        0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,//; 27
        0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,//< 28
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//= 29
        0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,//> 30
        0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//? 31
        0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,//@ 32
        0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A 33
        0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B 34
        0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C 35
        0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D 36
        0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E 37
        0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F 38
        0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G 39
        0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H 40
        0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I 41
        0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J 42
        0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K 43
        0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L 44
        0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M 45
        0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N 46
        0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O 47
        0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P 48
        0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q 49
        0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R 50
        0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S 51
        0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T 52
        0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U 53
        0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V 54
        0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W 55
        0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X 56
        0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y 57
        0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z 58
        0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,//[ 59
        0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,//\ 60
        0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,//] 61
        0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ 62
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_ 63
        0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//` 64
        0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a 65
        0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b 66
        0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c 67
        0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d 68
        0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e 69
        0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//f 70
        0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,//g 71
        0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//h 72
        0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//i 73
        0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,//j 74
        0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k 75
        0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//l 76
        0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m 77
        0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//n 78
        0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//o 79
        0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,//p 80
        0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,//q 81
        0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,//r 82
        0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,//s 83
        0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,//t 84
        0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//u 85
        0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v 86
        0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w 87
        0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x 88
        0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,//y 89
        0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,//z 90
        0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{ 91
        0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//| 92
        0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//} 93
    0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~ 94
};


#endif

使用特权

评论回复
9
梅花香自123|  楼主 | 2023-3-29 12:49 | 只看该作者
下面是调用了OLED_ShowChar()函数来实现的。
/* show a character on OLED as $Char_Size */
void OLED_ShowChar(uint8_t x, uint8_t y, uint8_t chr, uint8_t char_Size)
{  
        uint8_t c=0,i=0;       
       
        c=chr-' ';  // get offset value

        if( x>X_WIDTH-1 )
        {
                x=0;
                y=y+2;
        }
       
        if(char_Size ==16)
        {
                OLED_Set_Pos(x,y);       
               
                for(i=0; i<8; i++)
                        OLED_WR_Byte(F8X16[c*16+i],OLED_DATA);
               
                OLED_Set_Pos(x,y+1);
               
                for(i=0;i<8;i++)
                        OLED_WR_Byte(F8X16[c*16+i+8],OLED_DATA);
        }
        else
        {       
                OLED_Set_Pos(x,y);
                for(i=0;i<6;i++)
                        OLED_WR_Byte(F6x8[c][i],OLED_DATA);
        }
}

使用特权

评论回复
10
梅花香自123|  楼主 | 2023-3-29 12:50 | 只看该作者

使用特权

评论回复
11
梅花香自123|  楼主 | 2023-3-29 12:51 | 只看该作者
3- 图片显示
(1)ps中处理图片
首先我们在ps中新建一个12832像素的框。因为我们的开发板上的OLED就是12832位的。不然显示不完全。

使用特权

评论回复
12
梅花香自123|  楼主 | 2023-3-29 12:52 | 只看该作者
3- 图片显示
(1)ps中处理图片
首先我们在ps中新建一个12832像素的框。因为我们的开发板上的OLED就是12832位的。不然显示不完全。


使用特权

评论回复
13
梅花香自123|  楼主 | 2023-3-29 12:55 | 只看该作者
我们需要将图片设置一下:
图像-模式-灰度-确定
图像-模式-位图-方法选择50%阈值-确定

使用特权

评论回复
14
梅花香自123|  楼主 | 2023-3-29 12:56 | 只看该作者
然后保存为BMP格式的图片。

使用特权

评论回复
15
梅花香自123|  楼主 | 2023-3-29 12:56 | 只看该作者
windows格式,深度为1。

(2)PCtoLCD2002处理生成字模
选择文件,打开刚才保存的bmp格式的位图。

使用特权

评论回复
16
梅花香自123|  楼主 | 2023-3-29 12:57 | 只看该作者
将生成的代码改为c51格式的。

使用特权

评论回复
17
梅花香自123|  楼主 | 2023-3-29 12:58 | 只看该作者
将生成的代码改为c51格式的。

使用特权

评论回复
18
梅花香自123|  楼主 | 2023-3-29 12:59 | 只看该作者
点击生成字模

使用特权

评论回复
19
梅花香自123|  楼主 | 2023-3-29 12:59 | 只看该作者
3)添加代码
将刚才生成的代码放入二维数组中。
#ifndef __FONT_BMP_H
#define __FONT_BMP_H

#include <stdint.h>

/* HELLO_BMP -128x32.bmp */

static uint8_t HELLO_BMP[][16] =
{

                {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x80,0xC0},
                {0xE0,0xE0,0xF0,0xF0,0xF0,0xE0,0x60,0x60,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,0x20,0x80,0xC0,0xE0,0xF8,0xE0,0xC0,0x00,0x00,0xC0,0xE0,0xE0,0xFE,0xFE,0x3C},
                {0xC0,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
                {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x18,0xF8,0xF0,0xE0,0xC0,0xC0,0x80},
                {0x00,0x00,0x80,0xC0,0xE0,0xE0,0xF0,0xFE,0xFF,0xFF,0xF8,0x38,0x38,0x10,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,0x80,0x80,0xC0,0x80,0x81,0x81},
                {0x01,0x01,0x0F,0xFF,0xFF,0xC7,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
                {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x08},
                {0x18,0xF0,0xF9,0xFD,0x7F,0x43,0x43,0xE3,0xF3,0x33,0x1B,0x13,0xB9,0xF9,0x06,0x0F},
                {0x0B,0x81,0x81,0x81,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
                {0x00,0x00,0x00,0x00,0x0C,0x1C,0x00,0x60,0xC1,0x01,0x00,0x00,0x00,0x01,0x01,0x00},
                {0x00,0x00,0x10,0x38,0xB9,0xFF,0xFF,0xEF,0x6F,0xCF,0x87,0xC0,0xC0,0xE0,0x40,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,0x0F,0x0F,0x03,0x23,0x07,0xCF},
                {0xC7,0xC7,0xF7,0xFF,0xFF,0x1F,0x0F,0x07,0x83,0x80,0x80,0x00,0x00,0x00,0x00,0x00},
                {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x60,0x70,0x38,0x3C},
                {0x1F,0x0F,0x03,0x01,0x7E,0xFE,0xFC,0xFC,0xFE,0xDE,0xCE,0xE7,0xF7,0x77,0x26,0x00},
                {0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x00,0x00,0x00},
                {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x7F,0x1E,0x04,0x7C,0x1C,0xCE,0xCE,0xC6},
                {0x86,0xE6,0xFF,0xFF,0x7F,0x43,0x61,0x28,0x18,0x70,0xFE,0x3E,0x38,0x3C,0x3C,0x38},
                {0x30,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
                {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x0E,0x3E,0x3E,0x3E,0x1F,0x1F},
                {0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x0F,0x0F,0x0F,0x07,0x04,0x08,0x08,0x00},
                {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40},
                {0xC0,0x80,0xC0,0xE0,0x78,0x7F,0x63,0x61,0x60,0x30,0x39,0x1D,0x1F,0x37,0x37,0x30},
                {0x00,0x20,0x40,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
                {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x0E,0xF0,0xC0,0xC0,0x3C,0x7F,0x07,0x21},
                {0x1F,0x0F,0x03,0x16,0x1C,0x30,0x6C,0xCE,0x8C,0xCC,0xEF,0xDF,0x0C,0x00,0x00,0x00},
                {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
                /*"C:\Users\Administrator\Desktop\wagndengtao.bmp",0*/
                /* (128 X 32 )*/
};

#endif

使用特权

评论回复
20
梅花香自123|  楼主 | 2023-3-29 13:00 | 只看该作者
然后调用OLED_DrawBMP()函数通过GPIO模拟IIC发送过去。
void OLED_DrawBMP(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t *BMP)
{        
        uint32_t             j=0;
        uint8_t                 x,y;
  
        if( y1%8==0 )
                y = y1/8;      
        else
                y = y1/8+1;
       
        for(y=y0; y<y1; y++)
        {
                OLED_Set_Pos(x0, y);
                for(x=x0;x<x1;x++)
                {   
                        OLED_WR_Byte(BMP[j++],OLED_DATA);         
                }
        }
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

1108

帖子

0

粉丝