码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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


     

  • 相关阅读:
    高性能MySQL实战第09讲:如何做到MySQL的高可用?
    1457. Pseudo-Palindromic Paths in a Binary Tree
    php 获取每月开始结束时间,指定月份的开始结束时间戳
    肝爆3w字整理出这50道计算机网络必问面试题
    Banana Pi BPI-M7 迷你尺寸开源硬件开发板采用瑞芯微RK3588芯片设计
    WMS系统是什么——史上最全WMS介绍
    浅谈软件危机
    类和对象【上】
    超宽带uwb精准定位,厘米级室内定位技术,实时高精度方案应用
    item_recommend - 获取推荐商品列表
  • 原文地址:https://blog.csdn.net/lfmnlxx79691557/article/details/127416728
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号