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。

【源码下载】

请到原文下载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/842861.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ISP代理和双ISP代理:区别和优势

随着互联网技术的不断发展和普及&#xff0c;网络代理服务成为众多用户保护隐私、提高网络性能、增强安全性的重要工具。其中&#xff0c;ISP代理和双ISP代理是两种常见的网络代理服务形式。本文将详细探讨ISP代理和双ISP代理的区别和优势&#xff0c;以便用户更好地了解并选择…

【LeetCode】填充每个节点的下一个右侧节点指针 II

目录 一、题目二、解法完整代码 一、题目 给定一个二叉树&#xff1a; struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针&#xff0c;让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点&#xff0c;则将 next 指针设置为 NUL…

MySQL学习作业二

作业描述 SQL语言 建库&#xff0c;使用库 mysql> create database mydb8_worker;#新建库mysql> use mydb8_worker; 建表&#xff0c;查看表 #建表 mysql> create table t_worker(department_id int(11) not null comment部门号,worker_id int(11) primary key no…

Flink History Server配置

目录 问题复现 History Server配置 HADOOP_CLASSPATH配置 History Server配置 问题修复 启动flink集群 启动Histroty Server 问题复现 在bigdata111上执行如下命令开启socket&#xff1a; nc -lk 9999 如图&#xff1a; 在bigdata111上执行如下命令运行flink应用程序 …

使用IDEA编写lua脚本并运行

下载lua https://github.com/rjpcomputing/luaforwindows/releases 是否创建桌面快捷方式&#xff1a;我们的目标是使用IDEA编写lua脚本&#xff0c;所以不需要勾选。后面需要的话&#xff0c;可以到安装目录下手动创建快捷方式 环境变量自动配置 安装后会自动配置好环境变量…

影响转化率的多元因素分析及定制开发AI智能名片S2B2C商城系统小程序的应用案例

摘要&#xff1a;在互联网时代&#xff0c;转化率是衡量营销活动成功与否的关键指标。本文首先分析了影响转化率的多种因素&#xff0c;包括活动页面的设计、活动的限时性、主题文案的吸引力、从众心理的运用&#xff0c;以及最核心的产品质量与优惠力度。接着&#xff0c;本文…

PyTorch深度学习实战——使用深度Q学习进行Pong游戏

PyTorch深度学习实战——使用深度Q学习进行Pong游戏 0. 前言1. 结合固定目标网络的深度 Q 学习模型1.1 模型输入1.2 模型策略 2. 实现深度 Q 学习进行 Pong 游戏相关链接 0. 前言 我们已经学习了如何利用深度 Q 学习来进行 Gym 中的 CartPole 游戏。在本节中&#xff0c;我们将…

Redis之List列表

目录 一.列表讲解 二.列表命令 三.内部编码 四.应用场景 Redis的学习专栏&#xff1a;http://t.csdnimg.cn/a8cvV 一.列表讲解 列表类型是用来存储多个有序的字符串&#xff0c;如下所示&#xff0c;a、b、c、d、e五个元素从左到右组成了一个有序的列表&#xff0c;列表中的…

git使用、git与idea结合、gitee、gitlab

本文章基于黑马程序javase模块中的"git"部分 先言:git在集成idea中,不同版本的idea中页面显示不同,操作时更注重基于选项的文字;git基于命令操作参考文档实现即可,idea工具继承使用重点掌握 1.git概述 git是目前世界上最先进的分布式文件版本控制系统 分布式:将…

快手矩阵系统全解析:功能、优势与特点一网打尽

在数字化时代&#xff0c;短视频已成为连接创作者与观众的重要媒介。快手矩阵系统以其独特的功能和优势&#xff0c;为短视频的创作、管理和发布提供了一站式解决方案&#xff0c;极大地提升了内容运营的效率和效果。 功能概览 智能创作&#xff1a;AI技术的应用使得快手矩阵…

ELK日志管理与应用

