OLED屏幕应用十分广泛,我们可以使用STM32单片机对其进行控制,使其显示我们需要的各种数字、字母、汉字、图画等。我们此次使用下图这款非常普遍的0.96寸OLED液晶屏。此款OLED屏采用IIC的通讯协议,与STM32单片机的IIC1模块连接进行通讯。

IIC接口的0.96OLED屏

首先我们要对单片机进行基本的时钟、IIC通讯设置。ST推出的STM32CUBEIDE使我们可以通过图形界面的很方便的设置单片机的时钟、IIC外设的基本参数。我们设置的时钟参数、IIC外设参数详见下图。

STM32单片机的时钟配置

STM32单片机中IIC配置

设置完上述基本参数后我们点击STM32CUBE中的代码生成,可以生成基础代码。对于OLED驱动代码,网上有好多例程或者买部件时商家也会提供,这些代码我们可以加以参考。但这些驱动代码大多为IO口模拟的IIC操作屏幕,我们使用HAL库函数需要对驱动代码中的命令发送函数部分,数据发送函数部分加以修改。HAL库中把IIC通讯协议做了集成封装,使我们不需要特别了解IIC通讯的具体步骤及具体形式,只要弄清几个参数就可以使我们初学者快速上手,实现两设备之间的IIC的通讯。但是当熟悉后还是建议系统的学习下IIC通讯,这样我们使用其它单片机时也可轻松应对。下面屏蔽掉的代码为OLED驱动历程中的IO口模拟IIC通讯的整个过程,即:发送开始指令、发送设备地址、等待应答、发送设备中内存地址、等待应答、发送具体指令、等待应答、发送结束指令。库函数HAL_I2C_Mem_Write()已经封装了以上IIC通讯间的所有指令,我们直接调用此函数即可。修改的驱动代码具体如下:

void Write_IIC_Command(unsigned char IIC_Command){     /*IIC_Start();   Write_IIC_Byte(0x78);            //Slave address,SA0=0IIC_Wait_Ack();   Write_IIC_Byte(0x00);//write commandIIC_Wait_Ack();   Write_IIC_Byte(IIC_Command);IIC_Wait_Ack();   IIC_Stop();*/     HAL_I2C_Mem_Write(&hi2c1, 0x78, 0x00, I2C_MEMADD_SIZE_8BIT, &IIC_Command, 1, 100);}
void Write_IIC_Data(unsigned char IIC_Data){   /*IIC_Start();   Write_IIC_Byte(0x78);//D/C#=0; R/W#=0IIC_Wait_Ack();   Write_IIC_Byte(0x40);//write dataIIC_Wait_Ack();   Write_IIC_Byte(IIC_Data);IIC_Wait_Ack();   IIC_Stop();*/HAL_I2C_Mem_Write(&hi2c1, 0x78, 0x40, I2C_MEMADD_SIZE_8BIT, &IIC_Data, 1, 100);}

修改完上述代码后单片机就可以与OLED屏进行通讯。但如果想要OLED显示具体内容的话,我们还需向OLED发送相应内容的点阵代码。点阵代码可以通过字摸提取软件进行生成。提取内容见下图:

汉字字模提取

图片的字模提取

小鱼图片字模提取后生成的点阵代码

最后我们可以把这些提取的字模代码写入单片机的头文件,就可以使用OLED驱动程序中的字符串发送函数、汉字发送函数、图片发送函数来控制OLED屏幕。具体可点击后面链接查看实物视频 STM32单片机HAL库点亮OLED

显示数字、英文、汉字

显示小鱼图像

