找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1846|回复: 2
打印 上一主题 下一主题
收起左侧

STM32 IIC通信OLED 屏幕驱动

[复制链接]
跳转到指定楼层
楼主
ID:394719 发表于 2019-7-22 03:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
OLED 屏幕驱动代码,亲测有效,可以显示文字,字符,字符串,图片等
  1. #include "OLED.h"
  2. #include "delay.h"
  3. #include "CodeTable.h"
  4. void I2C_Configuration(void)
  5. {
  6.         I2C_InitTypeDef  I2C_InitStructure;
  7.         GPIO_InitTypeDef  GPIO_InitStructure;

  8.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);
  9.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

  10.         /*STM32F103C8T6D¾Æ¬μÄó2¼tI2C: PB6 -- SCL; PB7 -- SDA */
  11.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
  12.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  13.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;//I2C±ØDë¿a©êä3ö
  14.         GPIO_Init(GPIOB, &GPIO_InitStructure);

  15.         I2C_DeInit(I2C1);//ê1óÃI2C1
  16.         I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
  17.         I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
  18.         I2C_InitStructure.I2C_OwnAddress1 = 0x30;//Ö÷»úμÄI2CμØÖ·,
  19.         I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
  20.         I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
  21.         I2C_InitStructure.I2C_ClockSpeed = 400000;//400K

  22.         I2C_Cmd(I2C1, ENABLE);
  23.         I2C_Init(I2C1, &I2C_InitStructure);
  24. }
  25. void OLED_IIC_Start(void)
  26. {
  27.         OLED_IIC_SDA = 1;
  28.         OLED_IIC_SCL = 1;
  29.         delay_us(2);
  30.          OLED_IIC_SDA = 0;//START:when CLK is high,DATA change form high to low
  31.         delay_us(2);
  32.         OLED_IIC_SCL = 0;
  33. void  OLED_IIC_Stop(void)
  34. {
  35.         OLED_IIC_SCL = 0;
  36.         OLED_IIC_SDA = 0;//STOP:when CLK is high DATA change form low to high
  37.          delay_us(2);
  38.         OLED_IIC_SCL = 1;
  39.         OLED_IIC_SDA = 1;//·¢ËíI2C×üÏß½áêøDÅoÅ
  40.         delay_us(2);                                                                  
  41. }
  42. void I2C_Write_Byte(uint8_t addr,uint8_t data)
  43. {
  44.     while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY));
  45.         
  46.         I2C_GenerateSTART(I2C1, ENABLE);
  47.         while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));

  48.         I2C_Send7bitAddress(I2C1, OLED_ADDRESS, I2C_Direction_Transmitter);
  49.         while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));

  50.         I2C_SendData(I2C1, addr);/
  51.         while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));

  52.         I2C_SendData(I2C1, data);/
  53.         while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
  54.         
  55.         I2C_GenerateSTOP(I2C1, ENABLE);/
  56. }
复制代码

5-OLED.7z

194.43 KB, 下载次数: 54, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:541451 发表于 2020-1-9 16:03 | 只看该作者
已下载,但是并不能显示,是否需要添加更新显示函数
回复

使用道具 举报

板凳
ID:91165 发表于 2020-2-15 13:06 | 只看该作者
顶楼主,辛苦了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表