STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片

这篇具有很好参考价值的文章主要介绍了STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今日学习0.96寸单色OLED显示屏的自由取模显示:

宋体汉字比较复杂,常用字符可以直接复制存下来,毕竟只有那么几十个字母字符,但汉字实在太多了,基本不会全部放在单片机里存着,一般用到多少个字就取几个字的模,因此汉字放在这里与自由取模一起讲。

文章提供源码、原理解释、测试工程下载,测试效果图展示。

阅读此文需要确定自己已经理解了OLED基本显示原理,并且会用OLED显示一个字符,不懂基础的可以看我之前的文章:

STM32 F103C8T6学习笔记8:0.96寸单色OLED显示屏显示字符_NULL指向我的博客-CSDN博客

目录

取模软件的使用:

汉字显示函数的编写:

字库取模与函数:

 显示程序测试:

 显示程序代码:

显示效果图:

 整体测试工程下载:

图像显示函数的编写:

图像的取模:

 图像打印函数的编写:

 程序设计:

 显示效果:

 测试工程下载:


取模软件的使用:

 OLED显示屏 以及 其他许多显示屏 的灵活使用,离不开取模软件,我们也需要学习一下这个取模软件的使用,十分简单,没有软件的可以下载我的测试工程,测试工程里面带有取模软件~~

 STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片,STM32 F103 C8T6笔记,硬件模块与传感器的驱动,stm32,学习,笔记

打开取模软件,首先与我一样进行设置:

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片,STM32 F103 C8T6笔记,硬件模块与传感器的驱动,stm32,学习,笔记

 现在要对汉字取模,首先新建图像,一般汉字选择16*16点阵区域:

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片,STM32 F103 C8T6笔记,硬件模块与传感器的驱动,stm32,学习,笔记

 这样模板上就有一块16*16的取模区域了:STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片,STM32 F103 C8T6笔记,硬件模块与传感器的驱动,stm32,学习,笔记

 但它太小了,不利于绘制,因此可以放大看(多按几下放大格点):

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片,STM32 F103 C8T6笔记,硬件模块与传感器的驱动,stm32,学习,笔记

然后点文字输入区,鼠标在输入区空白处右键,选择字体:

一般16*16像素大小的字体要选择12:

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片,STM32 F103 C8T6笔记,硬件模块与传感器的驱动,stm32,学习,笔记

 此处输入了“我”,然后Ctrl+Enter直接生成:

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片,STM32 F103 C8T6笔记,硬件模块与传感器的驱动,stm32,学习,笔记

 同时,使用鼠标点击任意黑白色块可以自定义调整这个图像的细节,当然,字模方面系统直接生成的已经比较好了,无需调整,这个调整也是我提一嘴的~~:

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片,STM32 F103 C8T6笔记,硬件模块与传感器的驱动,stm32,学习,笔记

 最后选择取模方式,C51,这个16*16的字模就在底部生成了,可以直接复制了用了~~:

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片,STM32 F103 C8T6笔记,硬件模块与传感器的驱动,stm32,学习,笔记

 最后提一嘴,一般用二维数组操作、保存、使用字模~~

汉字显示函数的编写:

字库取模与函数:

char Hzk[][32]={
{0x10,0x10,0x10,0xFF,0x10,0x90,0x00,0x3F,0x48,0x48,0x44,0x44,0x44,0x42,0x70,0x00},
{0x04,0x44,0x82,0x7F,0x01,0x00,0x00,0xFF,0x49,0x49,0x49,0x49,0x49,0xFF,0x00,0x00},/*"指",0*/

{0x00,0xF8,0x08,0x08,0x0C,0xCA,0x49,0x48,0x48,0xC8,0x08,0x08,0x08,0xF8,0x00,0x00},
{0x00,0xFF,0x00,0x00,0x00,0x1F,0x08,0x08,0x08,0x1F,0x00,0x40,0x80,0x7F,0x00,0x00},/*"向",1*/

{0x20,0x24,0x24,0x24,0xFE,0x23,0x22,0x20,0x20,0xFF,0x20,0x22,0x2C,0xA0,0x20,0x00},
{0x00,0x08,0x48,0x84,0x7F,0x02,0x41,0x40,0x20,0x13,0x0C,0x14,0x22,0x41,0xF8,0x00},/*"我",2*/

};

//显示汉字
void OLED_ShowCHinese(u8 x,u8 y,u8 no)
{      			    
	u8 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;
      }					
}

这要结合字库数组来看,一个16*16像素的字共有32个字符编码,一行16个,在二维数组分俩行存一个字,因此要连传2行二维数组才能将一个汉字的字模传给oled.

 显示程序测试:

 这里我已经取好了需要显示的字模,然后准备在OLED上显示 “NULL指向我”

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片,STM32 F103 C8T6笔记,硬件模块与传感器的驱动,stm32,学习,笔记

 显示程序代码:

