瑞佑液晶控制芯片RA6807系列介绍 (三)软件代码详解 Part.10(让PNG图片动起来)完结篇

RA6807是RA8876M的缩小版,具备RA8876M的所有功能,只将MCU控制接口进行缩减,仅保留SPI-3和I2C接口,其它功能基本相同。

该芯片最大可控制854x600的分辨率,内建64Mbits显存,多个图层,使用起来相当灵活!

继续讲解软件代码,我们使用SPI-3进行演示。参考代码请使用PC端浏览器访问本贴,在标题下方找到下载链接。

10. 让PNG图片动起来

上篇已经解释了如何显示PNG图片,接下来我们要做一个有趣的效果!让PNG图片动起来!先看实际效果:
在这里插入图片描述

实现代码:

	unsigned short n,x,y,dir_x,dir_y;//显示PNG只能在16位色深方可Select_Main_Window_16bpp();		//[10h]Set main window color depthMemory_16bpp_Mode();			//[5Eh]Set active memory color depthDMA_24bit(CS1,0,0,480*0,800,480,BINARY_INFO[5].img_width,BINARY_INFO[5].start_addr);	//Layer0:主画面DMA_24bit(CS1,0,0,480*1,800,480,BINARY_INFO[5].img_width,BINARY_INFO[5].start_addr);	//Layer1:主画面组合PNG用DMA_24bit(CS1,0,0,480*2,800,480,BINARY_INFO[5].img_width,BINARY_INFO[5].start_addr);	//Layer2:主画面备份用DMA_24bit(CS1,0,0,480*3,400,100,BINARY_INFO[6].img_width,BINARY_INFO[6].start_addr);	//Layer3:读取PNG(ARGB:4444)数据放到该图层x=300;y=300;			dir_x=1;	//PNG移动方向:0:递减,1:递进dir_y=1;	//PNG移动方向:0:递减,1:递进for(n=0;n<400;n++){BTE_Alpha_Blending_Pixel_PNG_16bpp(Layer1,canvas_image_width,x,y,Layer3,canvas_image_width,0,0,Layer1,canvas_image_width,x,y,400,100);	//将PNG数据延展为图片,贴到Layer1上BTE_Memory_Copy(Layer1,canvas_image_width,0,0,0,canvas_image_width,0,0,Layer0,canvas_image_width,0,0,0x0C,800,480);											//将Layer1复制到Layer0,主画面叠加了PNG图片后复制BTE_Memory_Copy(Layer2,canvas_image_width,0,0,0,canvas_image_width,0,0,Layer1,canvas_image_width,0,0,0x0C,800,480);											//将Layer2复制到Layer1,恢复底图//x向递增和递减if(dir_x==1 && x<800-400){x++;if(x==800-400-1)	dir_x=0;}else if(dir_x==0 && x>0){x--;if(x==0)	dir_x=1;}		//y向递增和递减if(dir_y==1 && y<480-100){y++;if(y==480-100-1)	dir_y=0;}else if(dir_y==0 && y>0){y--;if(y==0)	dir_y=1;}}	

上例中,我们将显存规划出来Layer0~3共4个图层,这几个层用宏定义了相应地址了,范例的代码在UserDef.h中:

/* RA6807 图层定义 16位色 */
#define Layer0  384000*2*0		//图层0地址(canvas_image_width*LCD_Height*16/8)
#define Layer1  384000*2*1		//图层1地址
#define Layer2  384000*2*2		//图层2地址
#define Layer3  384000*2*3		//图层3地址
#define Layer4  384000*2*4		//图层4地址

补充一下,显存是用户自由规划的,这里我们规划出来画布的宽度是800,即屏宽,那么每个图层的大小是:
800 x 480 x16bpp / 8bit=384000 x 2

Layer0绝对坐标:(0,480 * 0)
Layer1绝对坐标:(0,480 * 1)
Layer2绝对坐标:(0,480 * 2)
Layer3绝对坐标:(0,480 * 3)