目录 一.ELK收集nginx日志 二.收集tomcat日志 三.Filebeat 一.ELK收集nginx日志 1.搭建好ELKlogstashkibana架构 2.关闭防火墙和selinux systemctl stop firewalld setenforce 0 3.安装nginx [rootlocalhost ~]# yum install epel-release.noarch -y [rootlocalhost …

因果推断 | 双重机器学习(DML)算法原理和实例应用

文章目录 1 引言2 DML算法原理2.1 问题阐述2.2 DML算法 3 DML代码实现3.1 策略变量为0/1变量3.2 策略变量为连续变量 4 总结5 相关阅读 1 引言 小伙伴们&#xff0c;好久不见呀。 距离上次更新已经过去了一个半月&#xff0c;上次发文章时还信誓旦旦地表达自己后续目标是3周更…

elementUI在手机端使用遇到的问题总结

之前的博客有写过用vue2elementUI封装手机端选择器picker组件&#xff0c;支持单选、多选、远程搜索多选&#xff0c;最终真机调试的时候发现有很多细节样式需要调整。此篇博客记录下我调试过程中遇到的问题和解决方法。 一、手机真机怎么连电脑本地代码调试&#xff1f; 1.确…

Spring通过工厂方法进行配置

在Spring的世界中&#xff0c; 我们通常会利用 xml配置文件 或者 annotation注解方式来配置bean实例&#xff01; 在第一种利用 xml配置文件 方式中&#xff0c; 还包括如下三小类 反射模式&#xff08;我们前面的所有配置都是这种模式&#xff09;工厂方法模式Factory Bean模…

linux shell脚本编程(分支语句、循环语句)

一、分支语句 1、语法结构 : if 表达式 then 命令表 fi 如果表达式为真 , 则执行命令表中的命令 ; 否则退出 if 语句 , 即执行 fi 后面的语句。 if 和 fi 是条件语句的语句括号 , 必须成对使用 ;命令表中的命令可以是一条 , 也可以是若干条。 2、语法结构为 : if 表达式 t…

CSS3实现提示工具的渐入渐出效果及CSS3动画简介

上一篇文章用CSS3实现了一个提示工具&#xff0c;本文介绍如何利用CSS3实现提示工具以渐入的方式呈现&#xff0c;以渐出的方式消失。 CSS3主要可以通过两个样式来实现动画效果&#xff1a;animation和transition。 其中&#xff0c;animation需要自己定义一组关键帧从而实现…

vue使用x6画流程图,简单使用

官网 https://x6.antv.antgroup.com/tutorial/getting-started 安装 npm install antv/x6 --save 使用 <template><div>3333<div id"container" style"width: 800px;height: 800px;"></div></div> </template> <…

详细分析Springboot自定义启动界面(附Demo)

目录 前言1. banner.text1.1 配置文件关闭1.2 启动类关闭1.3 命令行关闭 2. 自定义Banner类3. 自动配置类4. 总结 前言 实现自定义启动动画是一项有趣的任务&#xff0c;虽然Spring Boot本身不提供内置的动画功能&#xff0c;但可以通过一些技巧来实现 以下主要以Demo的形式展…

Linux系统学习日记——vim操作手册

Vim编辑器是linux下的一个命令行编辑器&#xff0c;类似于我们windows下的记事本。 目录 打开文件 编辑 保存退出 打开文件 打开 hello.c不存在也可以打开&#xff0c;保存时vim会自动创建。 效果 Vim打开时&#xff0c;处于命令模式&#xff0c;即执行命令的模式&#x…

STM32自己从零开始实操:PCB全过程

一、PCB总体分布 以下只能让大家看到各个模块大致分布在板子的哪一块&#xff0c;只能说每个人画都有自己的理由&#xff1a; 电源&#xff1a;从外部接入电源&#xff0c;5V接到中间&#xff0c;向上变成4V供给无线&#xff0c;向下变成3V供给下面的接口&#xff08;也刻意放…