目录
一、资源说明
二、基本参数
三、通信协议说明
? ? ? ? IIC通信
? ? ? ?1、起始信号
? ? ? ? 2、停止信号
? ? ? ? 3、等待应答
? ? ? ? 4、发送数据
四、部分代码说明
? ? ? ? 1、接线说明
? ? ? ? 2、背光参数
五、相关资料
六、字符图片提取格式
?七、视频效果展示与程序资料获取
八、项目所有材料清单
?九、注意事项
十、接线表格
一、资源说明
单片机型号 | 测试条件 | 模块名称 | 代码功能 | STC89C52RC | 1.晶振11.0592M | OLED 0.91(4针 IIC) |
- 0.91OLED显示分秒时钟
- 0.91OLED显示文字
- 0.91OLED切换显示图片
- 0.91OLED文字滚动显示
| STM32F103C8T6 |
- 晶振8M
- 系统时钟72M
| OLED 0.91(4针 IIC) |
二、基本参数
- 一般使用主要关注驱动芯片,分辨率,通信接口,供电电压。
????
- 引脚说明
4针IIC引脚 | 引脚说明 | GND | GND引脚接电源地,如果外接电源,一般必须共地 | VCC | VCC电源引脚,可接3.3V或5V,推荐3.3V | SCL | IIC时钟线 | SDA | IIC数据线 |
三、通信协议说明
? ? ? ? IIC通信
? ? ? ? ? 1、起始信号
????????????????时序图:
?????????????????代码:
//IIC Start
void IIC_Start()
{
OLED_SCL_High;
OLED_SDA_High;
IIC_Delay();
OLED_SDA_Low;
IIC_Delay();
OLED_SCL_Low;
}
? ? ? ? 2、停止信号
?????????????时序图:
??????????????????代码:
//IIC Stop
void IIC_Stop()
{
OLED_SCL_Low;
OLED_SDA_Low;
IIC_Delay();
OLED_SCL_High;
OLED_SDA_High;
}
? ? ? ? 3、等待应答
?????????????时序图:
???????????????????代码:
//等待信号响应,对应答信号进行判断并添加返回值
uint8_t I2C_WaitAck(void) //测数据信号的电平
{
uint8_t Ack_Sta;
OLED_SDA_High;
IIC_Delay();
OLED_SCL_High;
IIC_Delay();
if(OLED_SDA)
{
Ack_Sta = 1;
}
else
{
Ack_Sta = 0;
}
OLED_SCL_Low;
IIC_Delay();
return Ack_Sta;
}
? ? ? ? 4、发送数据
?????????????时序图:
????????????????????代码:
// 通过I2C总线写一个字节
uint8_t Write_IIC_Byte(uint8_t IIC_Byte)
{
uint8_t i;
for(i=0;i<8;i++)
{
if(IIC_Byte & 0x80)
{
OLED_SDA_High;
}
else
{
OLED_SDA_Low;
}
IIC_Delay();
OLED_SCL_High;
IIC_Delay();
OLED_SCL_Low;
IIC_Byte<<=1;
}
return I2C_WaitAck();
}
四、部分代码说明
? ? ? ? 1、接线说明
需要自定义引脚可在此处更改,STM32要自定义引脚的话也要注意引脚时钟使能的更改
????????1.1、STC89C52RC+4针OLED(IIC)
sbit OLED_SCL = P1^0; //串行时钟
sbit OLED_SDA = P1^1; //串行数据
sbit OLED_RES = P1^2; //
????????1.2、STM32F103C8T6+4针OLED(IIC)
//IIC 对应IO口高低电平 宏定义
//RES引脚
#define ??????OLED_RES_CLK ????????????????RCC_APB2Periph_GPIOB ??
#define ??????OLED_RES_PORT ???????????????GPIOB ??
#define ??????OLED_RES_PIN ????????????????GPIO_Pin_5
//SCL//DO
#define ??????OLED_SCL_CLK ????????????????RCC_APB2Periph_GPIOB ???
#define ??????OLED_SCL_PORT ???????????????GPIOB
#define ??????OLED_SCL_PIN ????????????????GPIO_Pin_6 ?????
//SDA//DI
#define ??????OLED_SDA_CLK ????????????????RCC_APB2Periph_GPIOB ???
#define ??????OLED_SDA_PORT ???????????????GPIOB
#define ??????OLED_SDA_PIN ????????????????GPIO_Pin_7
? ? ? ? 2、背光参数
????????如需改OLED显示亮度可改Brightness宏定义,范围0x00~0xff,
//背光亮度调节宏定义,0x00~0xff
#define Brightness 0xCF
WriteCmd(0x81); //--set contrast control register//设置对比度,也就是亮度
WriteCmd(Brightness); //亮度调节 0x00~0xff
五、相关资料
- STC89C52RC程序下载 直戳跳转
- STM32F103C8T6程序下载
- 串口下载????????????????直戳跳转?
- ST-LINK下载?????????????直戳跳转
- J-LINK下载??????????????直戳跳转
- DAP-LINK下载????????????直戳跳转
- 字符软件使用 ? ?直戳跳转
六、字符图片提取格式
文字格式:共阴——列行式——逆向——C51——行前后缀括号去掉
图像格式:共阴——列行式——逆向——C51——行前后缀括号去掉
?七、视频效果展示与程序资料获取
????????视频连接? ? 直戳跳转
????????资料获取? ? 直戳跳转
八、项目所有材料清单
?九、注意事项
- VCC GND请勿接反,接反易烧
- 显示异常时,排除接线接触不良
- 同程序换其他同类屏幕后需要按单片机复位才会正常显示
- 不同尺寸OLED屏幕程序并不完全兼容
- 下载后显示多出一些杂点的时候可以重新上电复位下?
十、接线表格
单片机型号 | 模块 | 对应引脚(上:模块引脚 下:单片机引脚) | STM32F103 C8T6 | OLED0.91??4针(IIC) | GND | VCC | SCL | SDA | RES | 备注:OLED0.91?无RES,可不接 | GND | 3.3V | PB6 | PB7 | | STC89C52RC | OLED0.91??4针(IIC) | GND | VCC | SCL | SDA | RES | GND | 3.3V | P1.0 | P1.1 | |
?
|