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。
【源码下载】
请到原文下载。
相关文章:
![](https://i-blog.csdnimg.cn/direct/cafeb4c1dc224d1f841c1397bca17443.png#pic_center)
51单片机(STC8H8K64U/STC8051U34K64)_RA8889驱动TFT大屏_I2C_HW参考代码(v1.3) 硬件I2C方式
本篇介绍单片机使用硬件I2C方式控制RA8889驱动彩屏。 提供STC8H8K64U和STC8051U34K64的参考代码。 【硬件部份】STC8H8K64U/STC8051U34K64 RA8889开发板 7寸TFT 800x480 1. 实物连接图:STC8H8K64URA8889开发板,使用P2口I2C接口: 2.实物连…...
![](https://www.ngui.cc/images/no-images.jpg)
【Python其他检查字符串占字节数的方法】
在Python中,检查字符串在特定编码下占用的字节数,最标准且常用的方法是通过字符串的.encode()方法将字符串转换为字节串,然后使用len()函数来获取这个字节串的长度。这是因为字符串(在Python 3中)是以Unicode形式存储的…...
![](https://www.ngui.cc/images/no-images.jpg)
梧桐数据库: 数据库技术中的重写子查询技术
数据库技术中的重写子查询技术,是数据库查询优化的一种重要手段。该技术主要通过改变子查询的形式,使其在执行效率和性能上得到优化。以下是对重写子查询技术的详细解析: 一、定义与目的 定义:重写子查询技术是指在数据库查询优…...
![](https://i-blog.csdnimg.cn/direct/5274373681c443beb39914997b6f2735.png)
PHP连接MySQL数据库
PHP本身不具备操作MySQL数据库的能力,需要借助MySQL扩展来实现。 1、PHP加载MySQL扩展:php.ini文件中。(不要用记事本打开) 2、PHP中所有扩展都是在ext的文件夹中,需要指定扩展所在路径:extension_dir。 3、…...
![](https://i-blog.csdnimg.cn/direct/029a2f07c129451b917aa74fecef2830.png)
STM32自己从零开始实操:PCB全过程
一、PCB总体分布 以下只能让大家看到各个模块大致分布在板子的哪一块,只能说每个人画都有自己的理由: 电源:从外部接入电源,5V接到中间,向上变成4V供给无线,向下变成3V供给下面的接口(也刻意放…...
![](https://www.ngui.cc/images/no-images.jpg)
error `slot` attributes are deprecated vue/no-deprecated-slot-attribute
旧的代码如下: <template slot"title">{{ item.title }}</template> {{ item.title }} 是一个模板标签,它在模板中插入了一个元素(slot),并指定了元素的名称为 “title”。这个标签在模板中显示…...
![](https://img-blog.csdnimg.cn/direct/73d4c086b7b748a99e5dfdaa176e42c0.png)
Websocket自动消息回复服务端工具
点击下载《Websocket自动消息回复服务端工具》 1. 前言 在进行Websocket开发时,前端小伙伴通常是和后端开发人员同步进行项目开发,经常会遇到后端开发人员接口还没开发完,也没有可以调试的环境,只能按照接口文档进行“脑回路开发…...
![](https://www.ngui.cc/images/no-images.jpg)
【软考】UML中的关联关系
目录 一、说明二、具体类型2.1 普通关联2.2 单向关联2.3 双向关联2.4 自关联2.4 聚合关系(Aggregation)2.5 组合关系(Composition) 三、关联关系中的多重性 一、说明 1.UML(Unified Modeling Language,统一…...
![](https://i-blog.csdnimg.cn/direct/48f98e0d312d471db6266b307c910511.png)
贪吃蛇超精讲(C语言)
前言 如果你还是个萌新小白,那么该项目的攻克过程一定会十分艰难。虽然作者已经将文章尽可能写的逻辑清晰,内容详细。但所谓“纸上得来终觉浅”,在讲到陌生结构和函数时,大家请一定自己动手去敲一遍代码,这很重要&…...
![](https://i-blog.csdnimg.cn/direct/70ef4d1ac3cc4c6599921bf5532baa23.png)
掌握Rust:函数、闭包与迭代器的综合运用
掌握Rust:函数、闭包与迭代器的综合运用 引言:解锁 Rust 高效编程的钥匙函数定义与模式匹配:构建逻辑的基石高阶函数与闭包:代码复用的艺术迭代器与 for 循环:高效数据处理的引擎综合应用案例:构建一个简易…...
![](https://i-blog.csdnimg.cn/direct/02dd70be1c09447498b379289cafec6c.png)
【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…...
![](https://www.ngui.cc/images/no-images.jpg)
Armpro搭建教程全开源版的教程
Armpro搭建教程 全开源版的教程,其他未知 资源宝整理分享 www.httple.net 首先ssh执行指令安装运行环境 yum install java-1.8.0-openjdk* -y导入文件服务器 导入arm.zip到www目录下然后解压 导入jar包.zip到www目录然后解压 导入basic.zip到www目录然后解压在宝塔…...
![](https://i-blog.csdnimg.cn/direct/c10059171ba047a5b35eb2c40508173c.png#pic_center)
nginx基本原理
进程模型 当nginx启动之后,会有一个master进程和多个worker进程。默认是一个worker进程。 master进程的作用:接收来自外界信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程在异常情况下退出后&am…...
![](https://img-blog.csdnimg.cn/b5d166f9b12b4ce9ba4ef9adcc88eaa1.png)
在 CI/CD Pipeline 中实施持续测试的最佳实践!
随着软件开发周期的不断加快,持续集成(CI)和持续交付/部署(CD)已经成为现代软件开发的重要组成部分。在这一过程中,持续测试的实施对于确保代码质量、提高发布效率至关重要。本文将详细介绍在CI/CD流水线中…...
![](https://i-blog.csdnimg.cn/direct/1a3614d7ce2f469cbdb25e21cc799f93.png)
数据结构 —— B树
数据结构 —— B树 B树B树的插入操作分裂孩子分裂父亲分裂 我们之前学过了各种各样的树,二叉树,搜索二叉树,平衡二叉树,红黑树等等等等,其中平衡二叉树和红黑树都是控制树的高度来控制查找次数。 但是,这都…...
![](https://www.ngui.cc/images/no-images.jpg)
Redis 深度历险:核心原理与应用实践 - 读书笔记
目录 第一章 基础应用篇Zset并发问题 - 分布式锁再谈分布式锁客户端在请求时加锁失败策略redis异步队列位图Hyperloglog布隆过滤器GeoHashscan 命令字典结构rehash扩容大 key 扫描 第二章 原理篇线程IO模型RESP 序列化协议持久化管道事务PubSub内存管理 第三章 集群篇CAP主从同…...
![](https://www.ngui.cc/images/no-images.jpg)
微服务重启优化kafka+EurekaNotificationServerListUpdater
由于遇到服务重启导致的业务中断等异常,所以计划通过kafkaeureka实现服务下线通知,来尽可能规避这类问题。 如果可以升级spring,则可以考虑nacos等更为方便的方案; 程序优化: 1.默认启用的为 PollingServerListUpdater…...
![](https://www.ngui.cc/images/no-images.jpg)
removeIf 方法设计理念及泛型界限限定
ArrayList 中的 removeIf 方法是 Java 8 中引入的集合操作方法之一。它使用了 Predicate 接口作为参数,以便根据指定的条件移除集合中的元素。以下是对 removeIf 方法入参设计的详细解释: Predicate 接口 Predicate 是一个函数式接口,定义了…...
![](https://i-blog.csdnimg.cn/direct/9d90a9ab598840ca933b35826a2d970f.gif)
kubernetes集群部署elasticsearch集群,包含无认证和有认证模式
1、背景: 因公司业务需要,需要在测试、生产kubernetes集群中部署elasticsearch集群,因不同环境要求,需要部署不同模式的elasticsearch集群, 1、测试环境因安全性要求不高,是部署一套默认配置; 2…...
![](https://www.ngui.cc/images/no-images.jpg)
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 迭代器的注意…...
![](https://img-blog.csdnimg.cn/img_convert/9cd4e1aa6395ed63d3350c022ae99647.png)
SurrealDB:高效构建实时Web应用的数据库
SurrealDB:数据驱动,实时协同。用SurrealDB简化你的开发流程- 精选真开源,释放新价值。 概览 SurrealDB,一款专为现代Web应用设计的云原生数据库,以其创新的架构和功能,为开发者提供了一个强大的工具。它整…...
![](https://www.ngui.cc/images/no-images.jpg)
SQL Server查询计划阅读及分析
6.4.5. 查询计划阅读及分析 SQL Server中,SQL语句的查询计划可能会包含多个节点,每个节点除了包含和对应一个操作符外,还包含节点及操作符相关的其他信息,其细节与具体的操作符相关。SQL Server查询计划与Oracle执行计划中,虽然每个节点所包含内容的具体称谓…...
![](https://i-blog.csdnimg.cn/direct/d6101e27ec0549959a75982f1d596fdf.png)
SAP Fiori 实战课程(二):新建页面
课程回顾 上一课中,利用Visual studio Code 新建、并运行了一个Demo工程。可以实现对项目的启动,启动后进入一个List清单。 那么本次课程的目前就是在上一节Demo的基础上,从零开始新建一个完整的页面。实现从首页清单,选择行后,鼠标点击,进入下一个页面。 准备工作 在开…...
![](https://www.ngui.cc/images/no-images.jpg)
【Rust光年纪】超越ORM:探索Rust语言多款数据库客户端库的核心功能和使用场景
数据库操作新选择:从异步操作到连接管理,掌握Rust语言数据库客户端库的全貌 前言 在现代软件开发中,与数据库进行交互是一个常见的任务。Rust语言作为一种高性能、内存安全的编程语言,拥有丰富的生态系统来支持各种数据库操作。…...
![](https://www.ngui.cc/images/no-images.jpg)
解决:事件监听器 addEventListener 被多次调用
背景: 给一个元素添加了事件监听,click 会触发 然而在实际场景中,点击一次,事件会被触发两次 阻止冒泡也没有用 解决: 使用API:event.stopImmediatePropagation() stopImmediatePropagation() 方法可防止…...
![](https://i-blog.csdnimg.cn/direct/c5bad49f6e104a39b713125160fe4b3f.png)
配置RIPv2的认证
目录 一、配置IP地址、默认网关、启用端口 1. 路由器R1 2. 路由器R2 3. 路由器R3 4. Server1 5. Server2 二、搭建RIPv2网络 1. R1配置RIPv2 2. R2配置RIPv2 3. Server1 ping Server2 4. Server2 ping Server1 三、模拟网络攻击,为R3配置RIPv2 四、在R…...
![](https://i-blog.csdnimg.cn/direct/1d4da869824647f688af9f81f42eca97.png)
前端调试技巧:动态高亮渲染区域
效果: 前端界面的渲染过程、次数,会通过高亮变化来显示,通过这种效果排除一些BUG 高亮 打开方式 F12进入后点击ESC,进入rendering,选择前三个即可(如果没有rendering,点击橘色部分勾选上&…...
![](https://www.ngui.cc/images/no-images.jpg)
深克隆与浅克隆的区别与实现
在软件开发中,克隆对象是一个常见需求。克隆的方式主要有两种:深克隆(Deep Clone)和浅克隆(Shallow Clone)。了解它们的区别及其实现方法,对于编写高效、安全的代码非常重要。 深克隆与浅克隆的…...
![](https://i-blog.csdnimg.cn/direct/9c6266b263af4929943a83aeeb0f3719.png)
【学习笔记】无人机系统(UAS)的连接、识别和跟踪(六)-无人机直接C2通信
目录 引言 5.4 直接C2通信 5.4.1 概述 5.4.2 A2X直接C2通信服务的授权策略 5.4.3 USS使用A2X直接C2通信服务的C2授权程序 5.4.4 直接C2通信建立程序 引言 3GPP TS 23.256 技术规范,主要定义了3GPP系统对无人机(UAV)的连接性、身份识别…...
![](https://i-blog.csdnimg.cn/direct/efaff5333be84ddaa306af24b29e26f3.png)
认识和安装R的扩展包,什么是模糊搜索安装,工作目录和空间的区别与设置
R语言以其强大的功能和灵活的扩展性,成为了无数数据分析师和研究者的首选工具。R的丰富功能和海量扩展包直接相关,但如何高效管理这些扩展包,进而充分发挥R的强大潜力?本文将为您揭示这些问题的答案。 一、R的扩展包 R的包(packages)是由R函数、数据和预编译代码组成的一…...
![](/images/no-images.jpg)
委托 网站开发 进什么费用/网课培训机构排名前十
1、OOP对象属性与方法 object helloworld {def main(args: Array[String]) {//定义一个对象,对象里面有私有属性和方法class Person {//Scala里面的字段都包括了方法 私有属性val包括了get()和set()防范//val 属性包括了get()方法private va…...
![](/images/no-images.jpg)
怎么做网站的导航/seo免费浏览网站
3、在解决方案的资源管理器中右键你的EyreFree.cpp文件 -> 属性 -> 找到预编译头 -> 在预编译头中选择不适用预编译头。同时去 stdafx.h 头文件中将【#define WIN32_LEAN_AND_MEAN】该句代码注释掉或删掉。4、将 C:\Program Files (x86)\Java\jdk1.7.0_17\include (JD…...
![](https://img-blog.csdnimg.cn/20210218151404877.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JpZWJlcjAwNw==,size_16,color_FFFFFF,t_70)
网站有什么功能/今日腾讯新闻最新消息
时间不等人,2020年转眼就要过去大半了,春招在疫情中度过,不知有多少人还在惋惜... 马上又是春招的高峰“金三银四”,估计现在就已经有不少的程序猿(媛)朋友早就踏上提前批之路了吧,机会来临&am…...
![](https://img-blog.csdnimg.cn/7a70da526dbe486bb1656762f2cfa0fa.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATWFj5p-g5qqs,size_14,color_FFFFFF,t_70,g_se,x_16)
ps里怎么做网站/网络口碑推广公司
Mac电脑用的时间久了,Mac用户尤其是MacBook用户会经常收到“磁盘几乎已满”的提示,如何解决这个问题,这里分享几个处理磁盘空间不足提示的小方法。 方法一、清理Mac电脑的缓存文件 一般电脑里都会堆积很多的缓存文件,其实缓存文件…...
![](https://static001.infoq.cn/resource/image/06/9f/06e1fec4a87eca3142d54d09844c629f.png)
有没有做二手设备网站/奶茶软文案例300字
微服务是近年兴起的一个概念,是指将应用程序设计成一套可以单独部署的服务。Martin Fowler是ThoughtWorks的首席科学家。他与ThoughtWorks首席顾问James Lewis合作发表的《微服务》,可谓是了解微服务架构风格的入门必读。近日,Fowler又提出了…...
![](/images/no-images.jpg)
建网站怎么备案/semester什么意思
在学习递归方法之前,我们首先得知道什么是递归? 什么是递归方法呢?通俗易懂的说就是方法本身调用自身。 可以设计模型为 a( ){ a( ); } 方法递归的调用代码 public class digui{public static void main(String[] args){System.out.pr…...