找回密码
 立即注册
搜索
热搜: RA8889 RA8876 RA8875
查看: 605|回复: 0

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

[复制链接]

50

主题

3

回帖

591

积分

管理员

积分
591
QQ
发表于 2024-7-21 11:28:45 | 显示全部楼层 |阅读模式
本篇介绍单片机使用硬件I2C方式控制RA8889驱动彩屏。
提供STC8H8K64USTC8051U34K64的参考代码。

【硬件部份】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文件中进行配置定义:
  1. /* I2C IO口配置*/
  2. sbit I2C_SDA  = P2 ^ 4;         //I2C数据线(接入RA8889/RA8876之DB6)
  3. sbit I2C_SCK  = P2 ^ 5;         //I2C时钟(接入RA8889/RA8876之DB7)
  4. 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文件中进行配置定义:
  1. /* I2C IO口配置*/
  2. sbit I2C_SDA  = P2 ^ 3;         //I2C数据线(接入RA8889/RA8876之DB6)
  3. sbit I2C_SCK  = P2 ^ 4;         //I2C时钟(接入RA8889/RA8876之DB7)
  4. sbit RA8889_RST  = P2 ^ 2;         //RA8889/RA8876复位脚
复制代码


11. STC8H8K64U配置IO口:
在main.c中配置I2C的IO口:
  1. P2M0 = 0xff; P2M1 = 0x30;                //设置P2.4~2.5为开漏【注意:这两脚需要上拉电阻 1~10K】,其它为推挽模式
复制代码


12. STC8051U34K64配置IO口:
在main.c中配置I2C的IO口:
  1. P2M0 = 0xff; P2M1 = 0x18;                //设置P2.3~2.4为开漏【注意:这两脚需要上拉电阻 1~10K】,其它为推挽模式
复制代码


13. STC8H8K64U的I2C初始化:
在RA8889_MCU_IF.c文件中设定I2C初始化:
  1. /* I2C初始化 */
  2. void I2C_Initial(void)
  3. {
  4.       P_SW2 |= 0x80;                                 //扩展寄存器(XFR)访问使能
  5.       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
  6.       I2CCFG = 0xE0;                                //使能I2C + 主机模式 + MSSPEED[5:0]=100000b=32,I2C总线速度:Fosc/2/(MSSPEED*2+4),在12MHz时当前通信速度约88KHz
  7.       I2CMSST = 0x00;                                //I2C主机状态寄存器清0
  8. }
复制代码
14. STC8051U34K64的I2C初始化:
在RA8889_MCU_IF.c文件中设定I2C初始化:
  1. /* I2C初始化 */
  2. void I2C_Initial(void)
  3. {
  4.       P_SW2 |= 0x80;                                 //扩展寄存器(XFR)访问使能
  5.       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
  6.       I2CCFG = 0xE0;                                //使能I2C + 主机模式 + MSSPEED[5:0]=32。 I2C总线速度:Fosc/2/(MSSPEED*2+4),在12MHz时当前通信速度约88KHz
  7.       I2CPSCR = 0x00;                                //I2C时钟分频高位 MSSPEED[13:6]=0
  8.       I2CMSST = 0x00;                                //I2C主机状态寄存器清0
  9. }
复制代码
***注意:二者对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。


【源码下载】




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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|Lcdvision Technology ( 苏ICP备10203891号 )

GMT+8, 2024-11-21 14:26 , Processed in 0.135756 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表