最后更新:2022-07-16 00:28:03 手机定位技术交流文章
1.介绍
OLED是一种使用LED光的显示器,尺寸为0.96英寸,分辨率为128X64,使用IIC接口进行通信, OLED制造商不仅提供手册,还提供参考源,使用IIC控制器实现参考。
2.硬件连接


3.IIC控制器编程
添加IIC库函数源:

—————————————————————————————————————————————————————————————————————————————————————
(1)开启时钟
开放GPIO及IIC时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);
(二)配置GPIO作为IIC可重用函数
GPIO_Init(...); //初始化
GPIO_PinAFConfig(...); //映射
(3)IIC初始化
void I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct);
参数:
I2Cx - Which way IIC
I2C_InitStruct - 初始化结构
typedef struct
{
uint32_t I2C_ClockSpeed; /*!< 时钟速度 100 ~ 400kHz */
uint16_t I2C_Mode; /*!< I2C模式 @ref I2C_mode */
uint16_t I2C_DutyCycle; /*!< 高低电平比例 @ref I2C_duty_cycle_in_fast_mode */ uint16_t I2C_OwnAddress1; /*!< 自己的地址,从设备时使用 */
uint16_t I2C_Ack; /*!< ACK使能 @ref I2C_acknowledgement */ uint16_t I2C_AcknowledgedAddress; /*!< 从设置地址位数 @ref I2C_acknowledged_address */
}I2C_InitTypeDef;
(四)如需要接收IIC数据,应开关
void I2C_AcknowledgeConfig(I2C_TypeDef* I2Cx, FunctionalState NewState);
(5)使能IIC
I2C_Cmd(I2C1,ENABLE);
(6)IIC通信
(一)询问巴士是否繁忙
I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY);
2)起始信号
void I2C_GenerateSTART(I2C_TypeDef* I2Cx, FunctionalState NewState);
3)设置相应的模式
I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT);
当前的IIC作为主设备,所以参数应该选择I2C_EVENT_MASTER_MODE_SELECT作为标记
4)从设备地址和读写信号设置
I2C_Send7bitAddress(I2C1, /*从设备地址*/, I2C_Direction_Transmitter);//发送 I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED);//主设备发送模式
5)发送和接收数据
void I2C_SendData(I2C_TypeDef* I2Cx, uint8_t Data); I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED);//等待发送完成符号 I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_RECEIVED); uint8_t I2C_ReceiveData(I2C_TypeDef* I2Cx);
6)停止信号
void I2C_GenerateSTOP(I2C_TypeDef* I2Cx, FunctionalState NewState);
4.移植OLED
(1)初始化
I2C_Configuration(); OLED_Init();
(2)显示
//全屏填充
void OLED_Fill(unsigned char fill_Data)
//显示ascii字符 void OLED_ShowStr(unsigned char x, unsigned char y, unsigned char ch[], unsigned char TextSize);
//显示汉字
void OLED_ShowCN(unsigned char x, unsigned char y, unsigned char N);
5.制作字模
(1)打开字体软件(在共享的STM32信息中)
如下图所示,需要修改一些配置

(2)生成字模
只要能通过输入方法输出的话,就可以生成单词
(三)复制生成的模板用于代码中使用
(4)制作图片图模
原始的图像大小必须为128X64,必须是黑白图像,最后从图像中取得的数据必须与模板中取得的数据相同。
//在OLED显示数据中实现I2C通信协议
// 以下由制造商定义的功能包括I2C初始化、OLED初始化、I2C通信的注册实现、显示文字、图片、全屏幕填充等。
本文由 在线网速测试 整理编辑,转载请注明出处。