K_A00_001 基于多种单片机驱动OLED 0.96 显示字符图文时钟及滚动显示

实物参考链接 直戳跳转

一、程序功能说明

二、基本参数


1.常规参数

4针IIC 与7针SPI/IIC OLED 0.96 OLED基本参数类似,只是通信协议不一样,

一般使用主要关注驱动芯片,分辨率,通信接口,供电电压。

2.引脚说明

三、通信协议说明


1.IIC协议

1.1、 起始信号

时序图:

代码:

//IIC Start
void IIC_Start()
{
    OLED_SCL_High;
    OLED_SDA_High;
    IIC_Delay();
    OLED_SDA_Low;
    IIC_Delay();
    OLED_SCL_Low;
}


1.2、停止信号


时序图:

代码:

//IIC Stop
void IIC_Stop()
{
    OLED_SCL_Low;
    OLED_SDA_Low;
    IIC_Delay();
    OLED_SCL_High;
    OLED_SDA_High;
}

1.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;
}

1.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();
}

2、SPI协议

SPI写数据 D/C选择写数据或者写命令 高电平写数据 低电平写命令,CS位片选,低电平有效,详细可参考手册

时序:

代码:

 //OLED写数据
void WriteDat(uint8_t SPI_Data)
{
	uint8_t i;
	OLED_DC_High;
	OLED_CS_Low;
	for(i=0;i<8;i++)
	{			  
		OLED_SCL_Low;
		if(SPI_Data&0x80)
		{
		 OLED_SDA_High;
		}
		else
		{
		 OLED_SDA_Low;
		}
	  OLED_SCL_High;
		SPI_Data<<=1;   
	}				 		  
	OLED_CS_High;
	OLED_DC_High;  
}
//OLED写命令
void WriteCmd(uint8_t SPI_Command)
{
	uint8_t i;
	
	OLED_DC_Low;	
	OLED_CS_Low;
	for(i=0;i<8;i++)
	{			  
		OLED_SCL_Low;
		if(SPI_Command&0x80)
		{
		 OLED_SDA_High;
		}
		else
		{
		 OLED_SDA_Low;
		}
	  OLED_SCL_High;
		SPI_Command<<=1;   
	}				 		  
	OLED_CS_High;
	OLED_DC_High;  
}

四、部分代码说明

1、接线说明

需要自定义引脚可在此处更改,STM32要自定义引脚的话也要注意引脚时钟使能的更改

1.1、STC89C52RC+4针OLED(IIC)

sbit OLED_SCL = P1^0; //串行时钟
sbit OLED_SDA = P1^1; //串行数据
sbit OLED_RES = P1^2; //SPI改IIC需要接,正常使用可不接

1.2、STC89C52RC+7针OLED(SPI)

//SPI  IO口定义
 
sbit OLED_SCL = P1^4;//DO
 
sbit OLED_SDA = P1^3;//DI
 
sbit OLED_RES = P1^2;//RES
 
sbit OLED_DC  = P1^1;//DC
 
sbit OLED_CS  = P1^0; //CS

1.3、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

1.4、STM32F103C8T6+7针OLED(SPI)

//CS(NSS)引脚
 
#define       OLED_CS_APBxClock_CMD       RCC_APB2PeriphClockCmd
 
#define       OLED_CS_CLK                  RCC_APB2Periph_GPIOA   
 
#define       OLED_CS_PORT                 GPIOA
 
#define       OLED_CS_PIN                  GPIO_Pin_3
 
//DC引脚
 
#define       OLED_DC_APBxClock_CMD        RCC_APB2PeriphClockCmd
 
#define       OLED_DC_CLK                  RCC_APB2Periph_GPIOA   
 
#define       OLED_DC_PORT                 GPIOA
 
#define       OLED_DC_PIN                  GPIO_Pin_4
 
//RES引脚
 
#define       OLED_RES_APBxClock_CMD       RCC_APB2PeriphClockCmd
 
#define       OLED_RES_CLK                 RCC_APB2Periph_GPIOA   
 
#define       OLED_RES_PORT                GPIOA   
 
#define       OLED_RES_PIN                 GPIO_Pin_5
 
//SDA//DI
 
#define       OLED_SDA_APBxClock_CMD     RCC_APB2PeriphClockCmd
 
#define       OLED_SDA_CLK                RCC_APB2Periph_GPIOA    
 
#define       OLED_SDA_PORT               GPIOA
 
#define       OLED_SDA_PIN                GPIO_Pin_6
 
//SCL//DO
 
#define       OLED_SCL_APBxClock_CMD     RCC_APB2PeriphClockCmd
 
#define       OLED_SCL_CLK                RCC_APB2Periph_GPIOA    
 
#define       OLED_SCL_PORT               GPIOA
 
#define       OLED_SCL_PIN                GPIO_Pin_7                        

2、背光亮度调

 //背光亮度调节宏定义,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屏幕程序并不完全兼容
下载后显示多出一些杂点的时候可以重新上电复位下

九、接线说明

可参考程序main.c最上面接线说明

所有相关实物与程序套件可在我们店铺找到

X
深圳市咱们电子科技有限公司