瑞佑液晶控制芯片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
相关文章:
瑞佑液晶控制芯片RA6807系列介绍 (三)软件代码详解 Part.10(让PNG图片动起来)完结篇
RA6807是RA8876M的缩小版,具备RA8876M的所有功能,只将MCU控制接口进行缩减,仅保留SPI-3和I2C接口,其它功能基本相同。 该芯片最大可控制854x600的分辨率,内建64Mbits显存,多个图层,使用起来相当…...
Qt常用控件 按钮
文章目录 1. QAbstractButton 简介2. QPushButton2.1 例子1,设置按钮的图标2.2 例子2,设置按钮快捷键 3. QRadioButton3.1 介绍3.2 例子1,选择性别3.3 例子2,试试其他的信号3.3 例子3,分组 4. QCheckBox4.1 介绍4.2 例…...
MySQL学习/复习10视图/用户/权限/语言连接数据库
一、视图 1.1创建视图 1.2视图影响基表 1.3基表影响视图 1.4删除视图 1.5视图使用规则 二、数据库的用户 2.1mysql中的user表 注意事项:主机/用户名/密码/权限 2.2用户的创建 注意事项:设置密码与登录地点需谨慎 2.3删除用户 注意事项:% 2.4…...
vulfocus在线靶场:tomcat-pass-getshell 弱口令 速通手册
目录 一、启动环境,访问页面,并登录,账号密码都是tomcat 二、哥斯拉打war包,图解 三、上传war包,图解 四、访问我们直接url/木马文件名/木马文件.jsp,是否存在了 五、 哥斯拉测试连接结果success&…...
c#:winform调用bartender实现打印(学习整理笔记)
效果 学习路径 C# winform调用Bartender进行自定义打印、批量打印、检索文件夹中的模板_哔哩哔哩_bilibili 一、初始环境搭建见: c#:winform引入bartender-CSDN博客https://blog.csdn.net/weixin_46001736/article/details/143989473?sharetypeblogdetail&s…...
牛客题库 21738 牛牛与数组
牛牛与数组题目链接 题目大意 牛牛喜欢这样的数组: 1:长度为n 2:每一个数都在1到k之间 3:对于任意连续的两个数A,B,A<=B 与(A % B != 0) 两个条件至少成立一个请问一共有多少满足条件的数组,对 1 e 9 + 7 1e^9+7 1e9+7 取模 输入格式 输入两个整数 n , k n,k n,…...
探索PDFMiner:Python中的PDF解析利器
文章目录 **探索PDFMiner:Python中的PDF解析利器**1. 背景介绍:为何选择PDFMiner?2. PDFMiner是什么?3. 如何安装PDFMiner?4. 简单库函数使用方法4.1 提取文本4.2 获取页面布局信息4.3 提取表格数据4.4 提取图像 5. 应…...
掌握Go语言中的异常控制:panic、recover和defer的深度解析
掌握Go语言中的异常控制:panic、recover和defer的深度解析 在Go语言的编程世界中,异常处理是一个不可忽视的话题。Go语言提供了panic、recover和defer三个关键字来处理程序中的异常情况。本文将深入探讨这三个关键字的工作原理、使用场景和最佳实践,帮助读者在实际编程中更…...
云讷科技Kerloud无人飞车专利发布
云讷科技Kerloud无人飞车获得了“一种室内外两用的四旋翼无人飞车”的实用新型专利证书,作为科教社区第一款四旋翼飞车,这项技术结合了无人机和无人车的优势,提供了一种能够在多种环境下使用的多功能飞行器。 这项设计的优势如下ÿ…...
企业信息化-走进身份管理之搭建篇
一、身份管理是什么 我们先要弄懂统一身份管理到底是什么? 统一身份管理(Unified Identity Manager,UIM),身份管理(Identity Management,简称IDM),也被称为IAM&#…...
实践指南:EdgeOne与HAI的梦幻联动
在当今快速发展的数字时代,安全和速度已成为网络服务的基石。EdgeOne,作为腾讯云提供的边缘安全加速平台,以其全球部署的节点和强大的安全防护功能,为用户提供了稳定而高效的网络体验。而HAI(HyperApplicationInventor…...
Exploring Prompt Engineering: A Systematic Review with SWOT Analysis
文章目录 题目摘要简介方法论背景相关工作评估结论 题目 探索快速工程:基于 SWOT 分析的系统评价 论文地址: https://arxiv.org/abs/2410.12843 摘要 在本文中,我们对大型语言模型 (LLM) 领域的提示工程技术进行了全面的 SWOT 分析。我们强…...
ByteBuffer 与 ByteBuf 的对比与优缺点分析
在 Java 网络编程和高性能 I/O 场景中,ByteBuffer 和 ByteBuf 是两种重要的缓冲区处理工具。ByteBuffer 是 Java NIO 标准库的一部分,而 ByteBuf 是由 Netty 框架提供的增强缓冲区工具。在实际开发中,选择哪一种取决于场景需求和性能目标。 …...
js高级06-ajax封装和跨域
8.1、ajax简介及相关知识 8.1.1、原生ajax 8.1.1.1、AJAX 简介 AJAX 全称为 Asynchronous JavaScript And XML,就是异步的 JS 和 XML。 通过 AJAX 可以在浏览器中向服务器发送异步请求,最大的优势:无刷新获取数据。 按需请求,可…...
RabbitMQ3:Java客户端快速入门
欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…...
D 型 GaN HEMT 在功率转换方面的优势
氮化镓 (GaN) 是一种 III-V 族宽带隙半导体,由于在用作横向高电子迁移率晶体管 (HEMT) 时具有卓越的材料和器件性能,因此在功率转换应用中得到越来越多的采用。 HEMT 中产生的高击穿电场 (3.3 MV/cm) 和高二维电子气 (2DEG) 载流子迁移率 (2,000 cm 2 /…...
Java Web后端项目的特点和组成部分
技术栈 #### Java Web技术: - **Servlet**:Java Web的核心,用于处理HTTP请求。 - **WebServlet注解配置**:用于简化Servlet的配置。 - **HttpServlet基类**:大多数Servlet都继承自此基类。 - **请求响应处理**&#x…...
Vue3 + Vite + TS 项目引入 Eslint + Pritter
文章目录 一、ESLint 简介主要功能适用场景常用的 Eslint 配置项 二、Pritter 简介主要功能适用场景常用的 Prettier 配置项 三、Vue3 Vite TS 项目引入 Eslint Pritter1. 安装 ESLint2. 初始化 ESLint 配置3. 在 Vite 项目中启用 ESLint4. 在 VS Code 中启用 ESLint5. 集成…...
用Tauri框架构建跨平台桌面应用:1、Tauri快速开始
Tauri 是一个构建适用于所有主流桌面和移动平台的轻快二进制文件的框架。开发者们可以集成任何用于创建用户界面的可以被编译成 HTML、JavaScript 和 CSS 的前端框架,同时可以在必要时使用 Rust、Swift 和 Kotlin 等语言编写后端逻辑。 Tauri 是什么? |…...
Django实现智能问答助手-数据库方式读取问题和答案
扩展 增加问答数据库,通过 Django Admin 添加问题和答案。实现更复杂的问答逻辑,比如使用自然语言处理(NLP)库。使用前端框架(如 Bootstrap)增强用户界面 1.注册模型到 Django Admin(admin.py…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
