当前位置: 首页 > news >正文

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.3I2CCFG = 0xE0;                                //使能I2C + 主机模式 + MSSPEED[5:0]=100000b=32,I2C总线速度:Fosc/2/(MSSPEED*2+4),在12MHz时当前通信速度约88KHzI2CMSST = 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.3I2CCFG = 0xE0;                                //使能I2C + 主机模式 + MSSPEED[5:0]=32。 I2C总线速度:Fosc/2/(MSSPEED*2+4),在12MHz时当前通信速度约88KHzI2CPSCR = 0x00;                                //I2C时钟分频高位 MSSPEED[13:6]=0I2CMSST = 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。

【源码下载】

请到原文下载。

相关文章:

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

本篇介绍单片机使用硬件I2C方式控制RA8889驱动彩屏。 提供STC8H8K64U和STC8051U34K64的参考代码。 【硬件部份】STC8H8K64U/STC8051U34K64 RA8889开发板 7寸TFT 800x480 1. 实物连接图&#xff1a;STC8H8K64URA8889开发板&#xff0c;使用P2口I2C接口&#xff1a; 2.实物连…...

【Python其他检查字符串占字节数的方法】

在Python中&#xff0c;检查字符串在特定编码下占用的字节数&#xff0c;最标准且常用的方法是通过字符串的.encode()方法将字符串转换为字节串&#xff0c;然后使用len()函数来获取这个字节串的长度。这是因为字符串&#xff08;在Python 3中&#xff09;是以Unicode形式存储的…...

梧桐数据库: 数据库技术中的重写子查询技术

数据库技术中的重写子查询技术&#xff0c;是数据库查询优化的一种重要手段。该技术主要通过改变子查询的形式&#xff0c;使其在执行效率和性能上得到优化。以下是对重写子查询技术的详细解析&#xff1a; 一、定义与目的 定义&#xff1a;重写子查询技术是指在数据库查询优…...

PHP连接MySQL数据库

PHP本身不具备操作MySQL数据库的能力&#xff0c;需要借助MySQL扩展来实现。 1、PHP加载MySQL扩展&#xff1a;php.ini文件中。&#xff08;不要用记事本打开&#xff09; 2、PHP中所有扩展都是在ext的文件夹中&#xff0c;需要指定扩展所在路径&#xff1a;extension_dir。 3、…...

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

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

error `slot` attributes are deprecated vue/no-deprecated-slot-attribute

旧的代码如下&#xff1a; <template slot"title">{{ item.title }}</template> {{ item.title }} 是一个模板标签&#xff0c;它在模板中插入了一个元素&#xff08;slot&#xff09;&#xff0c;并指定了元素的名称为 “title”。这个标签在模板中显示…...

Websocket自动消息回复服务端工具

点击下载《Websocket自动消息回复服务端工具》 1. 前言 在进行Websocket开发时&#xff0c;前端小伙伴通常是和后端开发人员同步进行项目开发&#xff0c;经常会遇到后端开发人员接口还没开发完&#xff0c;也没有可以调试的环境&#xff0c;只能按照接口文档进行“脑回路开发…...

【软考】UML中的关联关系

目录 一、说明二、具体类型2.1 普通关联2.2 单向关联2.3 双向关联2.4 自关联2.4 聚合关系&#xff08;Aggregation&#xff09;2.5 组合关系&#xff08;Composition&#xff09; 三、关联关系中的多重性 一、说明 1.UML&#xff08;Unified Modeling Language&#xff0c;统一…...

贪吃蛇超精讲(C语言)

前言 如果你还是个萌新小白&#xff0c;那么该项目的攻克过程一定会十分艰难。虽然作者已经将文章尽可能写的逻辑清晰&#xff0c;内容详细。但所谓“纸上得来终觉浅”&#xff0c;在讲到陌生结构和函数时&#xff0c;大家请一定自己动手去敲一遍代码&#xff0c;这很重要&…...

掌握Rust:函数、闭包与迭代器的综合运用

掌握Rust&#xff1a;函数、闭包与迭代器的综合运用 引言&#xff1a;解锁 Rust 高效编程的钥匙函数定义与模式匹配&#xff1a;构建逻辑的基石高阶函数与闭包&#xff1a;代码复用的艺术迭代器与 for 循环&#xff1a;高效数据处理的引擎综合应用案例&#xff1a;构建一个简易…...

