STM32HAL库 0.96寸4针OLED驱动代码

STM32HAL库 0.96寸4针OLED驱动代码

单片机:STM32F103C8T6
软件版本:STM32CubeMX 4.20.1
单片机固件包:STM32Cube_FW_F1_V1.4.0

本代码是参考网络上的部分程序代码编写,仅用于学习和交流。希望能给各位读者些许帮助。

oled.c代码:

/*************************************************
// 文件说明:      0.96寸4针OLED驱动代码
// 创 建 人:     mnWu522
// 日期:         2019-12-30
// 修 改 人:                     
// 修改日期:     20xx-xx-xx
*************************************************/
#include "oled.h"
#include "oledfont.h"
#include "tim.h"

//OLED两个引脚初始化
void OLED_GPIO_Init(void)
{ 
 GPIO_InitTypeDef  GPIO_InitStruct;  

 OLED_GPIO_CLK_ENABLE();
 GPIO_InitStruct.Pin  = OLED_SCK_PIN | OLED_SDA_PIN;
 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
 GPIO_InitStruct.Pull = GPIO_NOPULL;
 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
 HAL_GPIO_Init(GPIOx_OLED_PORT,&GPIO_InitStruct);
 
 OLED_SDA_OFF();
 OLED_SCK_ON();
}

//OLED初始化
void OLED_Init(void)
{
 uint8_t i;
 for(i=0;i<25;i++)
 {
  OLED_Send_Cmd(OLED_Init_cmd[i]);
 }
}

//
void OLED_IIC_Start(void)
{
 OLED_SDA_ON();
 Delay_us(1);
 OLED_SCK_ON();
 Delay_us(1);
 OLED_SDA_OFF();
 Delay_us(3);
 OLED_SCK_OFF();
 OLED_IIC_Write(0x78);
}
 
//
void OLED_IIC_Stop(void)
{
 OLED_SDA_OFF();
 Delay_us(1);
 OLED_SCK_ON();
 Delay_us(3);
 OLED_SDA_ON();
}

//OLED发送指令函数
void OLED_Send_Cmd(uint8_t command)
{
 OLED_IIC_Start();
 OLED_IIC_Write(0x00); 
 OLED_IIC_Write(command);
 OLED_IIC_Stop();
}

//OLED发送显示8点数据函数
void OLED_Send_Data(uint8_t data)
{
 OLED_IIC_Start();
 OLED_IIC_Write(0x40);
 OLED_IIC_Write(data);
 OLED_IIC_Stop();
}

//OLED设置列数 128列 0~127
void OLED_Set_Column(uint8_t column)
{
 OLED_Send_Cmd(0x10|(column>>4));//设置列地址高位
 OLED_Send_Cmd(0x00|(column&0x0f));//设置列地址低位
}

//OLED设置大行数 8大行 0~7 每大行由8小行组成
void OLED_Set_Page(uint8_t line)
{
 OLED_Send_Cmd(0xb0+line);
}

//OLED清屏函数 黑屏
void OLED_ALL_Clear(void)
{
 uint8_t line,column;
 for(line=0;line<8;line++)
 {  
  OLED_Set_Page(line);
  OLED_Set_Column(0);
  for(column=0;column<128;column++)
  {
   OLED_Send_Data(0x00);
  }
 }
}

//OLED清屏函数 第一大行黄色 其他7大行蓝色
void OLED_ALL_Full(void)
{
 uint8_t line,column;
 for(line=0;line<8;line++)
 { 
  OLED_Set_Page(line);
  OLED_Set_Column(0);
  for(column=0;column<128;column++)
  {
   OLED_Send_Data(0xff);
  }
 }
}

//OLED写入1Byte数据
void OLED_IIC_Write(uint8_t date)
{
 uint8_t i, temp;
 temp = date;
 for(i=0; i<8; i++)
 { 
  OLED_SCK_OFF();
  if((temp&0x80) == 0)
  {
   OLED_SDA_OFF();
  }
  else
  {
   OLED_SDA_ON();
  }
  temp = temp << 1;
  Delay_us(1);
  OLED_SCK_ON();
  Delay_us(1);
 }
 OLED_SCK_OFF();
 Delay_us(1);
 OLED_SDA_ON();
 Delay_us(1);
 OLED_SCK_ON();
 Delay_us(1);
 OLED_SCK_OFF();
 Delay_us(1);
}