#include "main.h"

int main(void)
{	
	init_ALL();     //初始化所有函数
  while(1)
	{
		OLED_ShowChar(0,0,'N',16);
		OLED_ShowChar(12,0,'U',16);		
		OLED_ShowChar(24,0,'L',16);		
		OLED_ShowChar(36,0,'L',16);		
		
   OLED_ShowCHinese(48,0,0);
   OLED_ShowCHinese(64,0,1);		
   OLED_ShowCHinese(80,0,2);
	}
}


//初始化所有函数:
void init_ALL(void)
{
	SysTick_Init(72);         //初始化滴答计时器
//	Timer2_Init();						//初始化定时器2
	i2c_GPIO_Config();	      //IIC初始化	
	OLED_Init();              //初始化OLED屏幕
	OLED_Clear();             //清空屏幕数据
}

显示效果图:

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片,STM32 F103 C8T6笔记,硬件模块与传感器的驱动,stm32,学习,笔记

 整体测试工程下载:

https://download.csdn.net/download/qq_64257614/88232357?spm=1001.2014.3001.5503文章来源地址https://www.toymoban.com/news/detail-665330.html

图像显示函数的编写:

图像的取模:

现在大部分图像的清晰度像素很高,因此需要一些软件处理一下,降低像素才能取模,这里我使用Photoshop将其像素降为 68*64(至少要比OLED的128*64像素小):

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片,STM32 F103 C8T6笔记,硬件模块与传感器的驱动,stm32,学习,笔记

 清晰度下降了,但能凑合着看:

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片,STM32 F103 C8T6笔记,硬件模块与传感器的驱动,stm32,学习,笔记

 然后调整为二阶色:

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片,STM32 F103 C8T6笔记,硬件模块与传感器的驱动,stm32,学习,笔记

 保存时后缀一定要选.bmp    否则直接改后缀保存位式不会变,取模软件使用时 会直接报错!:

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片,STM32 F103 C8T6笔记,硬件模块与传感器的驱动,stm32,学习,笔记

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片,STM32 F103 C8T6笔记,硬件模块与传感器的驱动,stm32,学习,笔记

 取模软件打开刚才修改好的图:

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片,STM32 F103 C8T6笔记,硬件模块与传感器的驱动,stm32,学习,笔记

发现不太理想,尝试人工补足一波 再 生成字模::

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片,STM32 F103 C8T6笔记,硬件模块与传感器的驱动,stm32,学习,笔记

 像这样存在一纬数组就行:

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片,STM32 F103 C8T6笔记,硬件模块与传感器的驱动,stm32,学习,笔记

 图像打印函数的编写:

这个图像是68*64的,因此在显示时,Y坐标只能是0开始~

这是一个一个点位传过去显示:

/***********功能描述:显示显示BMP图片128×64起始点坐标(x,y),x的范围0~127,y为页的范围0~7*****************/
//x0 传入图像显示起始点x坐标
//y0 传入图像显示起始点y坐标
//x1 传入图像x横向像素个数 + x0
//y1 传入图像y纵向像素个数  占用的页数 
//BMP[] 传入图像数组        
void OLED_DrawBMP(unsigned char x0, unsigned char y0,unsigned char x1, unsigned char y1,unsigned char BMP[])
{ 	
 unsigned int j=0;
 unsigned char 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);	
	    }
	}
}

 程序设计:

目标:OLED上显示该图片,且从左往右逐渐平移,起始点从(0,0)平移到(60,0)

#include "main.h"

uint16_t i;

int main(void)
{	
	init_ALL();     //初始化所有函数
  while(1)
	{
		
		for(i=0;i<60;i++)
		{
			delay_ms(50);
			OLED_DrawBMP(i,0,68+i,8,BMP);
			
			if(i==59)
			{
			  OLED_Clear();             //清空屏幕数据
			}
		}
	}
}


//初始化所有函数:
void init_ALL(void)
{
	SysTick_Init(72);         //初始化滴答计时器
//	Timer2_Init();						//初始化定时器2
	i2c_GPIO_Config();	      //IIC初始化	
	OLED_Init();              //初始化OLED屏幕
	OLED_Clear();             //清空屏幕数据
}


 显示效果:

 程序设计的注意点就是要在合适的时机清屏,适当的延时,正确的X,Y坐标等等~~~

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片,STM32 F103 C8T6笔记,硬件模块与传感器的驱动,stm32,学习,笔记

 测试工程下载:

https://download.csdn.net/download/qq_64257614/88232357?spm=1001.2014.3001.5503

