[STM32-HAL库]0.96寸OLED显示屏-模拟IIC-STM32CUBEMX开发-HAL库开发系列-主控STM32F103C8T6

目录

一、前言

二、详细步骤

        1.配置STM32CUBEMX

        2.导入OLED库

        3.程序设计

        3.1 初始化OLED显示屏

        3.2 显示字符串

        3.3 显示汉字

三、汉字取模

四、总结


一、前言

        OLED显示屏是一种十分常见的显示模块,通过用它作为采集到的传感器数据的展示模块。本文通过STM32CUBEMX配置相关接口,通过软件模拟IIC的方式,与OLED显示屏进行通信,相关程序已经测试可用。

二、详细步骤

        1.配置STM32CUBEMX

        首先,完成基础的STM32CUBEMX工程的配置,配置时钟树和工程路径。

        随后,我们任意选择两个引脚,配置为输出模式,详细设置保持默认即可。

        随后,设置别名分别为OLED_SCL,OLED_SDA,同时这也与OLED模块的引脚对应。

        2.导入OLED库

        解压并打开oled库文件,包含两个.h文件和一个.c文件。

        导入库方法:Keil5导入库文件方法

        偶尔我会选择一些偷懒的方法,比如放到根目录下。打开STM32CUBEMX生成的工程目录,打开Core文件夹。

        将库中的三个文件复制到Core下,随后将.c文件放到Src中,再将.h文件放到Inc文件夹下。

        回到Keil将.c文件添加进工程,这种方法的好处是不用再添加.h的路径了,但是这不规范。标准开发的话还是要分开比较好。

        3.程序设计

        在oled.h文件中,声明的函数如下(开发时要在main.c中导入头文件哈)

void OLED_ClearPoint(uint8_t x,uint8_t y);
void OLED_ColorTurn(uint8_t i);
void OLED_DisplayTurn(uint8_t i);
void I2C_Start(void);
void I2C_Stop(void);
void I2C_WaitAck(void);
void Send_Byte(uint8_t dat);
void OLED_WR_Byte(uint8_t dat,uint8_t mode);
void OLED_DisPlay_On(void);
void OLED_DisPlay_Off(void);
void OLED_Refresh(void);
void OLED_Clear(void);
void OLED_DrawPoint(uint8_t x,uint8_t y);
void OLED_DrawLine(uint8_t x1,uint8_t y1,uint8_t x2,uint8_t y2);
void OLED_DrawCircle(uint8_t x,uint8_t y,uint8_t r);
void OLED_ShowChar(uint8_t x,uint8_t y,uint8_t chr,uint8_t size1);
void OLED_ShowString(uint8_t x,uint8_t y,uint8_t *chr,uint8_t size1);
void OLED_ShowNum(uint8_t x,uint8_t y,uint32_t num,uint8_t len,uint8_t size1);
void OLED_ShowChinese(uint8_t x,uint8_t y,uint8_t num,uint8_t size1);
void OLED_ScrollDisplay(uint8_t num,uint8_t space);
void OLED_WR_BP(uint8_t x,uint8_t y);
void OLED_ShowPicture(uint8_t x0,uint8_t y0,uint8_t x1,uint8_t y1,uint8_t BMP[]);
void OLED_Init(void);

        3.1 初始化OLED显示屏

        使用前需要先初始化OLED显示屏。

OLED_Init();
OLED_DisPlay_On();

        3.2 显示字符串

        前两个参数代表x,y坐标(x取值0~127 y取值0~63),最后一个参数16是字号大小,需要显示数据可以用sprintf先把数据放到数组里再显示。

OLED_ShowString(0,0,(uint8_t *)"XiXiCaiNiao",16);

        3.3 显示汉字

        前两个参数代表x,y坐标(x取值0~127 y取值0~63),最后一个参数16是字号大小。第三个参数代表汉字下标,汉字模数据在oledfont.h中声明。

OLED_ShowChinese(0,0,0,16);

三、汉字取模

        此处十分有必要介绍一下汉字取模的相关参数,我会把软件放这里供大家下载。并把相关参数信息简要的写在oledfont.h文件的汉字数组中。便于大家实时查阅。

        首先打开PCtoLCD2002,随后按照下图设置(阴码-列行式-逆向(去掉前缀 后缀保留,))

        此时生成的字模就是正确的,复制到数组内即可。

四、总结

        以上方法就是OLED显示屏的全部使用方法,由于采用软件IIC模拟的方法,可移植性高。相关程序代码已经全部经过验证。

        汉字取模软件:STM32OLED显示屏汉字取模软件合集资源-CSDN文库

        OLED库:0.96寸OLED屏幕库资源-CSDN文库

        本文源工程文件:0.96寸OLED屏幕开发源工程文件-西西菜鸟资源-CSDN文库

  • 13
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
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库提供的相关功能函数,结合正确的配置和调用,可以实现相应的功能。具体的实现过程中,可能还需要根据具体的硬件和使用环境进行一些适当的修改和调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西西菜鸟

打赏支持获得问题解答机会

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值