//OLED显示一个8x6的ASCII码符号
void OLED_Draw_8_6_ASCII(uint8_t line,uint8_t column,int ASCII_num)
{
 int i;
 OLED_Set_Page(line);
 OLED_Set_Column(column);
 for(i=0;i<6;i++)
 {
  OLED_Send_Data(ASCII8x6[ASCII_num][i]);
 }
}

//OLED显示一个16x8的ASCII码符号
void OLED_Draw_16_8_ASCII(uint8_t line,uint8_t column,int ASCII_num)
{
 int i; 
 OLED_Set_Page(line);
 OLED_Set_Column(column);
 for(i=0;i<8;i++)
 {
  OLED_Send_Data(ASCII16x8[ASCII_num][i]);
 }
 OLED_Set_Page(line+1);
 OLED_Set_Column(column);
 for(i=8;i<16;i++)
 {
  OLED_Send_Data(ASCII16x8[ASCII_num][i]);
 }
}

//OLED显示一个16x16的汉字符号
void OLED_Draw_16_16_Hz(uint8_t line,uint8_t column,int Hz_num)
{
 int i;
 OLED_Set_Page(line);
 OLED_Set_Column(column);
 for(i=0;i<16;i++)
 {
  OLED_Send_Data(Hz16x16[Hz_num][i]);
 }
 OLED_Set_Page(line+1);
 OLED_Set_Column(column);
 for(i=16;i<32;i++)
 {
  OLED_Send_Data(Hz16x16[Hz_num][i]);
 }
}

oled.h代码:

#ifndef __OLED_H__
#define __OLED_H__

#include "stm32f1xx_hal.h"

///
#define   OLED_GPIO_CLK_ENABLE()         __HAL_RCC_GPIOB_CLK_ENABLE()

#define   GPIOx_OLED_PORT               GPIOB
#define   OLED_SCK_PIN                  GPIO_PIN_12
#define   OLED_SCK_ON()                 HAL_GPIO_WritePin(GPIOx_OLED_PORT, OLED_SCK_PIN, GPIO_PIN_SET)
#define   OLED_SCK_OFF()                HAL_GPIO_WritePin(GPIOx_OLED_PORT, OLED_SCK_PIN, GPIO_PIN_RESET)
#define   OLED_SCK_TOGGLE()             HAL_GPIO_TogglePin(GPIOx_OLED_PORT, OLED_SCK_PIN)
#define   OLED_SDA_PIN                  GPIO_PIN_13
#define   OLED_SDA_ON()                 HAL_GPIO_WritePin(GPIOx_OLED_PORT, OLED_SDA_PIN, GPIO_PIN_SET)
#define   OLED_SDA_OFF()                HAL_GPIO_WritePin(GPIOx_OLED_PORT, OLED_SDA_PIN, GPIO_PIN_RESET)
#define   OLED_SDA_TOGGLE()             HAL_GPIO_TogglePin(GPIOx_OLED_PORT, OLED_SDA_PIN)
///

void OLED_GPIO_Init(void);
void OLED_Init(void);
void OLED_IIC_Start(void);
void OLED_IIC_Stop(void);
void OLED_Send_Cmd(uint8_t);
void OLED_Send_Data(uint8_t);
void OLED_Set_Column(uint8_t);
void OLED_Set_Page(uint8_t);
void OLED_ALL_Clear(void);
void OLED_ALL_Full(void);
void OLED_IIC_Write(uint8_t);
void OLED_Draw_8_6_ASCII(uint8_t,uint8_t,int);
void OLED_Draw_16_8_ASCII(uint8_t,uint8_t,int);
void OLED_Draw_16_16_Hz(uint8_t,uint8_t,int);

#endif

oledfont.h代码:

#ifndef __OLEDFONT_H__
#define __OLEDFONT_H__
 
#include "stm32f1xx_hal.h"
 