上面的代码,参考下方流程图:
在这里插入图片描述
可能有些细心的R&D会注意到,范例中是将PNG先贴到Layer1,然后再将Layer1复制到Layer0,那为何不贴直接将PNG贴到Layer0呢?何必多此一举?这里卖个关子,先不细说,等您来探索!

至此,RA6807的参考程序全部介绍完毕!

如您还有兴趣,可访问论坛:https://bbs.lcdvision.com.cn

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3+echarts+ant design vue实现进度环形图

1、代码 <div> <!-- 目标环形图 --><div id"main" class"chart_box"> </div><div class"text_target">目标</div> </div>// 目标环形图 const onEcharts () > {// 基于准备好的dom&#xff0c;初…

Spark RDD 的宽依赖和窄依赖

通俗地理解 Spark RDD 的 宽依赖 和 窄依赖&#xff0c;可以通过以下比喻和解释&#xff1a; 1. 日常生活比喻 假设你在管理多个团队完成工作任务&#xff1a; 窄依赖&#xff1a;每个团队只需要关注自己的分工&#xff0c;完成自己的任务。例如&#xff0c;一个人将纸张折好&…

【StarRocks】starrocks 3.2.12 【share-nothing】 多Be集群容器化部署

文章目录 一. 集群规划二.docker compose以及启动脚本卷映射对于网络环境变量 三. 集群测试用户新建、赋权、库表初始化断电重启扩容 BE 集群 一. 集群规划 部署文档 https://docs.starrocks.io/zh/docs/2.5/deployment/plan_cluster/ 分类描述FE节点1. 主要负责元数据管理、…

厦门凯酷全科技有限公司解锁抖音电商新纪元

在这个短视频风起云涌的时代&#xff0c;抖音电商以其独特的魅力迅速崛起&#xff0c;成为众多品牌争相布局的蓝海市场。在这片充满机遇与挑战的海洋中&#xff0c;厦门凯酷全科技有限公司犹如一艘装备精良的航船&#xff0c;引领着众多企业驶向成功的彼岸。今天&#xff0c;就…

递归------深度优先搜索

深度优先搜索&#xff08;Depth-First Search&#xff0c;简称DFS&#xff09;是一种用于遍历或搜索树或图的算法。它从一个顶点开始&#xff0c;尽可能深地搜索树的分支。深度优先搜索沿着一条路径深入&#xff0c;直到无法继续为止&#xff0c;然后回溯并尝试其他路径。这种搜…

华为HCCDA云技术认证--分布式云架构

大家好呀&#xff01;我是reload。今天继续带大家学习华为HCCDA云技术认证&#xff0c;涵盖华为云最为核心的计算、存储、网络、数据库、安全、部署等服务。今天学习分布式云架构与资源弹性伸缩相关内容。 一、弹性实现原理 1、问题引入 假设在双十一或其他大促期间的流量波…

企业信息化-走进身份管理之搭建篇

​一、身份管理是什么 我们先要弄懂统一身份管理到底是什么&#xff1f; 统一身份管理&#xff08;Unified Identity Manager&#xff0c;UIM&#xff09;&#xff0c;身份管理&#xff08;Identity Management&#xff0c;简称IDM&#xff09;&#xff0c;也被称为IAM&#…

Vue移动端网页(H5)预览pdf文件(pdfh5和vue-pdf)(很详细)

我试了似乎不支持vue3 原文链接&#xff1a;Vue移动端网页&#xff08;H5&#xff09;预览pdf文件&#xff08;pdfh5和vue-pdf&#xff09;-阿里云开发者社区

解决Windows批处理文件执行后中文乱码问题

前言 在使用Windows批处理文件时&#xff0c;中文乱码是一个常见的问题。这通常是因为文件的编码格式与命令行&#xff08;cmd&#xff09;默认使用的编码格式不一致导致的。下面我们将简单讲讲如何解决这一问题&#xff0c;确保批处理文件中的中文字符能够正确显示。 问题原…

实践篇:青果IP助理跨境电商的高效采集

