STM32 串口通信OLED屏幕显示(IIC)心得体会(精华)

主机:单片机
从机:oled

当主机向从机写入数据时,从机需要向主机返回应答信号 每写入一个字节,则需等待应答信号:在scl和sda都为高时
当主机向从机中读取数据时,主机需要向从机给应答信号 此时,给应答信号,则表示还需要读取数据;如果给非应答信号,则表示不再读取数据

IIC模式
SDA PA1 //D1
SCL PA2 //D0
DC PA3 //地址选择 0 地址为0x78 1 地址为0x7A
RES PA4 //复位引脚
CS PA5 //默认接地

电阻R3换到R1
R8短接

16(8x16)号字体 一个字符纵向占两个字节 横向占一个字节
12(6x8)号字体 一个字符纵向占1个字节 横向占6bit

主机:PC
从机:单片机
function:串口通讯

RXNE(读数据寄存器非空) 表示已经接收到数据了
TC 表示数据发送完成
以上都可以通过读写DR直接清除中断标志位

USART_GetFlagStatus() //判断寄存器状态 是否非空/是否发送完成
USART_GetITStatus() //判断中断的产生 是否产生了。。。中断

pc向单片机发送的数据以0x0d,0x0a结尾 一次传输一个字节
如传输1234 则为4个字节 如果接收的数组buf[4]的话 则buf[0] = 1 buf[1] = 2
一个汉字占两个字节 有可能识别不出来

接收是一个字节一个字节的接收 内容从左往右依次接收 此时如果数组地址是不断增加的
发送也是一个字节一个字节的发送 发送时地址也要不断增加

### 回答1: STM32可以通过IIC通信协议来控制OLED幕。具体步骤如下: 1. 配置IIC总线:设置STM32的GPIO引脚为IIC模式,并配置IIC总线的时钟速率、地址等参数。 2. 初始化OLED幕:发送初始化命令,设置OLED幕的显示模式、亮度、对比度等参数。 3. 发送数据:将要显示的数据通过IIC总线发送到OLED幕上,可以显示文字、图像等。 4. 关闭OLED幕:发送关闭命令,关闭OLED幕。 以上是控制OLED幕的基本步骤,具体实现需要根据具体的硬件和软件环境进行调整。 ### 回答2: STM32是一款广泛使用的微控制器,它的I2C(也称为IIC总线接口可以用于控制诸如OLED幕之类的外设。在这里,本人将详细介绍如何使用STM32的I2C接口来驱动OLED幕。 首先,我们需要了解OLED和I2C协议的一些基础知识。OLED幕是一种显示技术,它使用有机发光材料来发光,相对于传统的液晶显示器,它的对比度更高、响应更快、更省电。而I2C是一种串行通信协议,它可以让微控制器与其他设备(如传感器、存储器、芯片等)进行通信,它使用两根线路(SCL和SDA)进行通信。 接下来,我们将详细介绍如何在STM32中使用I2C来控制OLED幕。 步骤1:准备工作 在开始之前,我们需要准备好一些材料: 1. STM32微控制器板 2. OLED显示幕 3. 电缆线 4. 电源 步骤2:建立硬件连接 将OLED显示分别连接到VCC,GND,SCL,SDA的接口上,并连接到STM32的I2C接口上。 步骤3:编写代码 以下是控制OLED幕的代码 #include "oled.h" #include "i2c.h" void OLED_WriteCmd(uint8_t cmd) { uint8_t data[2] = {0x00, cmd}; HAL_I2C_Master_Transmit(&hi2c1, OLED_I2C_ADDR, data, sizeof(data), 100); } void OLED_WriteData(uint8_t data) { uint8_t _data[2] = {0x40, data}; HAL_I2C_Master_Transmit(&hi2c1, OLED_I2C_ADDR, _data, sizeof(_data), 100); } void OLED_Init() { //设置 OLED_WriteCmd(0xAE); OLED_WriteCmd(0x20); OLED_WriteCmd(0x10); OLED_WriteCmd(0xb0); OLED_WriteCmd(0xc8); OLED_WriteCmd(0x00); OLED_WriteCmd(0x10); OLED_WriteCmd(0x40); OLED_WriteCmd(0x81); OLED_WriteCmd(0xff); OLED_WriteCmd(0xa1); OLED_WriteCmd(0xa6); OLED_WriteCmd(0xa8); OLED_WriteCmd(0x3f); OLED_WriteCmd(0xd3); OLED_WriteCmd(0x00); OLED_WriteCmd(0xd5); OLED_WriteCmd(0xf0); OLED_WriteCmd(0xd9); OLED_WriteCmd(0x22); OLED_WriteCmd(0xda); OLED_WriteCmd(0x02); OLED_WriteCmd(0xdb); OLED_WriteCmd(0x49); OLED_WriteCmd(0x8d); OLED_WriteCmd(0x14); OLED_WriteCmd(0xaf); } 如上代码,OLED_Init()用来初始化OLED幕,OLED_WriteCmd()用来向OLED幕写入命令,OLED_WriteData()用来向OLED幕写入数据。在写入之前,需要使用HAL_I2C_Master_Transmit()函数将数据通过I2C协议发送到OLED幕。 步骤4:测试 完成以上步骤后,就可以通过写入数据和命令来控制OLED幕的显示,可以在代码中加上一些图形和文字等来测试OLED幕的显示效果。 综上所述,使用STM32的I2C接口控制OLED幕,不仅需要熟悉I2C协议的使用,还需要掌握OLED幕的通信协议及基础知识。通过以上步骤的实践,可以更好地理解和掌握STM32对I2C和OLED幕的控制方法。 ### 回答3: STM32是一种32位的微控制器,而OLED幕是一种基于有机发光二极管技术的显示幕。它们可以通过IIC通信协议进行连接和控制。下面将会介绍如何使用STM32控制OLED幕。 首先,我们需要知道IIC通信协议。IIC通信协议是一种串行通信协议,它使用两根线路进行通信:SDA(串行数据线)和SCL(串行时钟线)。在OLED幕中,这两根线通常被称为SDA(数据)和SCL(时钟)。STM32上有硬件IIC模块,可以方便地实现IIC通信。 接下来,我们需要确定OLED幕的IIC通信地址。不同的OLED幕可能具有不同的IIC通信地址。一般情况下,我们可以通过查看OLED幕的数据手册或者询问厂家来确定它的IIC通信地址。一旦我们知道了这个地址,我们就可以在STM32中使用IIC控制器向OLED幕发送命令或数据了。 具体实现的步骤如下: 1.初始化STM32IIC控制器。这通常包括设置IIC的时钟速率、使能IIC控制器等。 2.在STM32上编写要发送的指令或数据。 3.通过IIC控制器将指令或数据从STM32发送到OLED幕。 4.在OLED幕上显示。 需要注意的是,通过IIC通信协议进行通信可能存在信号干扰等问题,因此在实现过程中需要进行一定的电路设计和软件优化。 使用STM32来控制OLED幕可以实现某些应用场景下的高端功能和复杂图像显示。例如,可以通过STM32控制OLED屏幕显示实时监测数据、运动状态信息等。同时,这种实现方法可以提高产品的整体性能,使之具有更高的可定制性、易操作性和卓越的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值