const uint8_t OLED_Init_cmd[25]=
{
 0xAE,//关闭显示
 0xD5,//设置时钟分频因子,震荡频率
 0x80,//[3:0],分频因子;[7:4],震荡频率
 0xA8,//设置驱动路数
 0X3F,//默认0X3F(1/64)
 0xD3,//设置显示偏移
 0X00,//默认为0
 0x40,//设置显示开始行 [5:0],行数
 0x8D,//电荷泵设置
 0x14,//bit2,开启/关闭
 0x20,//设置内存地址模式
 0x02,//[1:0],00,列地址模式;01,行地址模式;10,页地址模式;默认10;
 0xA1,//段重定义设置,bit0:0,0->0;1,0->127;
 0xC8,//设置COM扫描方向;bit3:0,普通模式;1,重定义模式 COM[N-1]->COM0;N:驱动路数
 0xDA,//设置COM硬件引脚配置
 0x12,//[5:4]配置
 0x81,//对比度设置
 0xEF,//1~255;默认0X7F (亮度设置,越大越亮)
 0xD9,//设置预充电周期
 0xf1,//[3:0],PHASE 1;[7:4],PHASE 2;
 0xDB,//设置VCOMH 电压倍率
 0x30,//[6:4] 000,0.65*vcc;001,0.77*vcc;011,0.83*vcc;
 0xA4,//全局显示开启;bit0:1,开启;0,关闭;(白屏/黑屏)
 0xA6,//设置显示方式;bit0:1,反相显示;0,正常显示
 0xAF,//开启显示
};

//8*6 ASCII字符集点阵
const unsigned char ASCII8x6[92][6] =
{
 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },// sp /0
 {0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 },// !  /1
 {0x00, 0x00, 0x07, 0x00, 0x07, 0x00 },// "  /2
 {0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 },// # /3
 {0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 },// $ /4
 {0x00, 0x62, 0x64, 0x08, 0x13, 0x23 },// % /5
 {0x00, 0x36, 0x49, 0x55, 0x22, 0x50 },// & /6
 {0x00, 0x00, 0x05, 0x03, 0x00, 0x00 },// ' /7
 {0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 },// ( /8
 {0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 },// ) /9
 {0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 },// * /10
 {0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 },// + /11
 {0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 },// , /12
 {0x08, 0x08, 0x08, 0x08, 0x08, 0x08 },// - /13
 {0x00, 0x00, 0x60, 0x60, 0x00, 0x00 },// . /14
 {0x00, 0x20, 0x10, 0x08, 0x04, 0x02 },// / /15
 {0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E },// 0 /16
 {0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 },// 1 /17
 {0x00, 0x42, 0x61, 0x51, 0x49, 0x46 },// 2 /18
 {0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 },// 3 /19
 {0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 },// 4 /20
 {0x00, 0x27, 0x45, 0x45, 0x45, 0x39 },// 5 /21
 {0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 },// 6 /22
 {0x00, 0x01, 0x71, 0x09, 0x05, 0x03 },// 7 /23
 {0x00, 0x36, 0x49, 0x49, 0x49, 0x36 },// 8 /24
 {0x00, 0x06, 0x49, 0x49, 0x29, 0x1E },// 9 /25
 {0x00, 0x00, 0x36, 0x36, 0x00, 0x00 },// : /26
 {0x00, 0x00, 0x56, 0x36, 0x00, 0x00 },// ; /27
 {0x08, 0x1C, 0x2A, 0x49, 0x08, 0x08 },// < /28
 {0x14, 0x14, 0x14, 0x14, 0x14, 0x14 },// = /29
 {0x08, 0x08, 0x49, 0x2A, 0x1C, 0x08 },// > /30
 {0x00, 0x02, 0x01, 0x51, 0x09, 0x06 },// ? /31
 {0x00, 0x32, 0x49, 0x59, 0x51, 0x3E },// @ /32
 {0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C },// A /33
 {0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 },// B /34
 {0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 },// C /35
 {0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C },// D /36
 {0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 },// E /37
 {0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 },// F /38
 {0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A },// G /39
 {0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F },// H /40
 {0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 },// I /41
 {0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 },// J /42
 {0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 },// K /43
 {0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 },// L /44
 {0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F },// M /45
 {0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F },// N /46
 {0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E },// O /47 
 {0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 },// P /48
 {0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E },// Q /49
 {0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 },// R /50
 {0x00, 0x46, 0x49, 0x49, 0x49, 0x31 },// S /51
 {0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 },// T /52
 {0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F },// U /53
 {0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F },// V /54
 {0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F },// W /55
 {0x00, 0x63, 0x14, 0x08, 0x14, 0x63 },// X /56
 {0x00, 0x07, 0x08, 0x70, 0x08, 0x07 },// Y /57
 {0x00, 0x61, 0x51, 0x49, 0x45, 0x43 },// Z /58
 {0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 },// [ /59
 {0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 },// 55 /60
 {0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 },// ] /61
 {0x04, 0x02, 0xFF, 0x02, 0x04, 0x00 },// ^ /62
 {0x00, 0x20, 0x40, 0xFF, 0x40, 0x20 },// _ /63
 {0x00, 0x00, 0x01, 0x02, 0x04, 0x00 },// ' /64
 {0x00, 0x20, 0x54, 0x54, 0x54, 0x78 },// a /65
 {0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 },// b /66
 {0x00, 0x38, 0x44, 0x44, 0x44, 0x20 },// c /67
 {0x00, 0x38, 0x44, 0x44, 0x48, 0x7F },// d /68
 {0x00, 0x38, 0x54, 0x54, 0x54, 0x18 },// e /69
 {0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 },// f /70
 {0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C },// g /71
 {0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 },// h /72
 {0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 },// i /73
 {0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 },// j /74
 {0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 },// k /75
 {0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 },// l /76
 {0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 },// m /77
 {0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 },// n /78
 {0x00, 0x38, 0x44, 0x44, 0x44, 0x38 },// o /79
 {0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 },// p /80
 {0x00, 0x18, 0x24, 0x24, 0x18, 0xFC },// q /81
 {0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 },// r /82
 {0x00, 0x48, 0x54, 0x54, 0x54, 0x20 },// s /83
 {0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 },// t /84
 {0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C },// u /85
 {0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C },// v /86
 {0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C },// w /87
 {0x00, 0x44, 0x28, 0x10, 0x28, 0x44 },// x /88
 {0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C },// y /89
 {0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 },// z /90
};

