芯查查logo
  • 数据服务
    1. 新产品
    2. 物料选型
    3. 查替代
    4. 丝印反查
    5. 查品牌
    6. PCN/PDN
    7. 查方案
    8. 查代理
    9. 数据合作
  • SaaS/方案
      SaaS产品
    1. 供应链波动监控
    2. 半导体产业链地图
    3. BOM管理
    4. 解决方案
    5. 汽车电子
    6. 政府机构
    7. 数据API
  • 商城
  • 行业资讯
    1. 资讯
    2. 直播
  • 论坛社区
    1. 论坛
    2. 学习
    3. 测评中心
    4. 活动中心
    5. 积分商城
  • 查一下
  • 开通会员
基于STM32F103RC硬件平台对12864点阵屏的驱动显示
原创 精华 发布时间:2023/03/07 14:27
版块:
开源项目
简介:基于STM32的硬件IIC驱动屏幕的介绍

一、OLED 简介:

OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(Organic Electroluminesence Display, OELD)。因为具备轻薄、省电等特性,因此从 2003 年开始,这种显示设备在 MP3 播放器上得到了广泛应用,而对于同属数码类产品的 DC 与手机,此前只是在一些展会上展示过采用 OLED 屏幕的工程样品。自 2007 年后,寿命得 到很大提高,具备了许多 LCD 不可比拟的优势。

GND:电源地 VCC:2.2V~5.5V SCL(D0):CLK 时钟 (高电平 2.2V~5.5V) SDA(D1):MOSI 数据(高电平 2.2V~5.5V) RST:复位(高电平 2.2V~5.5V) D/C:数据/命令(高电平 2.2V~5.5V) 兼容 3.3V 和 5V 控制芯片的 I/O 电平(无需任何设置,直接兼容)。

实物图片

二:汉字显示方法:

需要使用软件做自己的字库

二:使用硬件IIC驱动代码例程:

void I2C_Configuration(void)

{

I2C_InitTypeDef  I2C_InitStructure;

GPIO_InitTypeDef  GPIO_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

/*STM32F103C8T6芯片的硬件I2C: PB6 -- SCL; PB7 -- SDA */

GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6 | GPIO_Pin_7;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;//I2C必须开漏输出

GPIO_Init(GPIOB, &GPIO_InitStructure);

I2C_DeInit(I2C1);//使用I2C1

I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;

I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;

I2C_InitStructure.I2C_OwnAddress1 = 0x30;//主机的I2C地址,随便写的

I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;

I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;

I2C_InitStructure.I2C_ClockSpeed = 400000;//400K

I2C_Cmd(I2C1, ENABLE);

I2C_Init(I2C1, &I2C_InitStructure);

}

void I2C_WriteByte(uint8_t addr,uint8_t data)

{

 while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY));

I2C_GenerateSTART(I2C1, ENABLE);//开启I2C1

while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));/*EV5,主模式*/

I2C_Send7bitAddress(I2C1, OLED_ADDRESS, I2C_Direction_Transmitter);//器件地址 -- 默认0x78

while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));

I2C_SendData(I2C1, addr);//寄存器地址

while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));

I2C_SendData(I2C1, data);//发送数据

while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));

I2C_GenerateSTOP(I2C1, ENABLE);//关闭I2C1总线

}

void WriteCmd(unsigned char I2C_Command)//写命令

{

I2C_WriteByte(0x00, I2C_Command);

}

void WriteDat(unsigned char I2C_Data)//写数据

{

I2C_WriteByte(0x40, I2C_Data);

}

当然也可以使用软件模拟IIC

/**********************************************

//IIC Start

**********************************************/

void IIC_Start()

{

  SCL = high;  

  SDA = high;

  SDA = low;

  SCL = low;

}

/**********************************************

//IIC Stop

**********************************************/

void IIC_Stop()

{

  SCL = low;

  SDA = low;

  SCL = high;

  SDA = high;

}

/**********************************************

// 通过I2C总线写一个字节

**********************************************/

void Write_IIC_Byte(unsigned char IIC_Byte)

{

unsigned char i;

for(i=0;i<8;i++)

{

 if(IIC_Byte & 0x80)

  SDA=high;

 else

  SDA=low;

 SCL=high;

 SCL=low;

 IIC_Byte<<=1;

}

SDA=1;

SCL=1;

SCL=0;

}

实物效果如下图:

STM单片机 显示模块
2023/03/07 14:27
  • 举报
😁😂😃😄😅😆😉😊😋😌😍😏😒😓😔😖😘😚😜😝😞😠😡😢😣😤😥😨😩😪😫😭😰😱😲😳😵😷😸😹😺😻😼😽😾😿🙀🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎🙏✂✅✈✉✊✋✌✏✒✔✖✨✳✴❄❇❌❎❓❔❕❗❤➕➖➗➡➰🚀🚃🚄🚅🚇🚉🚌🚏🚑🚒🚓🚕🚗🚙🚚🚢🚤🚥🚧🚨🚩🚪🚫🚬🚭🚲🚶🚹🚺🚻🚼🚽🚾🛀Ⓜ🅰🅱🅾🅿🆎🆑🆒🆓🆔🆕
@好友

全部评论

加载中
游客登录通知
已选择 0 人
自定义圈子
移动
发布帖子
发布动态
发布问答
发布者
聪聪哥哥
最新帖子
缝纫机伺服0.3秒启停稳如磐石:三招驯服“针位漂移”顽疾伺服电机过载预警:从电流纹波揪出轴承暗伤的猎杀方案芯片丝印反查求助树莓派pico 2测评 - 串口萤火工场GD32VW553-IOT测评+蓝牙串口透传
热门版块
查看更多
电子元器件
维修技术
问型号
问技术
问行情
专家问答
电子DIY
汽车电子工程师论坛
工业电子专区
新手入门指南

255

收藏

分享

微信扫码
分享给好友

评论