stm32单片机屏幕一直闪_STM32使用HAL库函数点亮OLED
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相关推荐
- stm32单片机屏幕一直闪_STM32物联网实战项目 - 项目需求
项目需求 以主流的STM32单片机为主控,GPRS与WIFI为联网模组,配合丰富的外设与接口,设计一款功能齐全的开发板,让学员在学习产品设计的过程中,熟练的掌握STM32单片机的应用. 一.功能需求 ...
- stm32单片机屏幕一直闪_stm32实现LED灯的闪烁
stm32单片机设计比较复杂,所以,对于外设的控制就相对于51单片机来说,就复杂很多.那么如何用stm32单片机点亮LED呢?通过一下几个步骤,就可以实现LED的闪烁.这里使用的stm32型号是stm ...
- stm32单片机屏幕一直闪_STM32单片机常见的工作异常现象分析及解决方案
贴了两块样板,烧写同样的固件.其中一块工作正常,但是另外一块出现了很奇怪的现象:在线调试正常:每次烧写完后工作正常:重新上电有时候工作正常,有时候工作不正常:工作不正常时,按下复位按键,恢复正常. 工 ...
- stm32单片机屏幕一直闪_基于STM32单片机实现屏幕休眠后OLED屏幕滚动效果
这次做项目时需要实现OLED屏幕上字符滚动的功能,从网上找到一个参考:https://blog.csdn.net/tbmmagic/article/details/111999673 int main ...
- stm32单片机屏幕一直闪_STM32F407[3] 闪烁LED
按照上一小节的内容,我们已经能点亮LED了.同样的,把它熄灭非常简单:把对应GPIO设置为低电平即可.回忆上次的内容,想一下那个单刀双掷开关,对吧? 快速开始 结合一下,我们可以得到这样的思路:PD1 ...
- stm32单片机屏幕一直闪_用STM32做一个微型掌上示波器项目——终于鼓起在大牛前献丑的无比勇气...
这是我第一次在这个论坛上发表东西,其实本人进入芯片的世界的时间并不长,从接触51单片机到现在还不到一年,所以可以算是小白啦~想了很久,总算拿出在论坛大牛前献丑的无比勇气,写起该帖:dizzy::diz ...
- STM32单片机蓝牙APP智能急救手表跌倒报警心率报警MAX30102
实践制作DIY- GC0083-智能急救手表 一.功能说明: 基于STM32单片机设计-智能急救手表 功能介绍: STM32F103C系列最小系统板+OLED显示器+MAX30102心率传感器+蜂鸣器 ...
- STM32单片机基于HAL库开发HC-SR04 超声波测距模块(终极版)
参考: 某宝HC-SR04 超声波测距模块商品详情页 STM32L051C8T6 HAL库 输入捕获进行超声波测距 案例 STM32CubeMX学习笔记3--TIM2输入捕获(SR-04测距) cub ...
- 《STM32单片机开发应用教程(HAL库版)—基于国信长天嵌入式竞赛实训平台(CT117E-M4)》第四章4.9 TIM---输入捕获(脉冲频率测量)实验
写在前面-- <STM32单片机开发应用教程(HAL库版)-基于国信长天嵌入式竞赛实训平台(CT117E-M4)>第四章4.9 TIM-输入捕获(脉冲频率测量)实验,讲解TIM输入捕获的原 ...
最新文章
- shell脚本常用脚本:while
- 对 Entity 的初步构思
- Java 判断字符串的存储长度
- linux7给用户授权,CentOS7 添加新用户并授权
- 微软2016 9月笔试
- RS232通信之C++实现---PC端
- 苹果平板买哪款最好?
- php开发工具 zend studio 12.5.1 中文版汉化
- 百度地图 绘制运动轨迹_百度地图创新破局:声音个性表达、出行精准预估与全球无碍...
- 使用python语言编写脚本控制freeswitch总结
- [ASP调试]小旋风Web服务器使用
- go :Multiple-value strconv.Atoi() (int, error) in single-value context
- iphone双重认证关闭不了怎么办_苹果手机双重认证怎么关闭-互盾苹果恢复精灵...
- CentOS更改语言两种方式
- Python 比较日期字符串与当前日期的日期差
- 写html和css怎么分屏,如何使用CSS创建分屏(50/50)?
- win10资源管理器无法最小化,无法移动
- 全球首家!苹果市值达 3 万亿美元,AR 和自动驾驶是下一重点?
- 学位论文写作的正确打开方式:程序员的理性与倔强
- 编辑为什么建议转投_SCI编辑建议转投容易录用吗