stm32单片机屏幕一直闪_STM32使用HAL库函数点亮OLED相关推荐

  1. stm32单片机屏幕一直闪_STM32物联网实战项目 - 项目需求

    项目需求 以主流的STM32单片机为主控,GPRS与WIFI为联网模组,配合丰富的外设与接口,设计一款功能齐全的开发板,让学员在学习产品设计的过程中,熟练的掌握STM32单片机的应用. 一.功能需求 ...

  2. stm32单片机屏幕一直闪_stm32实现LED灯的闪烁

    stm32单片机设计比较复杂,所以,对于外设的控制就相对于51单片机来说,就复杂很多.那么如何用stm32单片机点亮LED呢?通过一下几个步骤,就可以实现LED的闪烁.这里使用的stm32型号是stm ...

  3. stm32单片机屏幕一直闪_STM32单片机常见的工作异常现象分析及解决方案

    贴了两块样板,烧写同样的固件.其中一块工作正常,但是另外一块出现了很奇怪的现象:在线调试正常:每次烧写完后工作正常:重新上电有时候工作正常,有时候工作不正常:工作不正常时,按下复位按键,恢复正常. 工 ...

  4. stm32单片机屏幕一直闪_基于STM32单片机实现屏幕休眠后OLED屏幕滚动效果

    这次做项目时需要实现OLED屏幕上字符滚动的功能,从网上找到一个参考:https://blog.csdn.net/tbmmagic/article/details/111999673 int main ...

  5. stm32单片机屏幕一直闪_STM32F407[3] 闪烁LED

    按照上一小节的内容,我们已经能点亮LED了.同样的,把它熄灭非常简单:把对应GPIO设置为低电平即可.回忆上次的内容,想一下那个单刀双掷开关,对吧? 快速开始 结合一下,我们可以得到这样的思路:PD1 ...

  6. stm32单片机屏幕一直闪_用STM32做一个微型掌上示波器项目——终于鼓起在大牛前献丑的无比勇气...

    这是我第一次在这个论坛上发表东西,其实本人进入芯片的世界的时间并不长,从接触51单片机到现在还不到一年,所以可以算是小白啦~想了很久,总算拿出在论坛大牛前献丑的无比勇气,写起该帖:dizzy::diz ...

  7. STM32单片机蓝牙APP智能急救手表跌倒报警心率报警MAX30102

    实践制作DIY- GC0083-智能急救手表 一.功能说明: 基于STM32单片机设计-智能急救手表 功能介绍: STM32F103C系列最小系统板+OLED显示器+MAX30102心率传感器+蜂鸣器 ...

  8. STM32单片机基于HAL库开发HC-SR04 超声波测距模块(终极版)

    参考: 某宝HC-SR04 超声波测距模块商品详情页 STM32L051C8T6 HAL库 输入捕获进行超声波测距 案例 STM32CubeMX学习笔记3--TIM2输入捕获(SR-04测距) cub ...

  9. 《STM32单片机开发应用教程(HAL库版)—基于国信长天嵌入式竞赛实训平台(CT117E-M4)》第四章4.9 TIM---输入捕获(脉冲频率测量)实验

    写在前面-- <STM32单片机开发应用教程(HAL库版)-基于国信长天嵌入式竞赛实训平台(CT117E-M4)>第四章4.9 TIM-输入捕获(脉冲频率测量)实验,讲解TIM输入捕获的原 ...

最新文章

  1. shell脚本常用脚本:while
  2. 对 Entity 的初步构思
  3. Java 判断字符串的存储长度
  4. linux7给用户授权,CentOS7 添加新用户并授权
  5. 微软2016 9月笔试
  6. RS232通信之C++实现---PC端
  7. 苹果平板买哪款最好?
  8. php开发工具 zend studio 12.5.1 中文版汉化
  9. 百度地图 绘制运动轨迹_百度地图创新破局:声音个性表达、出行精准预估与全球无碍...
  10. 使用python语言编写脚本控制freeswitch总结
  11. [ASP调试]小旋风Web服务器使用
  12. go :Multiple-value strconv.Atoi() (int, error) in single-value context
  13. iphone双重认证关闭不了怎么办_苹果手机双重认证怎么关闭-互盾苹果恢复精灵...
  14. CentOS更改语言两种方式
  15. Python 比较日期字符串与当前日期的日期差
  16. 写html和css怎么分屏,如何使用CSS创建分屏(50/50)?
  17. win10资源管理器无法最小化,无法移动
  18. 全球首家!苹果市值达 3 万亿美元,AR 和自动驾驶是下一重点?
  19. 学位论文写作的正确打开方式:程序员的理性与倔强
  20. 编辑为什么建议转投_SCI编辑建议转投容易录用吗

热门文章

  1. HTTP/3 原理实战
  2. centos7安装minikube
  3. 阿里巴巴JAVA开发手册及开发插件
  4. Android插件框架VirtualAPK
  5. 关于我国科技创新研究,以及创新成果的转化的思考
  6. 【排序算法】冒泡排序 选择排序 插入排序 希尔排序(数组)
  7. Google Megastore介绍
  8. MySQL(六)常用语法和数据类型
  9. 通过JConsole查看本地远程虚拟机
  10. 01.query的分类-条件查询和组合查询