写在前面&#xff1a; 近年来&#xff0c;跨境电商行业迅速崛起&#xff0c;成为全球贸易的重要组成部分。据市场调研机构Statista数据显示&#xff0c;2024年全球跨境电商市场规模预计将突破5万亿美元&#xff0c;覆盖数十亿消费者。跨境电商的竞争日益激烈&#xff0c;商家不…

Prometheus结合K8s(二)使用

上一篇介绍了如何搭建 Prometheus结合K8s&#xff08;一&#xff09;搭建-CSDN博客&#xff0c;这章介绍使用 页面访问 kubectl get svc -n prom 看promeheus和granfana的端口访问页面 Prometheus 点击status—target&#xff0c;可以看到metrics的数据来源&#xff0c;即各…

掌握Go语言中的异常控制:panic、recover和defer的深度解析

掌握Go语言中的异常控制:panic、recover和defer的深度解析 在Go语言的编程世界中,异常处理是一个不可忽视的话题。Go语言提供了panic、recover和defer三个关键字来处理程序中的异常情况。本文将深入探讨这三个关键字的工作原理、使用场景和最佳实践,帮助读者在实际编程中更…

Python网络爬虫技术及其应用

Python网络爬虫技术及其应用 在当今数字化时代&#xff0c;互联网已经成为信息传播的主要渠道。海量的数据每天都在互联网上产生&#xff0c;这些数据对于企业决策、市场分析、科学研究等有着极其重要的价值。然而&#xff0c;如何高效地收集并利用这些数据成为了一个挑战。Py…

一文详解使用java easyexcel导出文件的几种情况

情况一&#xff1a;简单的导出指定类型文档&#xff0c;不要求格式 filePath-文件路径// 设置响应头response.setContentType("application/octet-stream");// 字符集处理&#xff0c;确保文件名的正确显示response.setHeader("Content-Disposition","…

Spark分布式计算中Shuffle Read 和 Shuffle Write的职责和区别

在 Spark 的分布式计算中&#xff0c;Shuffle Read 和 Shuffle Write 是两个与数据重新分区和分发相关的重要阶段。它们的主要职责和区别如下&#xff1a; 1. Shuffle Write Shuffle Write 发生在上游的任务执行阶段&#xff0c;其作用是&#xff1a; 分区数据准备&#xff1…

组会 | 大语言模型 + LoRA

目录 1 大语言模型概述1.1 模型的架构1.2 模型的细节&#xff1a;标记化和嵌入化1.3 模型的核心 2 多头注意力机制3 LoRA 概述3.1 冻结部分模型参数3.2 低秩适配&#xff08;LoRA&#xff09;3.2.1 核心工作原理&#xff1a;冻结模型参数3.2.2 核心工作原理&#xff…

速盾:CDN缓存的工作原理是什么?

CDN&#xff08;内容分发网络&#xff09;是一种将内容分发到全球不同地理位置的网络架构&#xff0c;以提供更快速、可靠的内容传输。其核心原理是利用缓存技术&#xff0c;将数据内容分布到离用户最近的边缘节点上。当用户请求内容时&#xff0c;CDN将根据用户的IP地址&#…

Qt——天气预报项目

一.ui界面的设计流程 1.窗口1&#xff1a;使用水平布局&#xff0c;内包含俩个QLabel类和一个QLineEdit类 这里可以设置LineEdit中的提示文字 2.窗口2&#xff1a;使用栅格布局&#xff0c;这个天气图标组件的大小需限制一下 3.窗口3&#xff1a;里面包含一个子窗口&#xff…

【高阶数据结构】LRU Cache

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解什么是LRU Cache&#xff0c;并能简单的模拟实现。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! &…

jupyter notebook的 markdown相关技巧

目录 1 先选择为markdown类型 2 开关技巧 2.1 运行markdown 2.2 退出markdown显示效果 2.3 注意点&#xff1a;一定要 先选择为markdown类型 3 一些设置技巧 3.1 数学公式 3.2 制表 3.3 目录和列表 3.4 设置各种字体效果&#xff1a;加粗&#xff0c;斜体&#x…