I2C通信协议实现在OLED显示屏数据显示

      最后更新: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通信的注册实现、显示文字、图片、全屏幕填充等。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/29769.html

          热门文章

          文章分类