51单片机(STC8H8K64U/STC8051U34K64)_RA8889驱动TFT大屏_I2C_HW参考代码(v1.3) 硬件I2C方式

本篇介绍单片机使用硬件I2C方式控制RA8889驱动彩屏。
提供STC8H8K64U和STC8051U34K64的参考代码。

【硬件部份】STC8H8K64U/STC8051U34K64 + RA8889开发板 + 7寸TFT 800x480

1. 实物连接图:STC8H8K64U+RA8889开发板,使用P2口I2C接口:

在这里插入图片描述

2.实物连接图:STC8051U34K64+RA8889开发板,使用P2口I2C接口:

在这里插入图片描述

3.RA8889的I2C电路连接图:

在这里插入图片描述

4.RA8889开发板的接口说明,I2C接口主要使用到DB6(SDA)和DB7(SCK):

在这里插入图片描述

5.单片机的引脚图:STC8H8K64U:

在这里插入图片描述

6.单片机的引脚图:STC8051U34K64:

在这里插入图片描述

7. STC8H8K64U与RA8889开发板详细连接说明:

在这里插入图片描述

8. STC8051U34K64与RA8889开发板详细连接说明:

在这里插入图片描述

【软件部份】

9. STC8H8K64U与RA8889的连接:

≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡STC8H8K64U硬件接线≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
[P2.4]I2C_SDA <—> 接RA8889的SDA DB[6] (XSDA)
[P2.5]I2C_SCK ----> 接RA8889的SCL DB[7] (XSCL)
[P2.3]GPIO ----> RA8889的复位 RA8889_RST
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
在RA8889_MCU_IF.h文件中进行配置定义:

/* I2C IO口配置*/
sbit I2C_SDA  = P2 ^ 4;         //I2C数据线(接入RA8889/RA8876之DB6)
sbit I2C_SCK  = P2 ^ 5;         //I2C时钟(接入RA8889/RA8876之DB7)
sbit RA8889_RST  = P2 ^ 3;         //RA8889/RA8876复位脚

10. STC8051U34K64与RA8889的连接:

≡≡≡≡≡≡≡≡≡≡≡≡≡≡STC8051U34K64硬件接线≡≡≡≡≡≡≡≡≡≡≡≡≡≡
[P2.3]I2C_SDA <—> 接RA8889的SDA DB[6] (XSDA)
[P2.4]I2C_SCK ----> 接RA8889的SCL DB[7] (XSCL)
[P2.2]GPIO ----> RA8889的复位 RA8889_RST
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
在RA8889_MCU_IF.h文件中进行配置定义:

/* I2C IO口配置*/
sbit I2C_SDA  = P2 ^ 3;         //I2C数据线(接入RA8889/RA8876之DB6)
sbit I2C_SCK  = P2 ^ 4;         //I2C时钟(接入RA8889/RA8876之DB7)
sbit RA8889_RST  = P2 ^ 2;         //RA8889/RA8876复位脚

11. STC8H8K64U配置IO口:

在main.c中配置I2C的IO口:

 P2M0 = 0xff; P2M1 = 0x30;                //设置P2.4~2.5为开漏【注意:这两脚需要上拉电阻 1~10K】,其它为推挽模式

12. STC8051U34K64配置IO口:

在main.c中配置I2C的IO口:

P2M0 = 0xff; P2M1 = 0x18;                //设置P2.3~2.4为开漏【注意:这两脚需要上拉电阻 1~10K】,其它为推挽模式

13. STC8H8K64U的I2C初始化:

在RA8889_MCU_IF.c文件中设定I2C初始化:

/* I2C初始化 */
void I2C_Initial(void)
{
    P_SW2 |= 0x80;                                 //扩展寄存器(XFR)访问使能
    P_SW2 |= 0x10;                                //I2C选择P2.5/SCK,P2.4/SDA,        00:P1.5,P1.4; 01:P2.5,P2.4; 10:P7.7,P7.6; 11:P3.2,P3.3
    I2CCFG = 0xE0;                                //使能I2C + 主机模式 + MSSPEED[5:0]=100000b=32,I2C总线速度:Fosc/2/(MSSPEED*2+4),在12MHz时当前通信速度约88KHz
    I2CMSST = 0x00;                                //I2C主机状态寄存器清0
}

14. STC8051U34K64的I2C初始化:

在RA8889_MCU_IF.c文件中设定I2C初始化:

/* I2C初始化 */
void I2C_Initial(void)
{
    P_SW2 |= 0x80;                                 //扩展寄存器(XFR)访问使能
    P_SW2 |= 0x00;                                //I2C选择P2.4/SCK,P2.3/SDA,        00:P2.4,P2.3; 01:P1.5,P1.4; 10:N.A.; 11:P3.2,P3.3
    I2CCFG = 0xE0;                                //使能I2C + 主机模式 + MSSPEED[5:0]=32。 I2C总线速度:Fosc/2/(MSSPEED*2+4),在12MHz时当前通信速度约88KHz
    I2CPSCR = 0x00;                                //I2C时钟分频高位 MSSPEED[13:6]=0
    I2CMSST = 0x00;                                //I2C主机状态寄存器清0
}

***注意:二者对I2C接口定义不同,寄存器要求也略微不同,故初始化有轻微差异,实际使用时务必要注意!同时头文件也要注意引用。

15. RA8889开发板的补充说明:

(1)PS[2:0]跳线,I2C通信方式请配置为11x:
在这里插入图片描述

(2)要将RA8889_Demo文件夹内的RA8889_Demo_F103_8080_SPI_floating_firmware.hex下载到开发板上,通过开发板上的MCU将RA8889的MCU接口配置为I2C,同时将I2C的硬件地址配置为:111111。

【源码下载】

请到原文下载

相关推荐

  1. STC8H8K64U 学习笔记 - 与上位机通信

    2024-07-21 18:54:01       25 阅读
  2. STC8H8K64U 学习笔记 - 位运算

    2024-07-21 18:54:01       27 阅读
  3. STC8H8K64U 学习笔记 - 矩阵键盘

    2024-07-21 18:54:01       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 18:54:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 18:54:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 18:54:01       45 阅读
  4. Python语言-面向对象

    2024-07-21 18:54:01       55 阅读

热门阅读

  1. org.mybatis和JDBC有什么关系?

    2024-07-21 18:54:01       17 阅读
  2. JVM调优 jstat 与 jstack

    2024-07-21 18:54:01       16 阅读
  3. 前端入门(五)之练习表格的增删改查

    2024-07-21 18:54:01       18 阅读
  4. MySQL分库分表实现

    2024-07-21 18:54:01       21 阅读
  5. python解析pdf文件

    2024-07-21 18:54:01       17 阅读
  6. NOI2024 - 最终的答案

    2024-07-21 18:54:01       14 阅读
  7. hi.开灯

    hi.开灯

    2024-07-21 18:54:01      17 阅读