//16*8 ASCII字符集点阵
const unsigned char ASCII16x8[95][16]=
{
 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//sp /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,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00},//}  /92
 {0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00},//|  /93
 {0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01}// ~  /94
};

//部分汉字
const unsigned char Hz16x16[4][32]=
{
 {0x20,0x30,0xAC,0x63,0x20,0x58,0x20,0xF8,0x4F,0x48,0x49,0xFA,0x48,0x48,0x08,0x00,
  0x22,0x67,0x22,0x12,0x12,0x12,0x00,0xFF,0x22,0x22,0x22,0x3F,0x22,0x22,0x20,0x00},//维  /0
 {0x00,0x00,0x10,0x10,0x98,0xA4,0x47,0x44,0xA4,0x54,0x0C,0x04,0x00,0x00,0x00,0x00,
  0x00,0x81,0x89,0x89,0x44,0x44,0x4A,0x31,0x21,0x11,0x09,0x05,0x03,0x00,0x00,0x00},//多  /1
 {0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x20,0x40,0x80,0x00,0x00,
  0x08,0x04,0x03,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x01,0x0E,0x00},//小  /2
 {0x80,0x82,0x82,0x82,0x82,0x82,0x82,0xE2,0xA2,0x92,0x8A,0x86,0x82,0x80,0x80,0x00,
  0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//子  /3
};
#endif

在这里插入图片描述
在这里插入图片描述

  • 7
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
STM32 HAL库下实现硬件IIC DMA控制0.96OLED屏,可以按照以下步骤进行: 1. 配置IIC接口:使用HAL库提供的I2C功能函数,初始化IIC接口并配置相关参数,例如时钟频率、地址等等。可以通过HAL_I2C_Init()函数完成此步骤。 2. 配置DMA:使用HAL库提供的DMA功能函数,初始化DMA控制器,并配置相应的通道和数据传输方向。可以通过HAL_DMA_Init()函数完成此步骤。 3. 配置OLED屏:根据OLED屏的规格和数据手册,设置正确的OLED屏地址和显示模式等参数。 4. 编写DMA传输函数:使用HAL库提供的DMA传输函数,编写发送和接收数据的函数。可以通过HAL_DMA_Transmit()和HAL_DMA_Receive()函数来实现。 5. 编写显示函数:根据OLED屏的规格和显示方式,编写显示函数。可以使用HAL库提供的IIC发送函数,将相关数据发送给OLED屏进行显示。 6. 调用相关函数:在主函数中,调用初始化函数和显示函数,完成整个过程。可以使用HAL库提供的循环发送函数,实现周期性的OLED屏数据显示。 需要注意的是,在实现过程中,需要合理配置DMA传输的通道和缓冲区大小,保证数据的正确传输。并且,应遵循相应的时序规范,确保数据传输的准确性和稳定性。 总结:以上是一种实现硬件IIC DMA控制0.96OLED屏的简要步骤。通过使用STM32 HAL库提供的相关功能函数,结合正确的配置和调用,可以实现相应的功能。具体的实现过程中,可能还需要根据具体的硬件和使用环境进行一些适当的修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值