【LeetCode】80.删除有序数组中的重复项II

1. 题目 2. 分析 3. 代码 class Solution:def removeDuplicates(self, nums: List[int]) -> int:if len(nums) < 3:return len(nums)i 0j 1k 2while(k < len(nums)):if (nums[i] nums[j]):while(k < len(nums) and nums[j] nums[k] ):k1if (k < len(nums…...

Armpro搭建教程全开源版的教程

Armpro搭建教程 全开源版的教程&#xff0c;其他未知 资源宝整理分享 www.httple.net 首先ssh执行指令安装运行环境 yum install java-1.8.0-openjdk* -y导入文件服务器 导入arm.zip到www目录下然后解压 导入jar包.zip到www目录然后解压 导入basic.zip到www目录然后解压在宝塔…...

nginx基本原理

进程模型 当nginx启动之后&#xff0c;会有一个master进程和多个worker进程。默认是一个worker进程。 master进程的作用&#xff1a;接收来自外界信号&#xff0c;向各worker进程发送信号&#xff0c;监控worker进程的运行状态&#xff0c;当worker进程在异常情况下退出后&am…...

在 CI/CD Pipeline 中实施持续测试的最佳实践!

随着软件开发周期的不断加快&#xff0c;持续集成&#xff08;CI&#xff09;和持续交付/部署&#xff08;CD&#xff09;已经成为现代软件开发的重要组成部分。在这一过程中&#xff0c;持续测试的实施对于确保代码质量、提高发布效率至关重要。本文将详细介绍在CI/CD流水线中…...

数据结构 —— B树

数据结构 —— B树 B树B树的插入操作分裂孩子分裂父亲分裂 我们之前学过了各种各样的树&#xff0c;二叉树&#xff0c;搜索二叉树&#xff0c;平衡二叉树&#xff0c;红黑树等等等等&#xff0c;其中平衡二叉树和红黑树都是控制树的高度来控制查找次数。 但是&#xff0c;这都…...

Redis 深度历险:核心原理与应用实践 - 读书笔记

目录 第一章 基础应用篇Zset并发问题 - 分布式锁再谈分布式锁客户端在请求时加锁失败策略redis异步队列位图Hyperloglog布隆过滤器GeoHashscan 命令字典结构rehash扩容大 key 扫描 第二章 原理篇线程IO模型RESP 序列化协议持久化管道事务PubSub内存管理 第三章 集群篇CAP主从同…...

微服务重启优化kafka+EurekaNotificationServerListUpdater

由于遇到服务重启导致的业务中断等异常&#xff0c;所以计划通过kafkaeureka实现服务下线通知&#xff0c;来尽可能规避这类问题。 如果可以升级spring&#xff0c;则可以考虑nacos等更为方便的方案&#xff1b; 程序优化&#xff1a; 1.默认启用的为 PollingServerListUpdater…...

removeIf 方法设计理念及泛型界限限定

ArrayList 中的 removeIf 方法是 Java 8 中引入的集合操作方法之一。它使用了 Predicate 接口作为参数&#xff0c;以便根据指定的条件移除集合中的元素。以下是对 removeIf 方法入参设计的详细解释&#xff1a; Predicate 接口 Predicate 是一个函数式接口&#xff0c;定义了…...

kubernetes集群部署elasticsearch集群,包含无认证和有认证模式

1、背景&#xff1a; 因公司业务需要&#xff0c;需要在测试、生产kubernetes集群中部署elasticsearch集群&#xff0c;因不同环境要求&#xff0c;需要部署不同模式的elasticsearch集群&#xff0c; 1、测试环境因安全性要求不高&#xff0c;是部署一套默认配置&#xff1b; 2…...

Java 随笔记: 集合与泛型

文章目录 1. 集合框架概述2. 集合接口2.1 Collection 接口2.2 List 接口2.3 Set 接口2.4 Map 接口 3. 集合的常用操作3.1 添加元素3.2 删除元素3.3 遍历元素3.4 判断大小3.5 判断是否为空 4. 迭代器4.1 迭代器的作用4.2 迭代器的使用4.3 迭代器与增强 for 循环4.4 迭代器的注意…...

AI Agent技能生成器:从零创建精准高效的SKILL.md文件

1. 项目概述&#xff1a;一个为AI Agent生成“技能说明书”的元技能如果你和我一样&#xff0c;经常在Claude Code、Cursor或者Codex这类AI编程助手工具里折腾&#xff0c;想让它帮你处理一些特定的、重复性的开发任务&#xff0c;那你肯定对“技能”&#xff08;Skill&#xf…...

2025届学术党必备的六大AI辅助论文神器解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 该AI开题报告工具&#xff0c;针对硕博研究生&#xff0c;针对本科毕业论文创作者&#xff0…...

ComfyUI-Impact-Pack完整安装指南:解决AI图像增强插件功能缺失问题

ComfyUI-Impact-Pack完整安装指南&#xff1a;解决AI图像增强插件功能缺失问题 【免费下载链接】ComfyUI-Impact-Pack Custom nodes pack for ComfyUI This custom node helps to conveniently enhance images through Detector, Detailer, Upscaler, Pipe, and more. 项目地…...

Andorid下给PDF盖骑缝章的方法—安卓手机批量盖骑缝章的方法

Andorid下给PDF盖骑缝章的方法&#xff0c;安卓手机批量盖骑缝章的方法。一、准备印章图片1。不需要制作为透明的印章&#xff0c;用白底Png格式图片即可&#xff0c;白底图片盖章时软件会自动透明并融合。2。印章边线与图片四边不要有空隙&#xff0c;如下&#xff1a;错误的&…...

光纤偏振测量:从琼斯矢量到庞加莱球,六种工具深度解析与工程实践

1. 从一道周五小测题说起&#xff1a;光纤测量中的偏振态表征上周五&#xff0c;我在整理旧资料时&#xff0c;翻到了EE Times在2015年发布的一篇“周五小测”文章&#xff0c;主题是光纤光学测量。其中第一道题就很有意思&#xff0c;它问的是&#xff1a;“以下哪种工具不能用…...

嵌入式系统调试技术:从JTAG到多核同步的实战指南

1. 嵌入式系统调试技术概述在嵌入式系统开发过程中&#xff0c;调试环节往往占据整个开发周期的40%-60%时间。与通用计算机系统不同&#xff0c;嵌入式系统通常运行在资源受限的环境中&#xff0c;缺乏标准输入输出设备&#xff0c;这使得调试工作更具挑战性。我曾参与过多个工…...

别再只调pool_size了!MaxPool2D的strides和padding参数实战避坑指南(附TensorFlow/Keras代码)

MaxPool2D参数深度解析&#xff1a;如何用strides和padding精准控制特征图尺寸 在构建卷积神经网络时&#xff0c;池化层的参数设置往往被当作"调参黑箱"一带而过。许多开发者习惯性地只调整pool_size&#xff0c;却对strides和padding参数的微妙影响缺乏足够重视。这…...

别只盯着SQL了!GaussDB健康度巡检,这5个‘外围’命令和日志文件更重要

别只盯着SQL了&#xff01;GaussDB健康度巡检&#xff0c;这5个‘外围’命令和日志文件更重要 当数据库出现性能波动时&#xff0c;大多数DBA的第一反应是检查慢SQL或调整参数。但根据某金融客户的生产环境统计&#xff0c;超过60%的数据库故障其实源于日志溢出、网络闪断或备份…...

SteamAutoCrack技术深度解析:架构设计与实现原理揭秘

SteamAutoCrack技术深度解析&#xff1a;架构设计与实现原理揭秘 【免费下载链接】Steam-auto-crack Steam Game Automatic Cracker 项目地址: https://gitcode.com/gh_mirrors/st/Steam-auto-crack SteamAutoCrack是一款基于.NET 10.0框架开发的Steam游戏自动破解工具&…...

Linux调试利器:用addr2line精准定位程序崩溃现场

1. 当程序崩溃时&#xff0c;我们该如何快速定位问题&#xff1f; 作为一名长期奋战在Linux开发一线的程序员&#xff0c;我最头疼的就是遇到程序突然崩溃的情况。那种看着终端输出"Segmentation fault (core dumped)"却无从下手的无力感&#xff0c;相信很多开发者都…...