BWSU 发表于 2024-7-21 11:28:45

51单片机(STC8H8K64U/STC8051U34K64)_RA8889_硬件I2C_参考代码(v1.3)

本篇介绍单片机使用硬件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硬件接线≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
I2C_SDA      <---> 接RA8889的SDA      DB (XSDA)
I2C_SCK      ----> 接RA8889的SCL      DB (XSCL)
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硬件接线≡≡≡≡≡≡≡≡≡≡≡≡≡≡
I2C_SDA      <---> 接RA8889的SDA      DB (XSDA)
I2C_SCK      ----> 接RA8889的SCL      DB (XSCL)
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=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=32。 I2C总线速度:Fosc/2/(MSSPEED*2+4),在12MHz时当前通信速度约88KHz
      I2CPSCR = 0x00;                              //I2C时钟分频高位 MSSPEED=0
      I2CMSST = 0x00;                              //I2C主机状态寄存器清0
}***注意:二者对I2C接口定义不同,寄存器要求也略微不同,故初始化有轻微差异,实际使用时务必要注意!同时头文件也要注意引用。


15. RA8889开发板的补充说明:
(1)PS跳线,I2C通信方式请配置为11x:


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


【源码下载】




推荐压缩软件7z,免费开源,小巧且无广告,官方下载:https://7-zip.org

页: [1]
查看完整版本: 51单片机(STC8H8K64U/STC8051U34K64)_RA8889_硬件I2C_参考代码(v1.3)