IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 记:简单GUI结构——最简单架构算法原理建模 -> 正文阅读

[嵌入式]记:简单GUI结构——最简单架构算法原理建模

0x00 前言

本文适用的场景为普通的LCD或者是LED在不显示图像等特别的操作下,节省显存与相关显示的资源,是一种几乎最简单的GUI处理架构。
其实严格上讲,不算是算法,只不过算是给下面的工作做一定的前置。

阅读本文,您可能需要掌握的知识:

技能熟练度
GUI了解
C语言了解

0x10 显示空间

首先,一个普通的LCD,在没有内部的专用驱动IC的情况下,都会很浪费空间(主要是内存与当前的)。例如一个完整的12864显示器,需要至少使用8192byte的内存,这对于一般的单片机来算是很大的开销了。
如果一个多彩的LCD屏幕,甚至需要更大的显存,还是以12864为例,全彩的显示屏需要将近24kbyte的数据显存。这个几乎一般的芯片都很难接受了。

0x20 优化空间

这里,笔者觉得,似乎可以尝试优化以下,使用简单的一种算法,将当前的显示空间简单压缩,随后使用较小的显示空间定义较大的显示空间。现有的想法经过计算,似乎128*64分辨率的显示器,显示似乎最小只需要32byte最小的运行内存,辅以4kb以内的固定数据(可以理解为字库),就可以显示足够多的Ascii字符(暂时只是这样简单计算,后期也许会支持更大的显示空间计算与计算方案)。

0x30 计算原理

0x31 空间计算

一个完整的空间,一般可以抽象为一个简单的三维数组。这里笔者因为只是最简单的建模,所以就可以抽象一个最简单的三维数组(128*64*1)的基础数组。
9003bd5b.png

0x32 文字编码

一个最简单的文字可见编码主要为16*16,基本上已经可以显示绝大多数的数字与绝大多数的文字了。

00d92590.png

0x33 计算结构

上述的几个参数,就可以知道,在最密排列下,当前的整个屏幕显示的结构,约为 32byte,当然,这个只是最简单的显示Ascii字符,如果是Unicode-16这种就需要64byte。
也就是一个12864的显示屏,在具体的16bit*16bit的显示条件下,就是需要占用(128/16 -((128%16)>1)) *(64/16- ((64%16)>1))的实际数据。

0x40 实际实现方式

首先,笔者假设现在有一个12864的屏幕,现在笔者将其划分8*4的Ascii结构(简单数组)于是就可以通过简单的查表进行显示。
还有部分的显示区块,也就是常说的字库。这部分一般是存放在外部的存储空间内,因为不需要经常更换,甚至可以存放在非易失性的结构内。

偏移寻址
获取偏移值
渲染到屏幕

这个操作下保证RAM下只存储偏移值,也就保证了当前的结构最简、使用内存最小。

0x50 总结

简单来说,暂时的实现方式还只是使用字库映射的方式,对于当前的显示区块进行显示的操作来节省当前显存的结果。
这种显示方法广泛应用在较高算力的众多的机器中,但是在嵌入式低端还较少。主要因为当前的嵌入式计算能力高度定制化,随着嵌入式的芯片计算能力、冗余能力越来越大,当前的显示有了这种显示方式的可行性。

本文首发自 记:简单GUI结构——最简单架构算法原理建模,更多文章可进入我的博客详查。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:35:52  更:2022-05-05 11:37:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:47:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码