• K_A00_002 基于单片机驱动OLED 0.91 字符/切换图片/滚动显示


    目录

    一、资源说明

    二、基本参数

            1、引脚说明

    三、通信协议说明

            IIC通信

                    1、起始信号

                    2、停止信号

                    3、等待应答

                    4、发送数据

    四、部分代码说明

            1、接线说明

                    1.1、STC89C52RC+4针OLED(IIC)

                    1.2、STM32F103C8T6+4针OLED(IIC)

            2、背光参数

    五、相关资料

    六、字符图片提取格式

     七、视频效果展示与程序资料获取

    八、项目所有材料清单

     九、注意事项

    十、接线表格


    一、资源说明

    单片机型号

    测试条件

    模块名称

    代码功能

    STC89C52RC

    1.晶振11.0592M

    OLED 0.91(4针 IIC)

    1. 0.91OLED显示分秒时钟
    2. 0.91OLED显示文字
    3. 0.91OLED切换显示图片
    4. 0.91OLED文字滚动显示

    STM32F103C8T6

    1. 晶振8M
    2. 系统时钟72M

    OLED 0.91(4针 IIC)

    二、基本参数

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

    0ea9a2305af046878e1f5029825a622e.png

            1、引脚说明

    4针IIC引脚

    引脚说明

    GND

    GND引脚接电源地,如果外接电源,一般必须共地

    VCC

    VCC电源引脚,可接3.3V或5V,推荐3.3V

    SCL

    IIC时钟线

    SDA

    IIC数据线

    三、通信协议说明

            IIC通信

                    1、起始信号

                            时序图:

    aa26b1588ca14a5fb0f602bf7e2deb0f.png

                             代码:

    1. //IIC Start
    2. void IIC_Start()
    3. {
    4. OLED_SCL_High;
    5. OLED_SDA_High;
    6. IIC_Delay();
    7. OLED_SDA_Low;
    8. IIC_Delay();
    9. OLED_SCL_Low;
    10. }

                    2、停止信号

                         时序图:

    9535e667e8ba4799a9089847f4b960cd.png

                      代码:

    1. //IIC Stop
    2. void IIC_Stop()
    3. {
    4. OLED_SCL_Low;
    5. OLED_SDA_Low;
    6. IIC_Delay();
    7. OLED_SCL_High;
    8. OLED_SDA_High;
    9. }

                    3、等待应答

                 时序图:

    257630fd209a487eaf2af3af42ea4369.png

                       代码:

    1. //等待信号响应,对应答信号进行判断并添加返回值
    2. uint8_t I2C_WaitAck(void) //测数据信号的电平
    3. {
    4. uint8_t Ack_Sta;
    5. OLED_SDA_High;
    6. IIC_Delay();
    7. OLED_SCL_High;
    8. IIC_Delay();
    9. if(OLED_SDA)
    10. {
    11. Ack_Sta = 1;
    12. }
    13. else
    14. {
    15. Ack_Sta = 0;
    16. }
    17. OLED_SCL_Low;
    18. IIC_Delay();
    19. return Ack_Sta;
    20. }

                    4、发送数据

                         时序图:

    581bd3cd47d34b86a2bae5048e14c220.png

    ff49b4f84f574391aace37052ae8d1d6.png

                        代码:

    1. // 通过I2C总线写一个字节
    2. uint8_t Write_IIC_Byte(uint8_t IIC_Byte)
    3. {
    4. uint8_t i;
    5. for(i=0;i<8;i++)
    6. {
    7. if(IIC_Byte & 0x80)
    8. {
    9. OLED_SDA_High;
    10. }
    11. else
    12. {
    13. OLED_SDA_Low;
    14. }
    15. IIC_Delay();
    16. OLED_SCL_High;
    17. IIC_Delay();
    18. OLED_SCL_Low;
    19. IIC_Byte<<=1;
    20. }
    21. return I2C_WaitAck();
    22. }

    四、部分代码说明

            1、接线说明

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

                    1.1、STC89C52RC+4针OLED(IIC)

    1. sbit OLED_SCL = P1^0; //串行时钟
    2. sbit OLED_SDA = P1^1; //串行数据
    3. sbit OLED_RES = P1^2; //

                    1.2、STM32F103C8T6+4针OLED(IIC)

    1. //IIC 对应IO口高低电平 宏定义
    2. //RES引脚
    3. #define       OLED_RES_CLK                 RCC_APB2Periph_GPIOB   
    4. #define       OLED_RES_PORT                GPIOB   
    5. #define       OLED_RES_PIN                 GPIO_Pin_5
    6. //SCL//DO
    7. #define       OLED_SCL_CLK                 RCC_APB2Periph_GPIOB    
    8. #define       OLED_SCL_PORT                GPIOB
    9. #define       OLED_SCL_PIN                 GPIO_Pin_6      
    10. //SDA//DI
    11. #define       OLED_SDA_CLK                 RCC_APB2Periph_GPIOB    
    12. #define       OLED_SDA_PORT                GPIOB
    13. #define       OLED_SDA_PIN                 GPIO_Pin_7

            2、背光参数

                    如需改OLED显示亮度可改Brightness宏定义,范围0x00~0xff,

    1. //背光亮度调节宏定义,0x00~0xff
    2. #define Brightness 0xCF
    3. WriteCmd(0x81); //--set contrast control register//设置对比度,也就是亮度
    4. WriteCmd(Brightness); //亮度调节 0x00~0xff

    五、相关资料

    1. STC89C52RC程序下载 直戳跳转
    2. STM32F103C8T6程序下载
      1. 串口下载                直戳跳转 
      2. ST-LINK下载             直戳跳转
      3. J-LINK下载              直戳跳转
      4. DAP-LINK下载            直戳跳转
    3. 字符软件使用    直戳跳转

    六、字符图片提取格式

    文字格式:共阴——列行式——逆向——C51——行前后缀括号去掉

    66a75ea3f71e48ccb3a84f8872f3b8a7.png

    图像格式:共阴——列行式——逆向——C51——行前后缀括号去掉

    c1be2d0942c249649cc29e8caedc845e.png

     七、视频效果展示与程序资料获取

            视频连接    直戳跳转

            资料获取            ( 滑到最后添加群号看公告免费获取)

    八、项目所有材料清单

    STC89C52RC驱动方案图片STM32F103C8T6驱动方案图片

    备注

    K_A00_002

    STC89C52RC系统板X1

    d02da46846ca459c9e4f3951401e1e64.jpeg

    STM32F103C8T6系统板X1

    986ce99c5cea4609af18100a1ae62ac0.jpeg

    1. OLED4针和7针看需要选一种即可
    2. STM32系统板两根Micro USB线一根用于J-LINK下载器,另一根用于给系统板供电
    3. 杜邦线建议不用太长的
    OLED 0.91 4针X1da20fc98740c4e349a728bcd86839fda.jpegOLED 0.91 4针X1cc2c98c55c934edcbdbb00b4ff7cf2ff.jpeg
    Micro USB线X17c133ab29b624046b972033586e218f9.jpegMicro USB线X1f2356729d5f8405785de34180369baf6.jpeg
    母母杜邦线X79df1a70e96cf443bb6a296894d80f40a.jpeg母母杜邦线X77fd0940a9b654deb98420ce6fcf3b750.jpeg
    J-LINK下载器aabd950edd8149ceaa82382bbb1fcf58.jpeg

     九、注意事项

    1. VCC GND请勿接反,接反易烧
    2. 显示异常时,排除接线接触不良
    3. 同程序换其他同类屏幕后需要按单片机复位才会正常显示
    4. 不同尺寸OLED屏幕程序并不完全兼容
    5. 下载后显示多出一些杂点的时候可以重新上电复位下 

    十、接线表格

    单片机型号

    模块

    对应引脚(上:模块引脚 下:单片机引脚)

    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


     

  • 相关阅读:
    增量备份的保留策略
    通过R Studio用Markdown写Beamer
    学习typescript(1)
    万字详解数据结构——树
    易基因|深度综述:表观遗传机制在慢性疼痛中的作用(DNA甲基化+组蛋白修饰+非编码RNA)
    Coggle 30 Days of ML【打卡】广告-信息流跨域ctr预估
    js之继承
    linux常用命令记录
    QT 智能指针注意事项(备忘)
    【深入理解设计模式】单例设计模式
  • 原文地址:https://blog.csdn.net/lfmnlxx79691557/article/details/127416728