到了这里,关于STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32 F103C8T6学习笔记4:时钟树、滴答计时器、定时器定时中断

    今日理解一下STM32F103 C8T6的时钟与时钟系统、滴答计时器、定时器计时中断的配置,文章提供原理,代码,测试工程下载。 目录 时钟树与时钟系统: 滴答计时器: 定时器计时中断: 测试结果: 测试工程下载: 该系统介绍在 STM32F10x-中文参考手册 P56页开始 微控制器的时钟系

    2024年02月13日
    浏览(13)
  • STM32 F103C8T6学习笔记8:0.96寸单色OLED显示屏显示字符

    使用STM32F103 C8T6 驱动0.96寸单色OLED显示屏: OLED显示屏的驱动,在设计开发中OLED显示屏十分常见,因此今日学习一下。一篇文章从程序到显示都讲通。 文章提供源码、原理解释、测试工程下载,测试效果图展示。   目录 OLED驱动原理—IIC通信: SSD1306 单色 0.96 OLED 显示屏特性

    2024年02月12日
    浏览(16)
  • STM32 F103C8T6学习笔记13:IIC通信—AHT10温湿度传感器模块

    今日学习一下这款AHT10 温湿度传感器模块,给我的OLED手环添加上测温湿度的功能。 文章提供源码、测试工程下载、测试效果图。 目录 AHT10温湿度传感器: 特性: 连接方式: 适用场所范围: 程序设计: 设计目标:  程序设计注意点: AHT10代码:  主函数代码: 测试效果:

    2024年02月11日
    浏览(17)
  • STM32 F103C8T6学习笔记2:GPIO的认识—GPIO的基本输入输出—点亮一个LED

    今日继续学习使用  STM32 F103C8T6开发板 点亮一个LED灯,文章提供源码,测试工程,实验效果图,希望我的归纳总结会对大家有帮助~ 目录 GPIO的认识与分类 : 引脚安排整理: 定时器的引脚例举: 串口的引脚例举:  CAN串口通信: SPI通信: IIC通信:  其余引脚: 烧录引脚:

    2024年02月11日
    浏览(18)
  • STM32 F103C8T6学习笔记5:定时器输出不同占空比PWM驱动舵机旋转角度

    现在学习使用STM32 F103C8T6的定时器PWM模式,使用PWM驱动舵机转动不同角度,文章提供源码,测试工程,测试动态效果图。 目录 基础原理:  实验目标: 测试视频结果: 测试工程下载: 这次依旧拿出之前学习过的舵机DS3115,它的基础原理不多加介绍,在往期讲MSP432的文章有所

    2024年02月13日
    浏览(17)
  • STM32 HAL库 CubeMX配置 定时器学习 F103C8T6

    开发板: STM32F103C8T6最小系统板 编译环境: Keil5 MDK 辅助软件: STM32 CubeMX 课程教学: 基于正点原子HAL库学习教程 其余配件: 江科大STM32配件包 和 示波器一台 备注:  因为这块开发板没有基本定时器,所以本文也 没有基本定时器的内容             本文1.3和2.1部分的

    2024年04月26日
    浏览(11)
  • STM32 F103C8T6学习笔记10:OLED显示屏GIF动图取模—简易时钟—动图手表的制作~

    今日尝试做一款有动图的OLED实时时钟,本文需要现学一个OLED的GIF动图取模 其余需要的知识点有不会的可以去我  STM32 F103C8T6学习笔记  系列专栏自己查阅把,闲话不多,直接开肝~~~ 文章提供源码,测试工程下载,测试效果图。 做个简易的时钟,就不把RTC实时时钟放进来学了

    2024年02月12日
    浏览(16)
  • STM32 F103C8T6学习笔记6:IIC通信__驱动MPU6050 6轴运动处理组件—一阶互补滤波

    今日主要学习一款倾角传感器——MPU6050,往后对单片机原理基础讲的会比较少,更倾向于简单粗暴地贴代码,因为经过前些日子对MSP432的学习,对原理方面也有些熟络了,除了在新接触它时会对其引脚、时钟、总线等进行仔细一些的研究之外,其余驱动方面便是照搬经验了~

    2024年02月13日
    浏览(19)
  • STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片

    今日学习0.96寸单色OLED显示屏的自由取模显示: 宋体汉字比较复杂,常用字符可以直接复制存下来,毕竟只有那么几十个字母字符,但汉字实在太多了,基本不会全部放在单片机里存着,一般用到多少个字就取几个字的模,因此汉字放在这里与自由取模一起讲。 文章提供源码

    2024年02月11日
    浏览(17)
  • STM32系列(HAL库)——F103C8T6获取DHT11温湿度串口打印

    在此特别鸣谢原文博主! (1)编程平台:Keil5 (2)CubeMX (3)XCOM(串口调试助手) (1)F1的板子,本例使用经典F103C8T6  (2)DHT11——温湿度传感器 (3)ST-link 下载器 (4)USB-TTL模块 (5)杜邦线若干 (1)芯片选择 STM32F103C8T6  (2)配置RCC、SYS、时钟树 配置RCC 配置SYS 配置时钟树 (3) 配置GPIO  (4)配置

    2023年04月08日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包