#07——OLED显示屏
1.OLED概述
2.OLED开发需要的资源
3.移植OLED库函数
4.OLED库——常用函数
OLED初始化函数
OLED清屏函数
void OLED_Init(void); //OLED初始化函数
void OLED_Clear(void); //OLED清屏函数
显示英文字符串函数
//显示英文字符串函数
void OLED_ShowString(unsigned char x,unsigned char y,unsigned char *p);
参数1:x,起点列坐标,0~127
参数2:y,起点行坐标,0~7
参数3:*p,字符串指针
返回值:void,无。
显示中文字符函数
//显示中文字符函数
void OLED_ShowCHinese(unsigned char x,unsigned char y,unsigned char no);
参数1:x,起点列坐标,0~127
参数2:y,起点行坐标,0~7
参数3:no,待显示中文字符在数组Hzk[][32]中的位置。
返回值:void,无。
显示图片函数
//显示图片函数
void OLED_DrawBMP( unsigned char x0, unsigned char y0,unsigned char x1,unsigned char y1,unsigned char BMP[]);
参数1:x0,起点列坐标,0~127
参数2:y0,起点行坐标,0~7
参数3:x1,图片的列范围,1~128
参数4:y1,图片的行范围,1~8
参数5:BMP[],待显示图片数据的数组。
返回值:void,无。
5.字模软件使用
6.实训
1.cubemx配置
2.移植oled库
3.准备库
//用取字模软件生成开机LOGO图片数据,并拷贝到XMF_OLED_BMP.h的数组中。
const unsigned char BMP1[] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
//此处省略64×62个字节元素
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
//用取字模软件生成所需中文字符数据,保持到XMF_OLED_Font.h中的Hzk[]数组。
const unsigned char Hzk[][32]={
{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},/*"小",0*/
/* (16 X 16 , 宋体 )*/
{0x10,0x4C,0x24,0x04,0xF4,0x84,0x8D,0x56,0x44,0x24,0x14,0xC4,0x24,0x54,0x0C,0x00},
{0x00,0x41,0x5D,0x55,0x54,0x55,0x55,0x7F,0x55,0x55,0x55,0x55,0x7C,0xC0,0x00,0x00},/*"蜜",1*/
/* (16 X 16 , 宋体 )*/
{0x00,0xF8,0x08,0xFF,0x08,0xF8,0x80,0x90,0x4C,0x57,0xA4,0x54,0x4C,0x84,0x80,0x00},
{0x20,0x63,0x21,0x1F,0x11,0x39,0x10,0x10,0x15,0x15,0xFF,0x15,0x15,0x10,0x10,0x00},/*"蜂",2*/
/* (16 X 16 , 宋体 )*/
{0x10,0x08,0x44,0x47,0x4C,0x54,0x44,0xD4,0x28,0x27,0x24,0x2C,0x34,0x04,0x04,0x00},
{0x00,0x10,0x12,0x12,0x12,0x12,0x12,0x7F,0x89,0x89,0x89,0x89,0x89,0x88,0xF0,0x00},/*"笔",3*/
/* (16 X 16 , 宋体 )*/
{0x40,0x40,0x42,0xCC,0x00,0x00,0x00,0x84,0x84,0x84,0x84,0x84,0xFC,0x00,0x00,0x00},
{0x00,0x00,0x00,0x7F,0x20,0x10,0x00,0x3F,0x40,0x40,0x40,0x40,0x41,0x40,0x70,0x00},/*"记",4*/
/* (16 X 16 , 宋体 )*/
{0x00,0xFE,0x02,0x22,0x42,0x82,0x72,0x02,0x22,0x42,0x82,0x72,0x02,0xFE,0x00,0x00},
{0x00,0xFF,0x10,0x08,0x06,0x01,0x0E,0x10,0x08,0x06,0x01,0x4E,0x80,0x7F,0x00,0x00},/*"网",5*/
/* (16 X 16 , 宋体 )*/
};
4.编程
extern unsigned char BMP1[]; 声明变量
extern unsigned char BMP1[];
void OLED_display_pic()
{
OLED_Clear();
OLED_DrawBMP(0,0,128,8,BMP1);
}
void OLED_display_info()
{
OLED_Clear();
OLED_ShowString(6,0,(uint8_t *)"www.xmf393.com");
OLED_ShowCHinese(10,3,0); //小
OLED_ShowCHinese(28,3,1); //蜜
OLED_ShowCHinese(46,3,2); //蜂
OLED_ShowCHinese(64,3,3); //笔
OLED_ShowCHinese(82,3,4); //记
OLED_ShowCHinese(100,3,5); //网
OLED_ShowString(24,6,(uint8_t *)"2020-02-18");
}
在mian()函数中添加下面的代码:
//在mian()函数中添加下面的代码:
/* USER CODE BEGIN 2 */
OLED_Init(); //OLED初始化
OLED_display_pic(); //显示图片
HAL_Delay(500); //延时0.5秒
OLED_display_info(); //显示信息
/* USER CODE END 2 */
7.多位数字显示
tem_char[1]=tem/10+'0'; //+‘0‘变为字符型--十位
tem_char[0]=tem%10+'0'; //-’0‘变为num--个位
OLED_ShowChar(56,3,tem_char[1]);
OLED_ShowChar(66,3,tem_char[0]);
注:
这是我的学习笔记。
来自B站视频(av号:av87017878)
这个UP的原博客为:https://www.xmf393.com/2020/02/10/20200210/