[其他ST产品] stm32-OLED显示屏学习

[复制链接]
1452|27
 楼主| 梅花香自123 发表于 2023-3-29 12:37 | 显示全部楼层 |阅读模式
拖了很久的OLED还没实现的,最近实现了,分享一下怎么实现的。图片和文字都试一下。
开发板上两个管脚连接到OLED上面的。PB8和PB9管脚。

677006423c092e50c2.png
 楼主| 梅花香自123 发表于 2023-3-29 12:38 | 显示全部楼层
1- 文字显示
(1)PCtoLCD2002处理生成字模
记得换切换模模式为字符模式。然后点击生成字模。
526646423c0d82b1c5.png
 楼主| 梅花香自123 发表于 2023-3-29 12:39 | 显示全部楼层
记得在设置中将格式设置为C51格式的。
712966423c10f5e89d.png
 楼主| 梅花香自123 发表于 2023-3-29 12:40 | 显示全部楼层
复制代码带二维数组中。
  1. #ifndef __FONT_HZK_H
  2. #define __FONT_HZK_H           

  3. #include <stdint.h>

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

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

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

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

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

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

  23.                 {0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  24.                 {0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",5*/
  25.                 /* (16 X 16 , 宋体 )*/
  26. };

  27. #endif

 楼主| 梅花香自123 发表于 2023-3-29 12:44 | 显示全部楼层
复制代码带二维数组中。

  1. #ifndef __FONT_HZK_H
  2. #define __FONT_HZK_H           

  3. #include <stdint.h>

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

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

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

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

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

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

  23.                 {0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  24.                 {0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",5*/
  25.                 /* (16 X 16 , 宋体 )*/
  26. };

  27. #endif

 楼主| 梅花香自123 发表于 2023-3-29 12:45 | 显示全部楼层
这里调用的是OLED_ShowChinese()函数。
  1. /* Show Chinese on OLED */
  2. void OLED_ShowChinese(uint8_t (*Hzk)[32], uint8_t x, uint8_t y, uint8_t no)
  3. {                                  
  4.         uint8_t                 t,adder=0;
  5.        
  6.         OLED_Set_Pos(x, y);       
  7.         for(t=0;t<16;t++)
  8.         {
  9.                 OLED_WR_Byte(Hzk[2*no][t],OLED_DATA);
  10.                 adder+=1;
  11.         }       
  12.        
  13.         OLED_Set_Pos(x,y+1);       
  14.         for(t=0;t<16;t++)
  15.         {       
  16.                 OLED_WR_Byte(Hzk[2*no+1][t],OLED_DATA);
  17.                 adder+=1;
  18.         }                                       
  19. }
 楼主| 梅花香自123 发表于 2023-3-29 12:45 | 显示全部楼层
 楼主| 梅花香自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

 楼主| 梅花香自123 发表于 2023-3-29 12:49 | 显示全部楼层
下面是调用了OLED_ShowChar()函数来实现的。
  1. /* show a character on OLED as $Char_Size */
  2. void OLED_ShowChar(uint8_t x, uint8_t y, uint8_t chr, uint8_t char_Size)
  3. {  
  4.         uint8_t c=0,i=0;       
  5.        
  6.         c=chr-' ';  // get offset value

  7.         if( x>X_WIDTH-1 )
  8.         {
  9.                 x=0;
  10.                 y=y+2;
  11.         }
  12.        
  13.         if(char_Size ==16)
  14.         {
  15.                 OLED_Set_Pos(x,y);       
  16.                
  17.                 for(i=0; i<8; i++)
  18.                         OLED_WR_Byte(F8X16[c*16+i],OLED_DATA);
  19.                
  20.                 OLED_Set_Pos(x,y+1);
  21.                
  22.                 for(i=0;i<8;i++)
  23.                         OLED_WR_Byte(F8X16[c*16+i+8],OLED_DATA);
  24.         }
  25.         else
  26.         {       
  27.                 OLED_Set_Pos(x,y);
  28.                 for(i=0;i<6;i++)
  29.                         OLED_WR_Byte(F6x8[c][i],OLED_DATA);
  30.         }
  31. }
 楼主| 梅花香自123 发表于 2023-3-29 12:50 | 显示全部楼层
 楼主| 梅花香自123 发表于 2023-3-29 12:51 | 显示全部楼层
3- 图片显示
(1)ps中处理图片
首先我们在ps中新建一个12832像素的框。因为我们的开发板上的OLED就是12832位的。不然显示不完全。

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


 楼主| 梅花香自123 发表于 2023-3-29 12:55 | 显示全部楼层
我们需要将图片设置一下:
图像-模式-灰度-确定
图像-模式-位图-方法选择50%阈值-确定

499706423c4d1a69ea.png
 楼主| 梅花香自123 发表于 2023-3-29 12:56 | 显示全部楼层
然后保存为BMP格式的图片。

657906423c4dfbdb0a.png
 楼主| 梅花香自123 发表于 2023-3-29 12:56 | 显示全部楼层
windows格式,深度为1。

(2)PCtoLCD2002处理生成字模
选择文件,打开刚才保存的bmp格式的位图。
107986423c4fc0134a.png
 楼主| 梅花香自123 发表于 2023-3-29 12:57 | 显示全部楼层
将生成的代码改为c51格式的。
396796423c52cb7a6a.png
 楼主| 梅花香自123 发表于 2023-3-29 12:58 | 显示全部楼层
将生成的代码改为c51格式的。
60146423c5868f8ed.png
 楼主| 梅花香自123 发表于 2023-3-29 12:59 | 显示全部楼层
点击生成字模 106436423c59b2b5b0.png
 楼主| 梅花香自123 发表于 2023-3-29 12:59 | 显示全部楼层
3)添加代码
将刚才生成的代码放入二维数组中。
  1. #ifndef __FONT_BMP_H
  2. #define __FONT_BMP_H

  3. #include <stdint.h>

  4. /* HELLO_BMP -128x32.bmp */

  5. static uint8_t HELLO_BMP[][16] =
  6. {

  7.                 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x80,0xC0},
  8.                 {0xE0,0xE0,0xF0,0xF0,0xF0,0xE0,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  9.                 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  10.                 {0x00,0x20,0x80,0xC0,0xE0,0xF8,0xE0,0xC0,0x00,0x00,0xC0,0xE0,0xE0,0xFE,0xFE,0x3C},
  11.                 {0xC0,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  12.                 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x18,0xF8,0xF0,0xE0,0xC0,0xC0,0x80},
  13.                 {0x00,0x00,0x80,0xC0,0xE0,0xE0,0xF0,0xFE,0xFF,0xFF,0xF8,0x38,0x38,0x10,0x00,0x00},
  14.                 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  15.                 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xC0,0x80,0x81,0x81},
  16.                 {0x01,0x01,0x0F,0xFF,0xFF,0xC7,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  17.                 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x08},
  18.                 {0x18,0xF0,0xF9,0xFD,0x7F,0x43,0x43,0xE3,0xF3,0x33,0x1B,0x13,0xB9,0xF9,0x06,0x0F},
  19.                 {0x0B,0x81,0x81,0x81,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  20.                 {0x00,0x00,0x00,0x00,0x0C,0x1C,0x00,0x60,0xC1,0x01,0x00,0x00,0x00,0x01,0x01,0x00},
  21.                 {0x00,0x00,0x10,0x38,0xB9,0xFF,0xFF,0xEF,0x6F,0xCF,0x87,0xC0,0xC0,0xE0,0x40,0x00},
  22.                 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  23.                 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x03,0x23,0x07,0xCF},
  24.                 {0xC7,0xC7,0xF7,0xFF,0xFF,0x1F,0x0F,0x07,0x83,0x80,0x80,0x00,0x00,0x00,0x00,0x00},
  25.                 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x60,0x70,0x38,0x3C},
  26.                 {0x1F,0x0F,0x03,0x01,0x7E,0xFE,0xFC,0xFC,0xFE,0xDE,0xCE,0xE7,0xF7,0x77,0x26,0x00},
  27.                 {0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x00,0x00,0x00},
  28.                 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x7F,0x1E,0x04,0x7C,0x1C,0xCE,0xCE,0xC6},
  29.                 {0x86,0xE6,0xFF,0xFF,0x7F,0x43,0x61,0x28,0x18,0x70,0xFE,0x3E,0x38,0x3C,0x3C,0x38},
  30.                 {0x30,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  31.                 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x0E,0x3E,0x3E,0x3E,0x1F,0x1F},
  32.                 {0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x0F,0x0F,0x0F,0x07,0x04,0x08,0x08,0x00},
  33.                 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40},
  34.                 {0xC0,0x80,0xC0,0xE0,0x78,0x7F,0x63,0x61,0x60,0x30,0x39,0x1D,0x1F,0x37,0x37,0x30},
  35.                 {0x00,0x20,0x40,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  36.                 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x0E,0xF0,0xC0,0xC0,0x3C,0x7F,0x07,0x21},
  37.                 {0x1F,0x0F,0x03,0x16,0x1C,0x30,0x6C,0xCE,0x8C,0xCC,0xEF,0xDF,0x0C,0x00,0x00,0x00},
  38.                 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  39.                 /*"C:\Users\Administrator\Desktop\wagndengtao.bmp",0*/
  40.                 /* (128 X 32 )*/
  41. };

  42. #endif

 楼主| 梅花香自123 发表于 2023-3-29 13:00 | 显示全部楼层
然后调用OLED_DrawBMP()函数通过GPIO模拟IIC发送过去。
  1. void OLED_DrawBMP(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t *BMP)
  2. {        
  3.         uint32_t             j=0;
  4.         uint8_t                 x,y;
  5.   
  6.         if( y1%8==0 )
  7.                 y = y1/8;      
  8.         else
  9.                 y = y1/8+1;
  10.        
  11.         for(y=y0; y<y1; y++)
  12.         {
  13.                 OLED_Set_Pos(x0, y);
  14.                 for(x=x0;x<x1;x++)
  15.                 {   
  16.                         OLED_WR_Byte(BMP[j++],OLED_DATA);         
  17.                 }
  18.         }
  19. }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

102

主题

1216

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部