电子说
在当今数字化的时代,图形显示设备在我们的生活中无处不在,从手机、计算器到交通信号灯、广告板等。越来越多的设备开始具备图形显示功能,这不仅提升了用户体验,也为产品带来了更多的竞争力。对于电子工程师来说,设计图形应用是一项具有挑战性但又充满乐趣的任务。本文将基于Microchip的应用笔记AN1368,为大家详细介绍如何使用PIC微控制器开发嵌入式图形应用。
文件下载:AC164127-7.pdf
色彩与光的波长密切相关,在人类可见范围内,波长大约从400nm(紫色)到700nm(红色),黄色的中心波长约为575nm。有趣的是,虽然我们知道可以通过混合红、绿、蓝三种基本颜色来得到其他颜色,但实际情况并非完全如此。例如,混合红和绿的光,从波长角度看,是700nm和560nm的光混合,并没有代表黄色的波长,但人眼却会将其感知为黄色光。这就是人眼的色彩识别特性,也是RGB(红、绿、蓝)模型的基础。
RGB模型指出,通过混合适当比例(强度)的红、绿、蓝三种颜色,人眼可以感知到不同的颜色。比如,相同比例的RGB混合会得到灰色;三种颜色都为零得到黑色;三种颜色都为最大值则得到白色。改变RGB的强度比例但保持相同的比例,会得到不同深浅的灰色,即“灰度”。在整个应用中使用单一颜色(固定比例的RGB)就是“单色”应用。
在数字系统中,颜色通常用位或字节来表示。每种基本颜色(RGB)可以用一个字节表示,范围从0到255。因此,使用3个字节可以表示1600万种颜色((2^{24})),这被称为“真彩色”。也常用16位来表示颜色,这样可以表示64K种颜色((2^{16})),对于许多图形应用来说已经足够。常见的16位颜色划分方案有两种:
灰度通常用一个字节表示,0表示黑色,1 - 254表示不同深浅的黑色,数值越大颜色越浅,255表示白色。有时也会使用4位或2位来分别表示16种或4种黑色的深浅。如果只用一位来表示颜色的开或关,就是“单色”。表示颜色所需的位数称为“颜色深度”,例如16位颜色深度意味着需要16位来表示一种颜色,可以表示(2^{16})种不同的颜色。此外,颜色还可以使用颜色查找表(CLUT)来表示,通过表的索引指定颜色,这种方案主要用于节省内存。
屏幕由离散的元素——像素组成,每个像素可以显示一个颜色点,由红、绿、蓝三个点组成。屏幕在水平和垂直方向上的像素数量称为屏幕分辨率,例如320x240表示水平有320个像素(列数),垂直有240个像素(行数)。常见的标准分辨率有QCIF(176x144)、CIF(352x288)、QVGA(320x240)等。在提及分辨率时,最好使用具体的数字而不是名称。
屏幕可以处于横向模式(宽度 > 高度)或纵向模式(高度 > 宽度)。显示屏幕的可见宽度与可见高度的比值称为“宽高比”,最常用的宽高比是4:3。显示屏的对角线长度称为显示长度,例如3.5英寸的显示屏表示其对角线长度为3.5英寸。
嵌入式图形系统有四个基本组件:显示玻璃、显示控制器、帧缓冲区和微控制器。
在设计图形应用时,如何集成这四个基本组件是一个重要的步骤。有四种可能的组合方式:
不同的显示面板有不同的电源供应要求和时序,以启用面板的每个电源信号。常见的电源信号包括数字电源信号、模拟电源信号、LCD电源信号和背光电源信号。这些电源信号必须按照制造商推荐的电源顺序进行供电,否则会显著缩短显示面板的使用寿命。
有些应用需要支持触摸屏,可以通过在显示玻璃上使用单独的触摸屏或选择带有触摸屏的显示模块来实现。触摸屏信号可以由微控制器或单独的触摸屏控制器处理,常见的透明触摸屏有电阻式和电容式两种,电阻式触摸屏最为常用,一般有4线或5线配置。以4线电阻式触摸屏为例,它有四个信号,其中两个是纯数字信号,另外两个信号可以交替配置为数字和模拟信号。当用户触摸屏幕时,通过测量屏幕在水平和垂直方向上的电阻变化,并与校准值进行比较,可以获得触摸点的(x, y)坐标。
特定的分辨率可以在不同的显示尺寸中实现,例如QVGA(320x240)显示屏的尺寸范围为1.5英寸到5.7英寸。在应用中,如果用户需要近距离查看显示屏(如手持设备),高分辨率的显示屏是更好的选择;如果用户从远距离查看显示屏(如银行的令牌显示屏),可以使用低分辨率的大尺寸显示屏。如果要显示图片,最好使用高分辨率的显示屏。
显示屏有横向(如320x240)或纵向(如240x320)模式。可以通过图形库或显示控制器的90°旋转功能将横向显示屏用于纵向模式,反之亦然。如果旋转是通过图形控制器内部的特殊硬件功能实现的,不会对性能产生影响;如果是通过软件实现的,会对软件性能产生一定的影响。
颜色深度的选择会影响帧缓冲区的大小(RAM成本)。如果要显示自然照片,最好选择16位或更高的颜色深度;如果应用只需要256种不同的颜色,可以选择8位颜色深度,这样可以将RAM需求降低50%;如果只需要16种或4种不同的颜色,可以分别使用4位或2位颜色深度,分别节省75%和87.5%的RAM。
帧缓冲区的大小根据公式计算:帧缓冲区(字节) = 总像素数 x 颜色深度(位/像素)/ 8。如果使用双缓冲技术,帧缓冲区的需求将翻倍。
处理能力取决于应用的具体需求,包括屏幕上显示的图形元素数量和复杂程度。绘制复杂形状(如圆形、斜面、文本等)比绘制线条和矩形需要更多的处理能力。如果有硬件图形加速器可用,处理能力的需求会相应降低。对于许多嵌入式图形应用,≥16 MIPS的处理能力可能就足够了。
不同的图形组件配置有各自的优缺点,在选择时,通常不是由技术优势或劣势决定,而是由供应链优势或组件的可用性决定。设计师需要在优化设计以满足需求和管理供应链之间进行平衡。
帧率指的是每秒可以显示的不同帧数,对于视频显示是一个很好的性能指标,但对于嵌入式GUI应用来说并非如此。在嵌入式应用中,通常只改变屏幕的一部分,更新时间取决于改变的部件大小和类型。在规划应用时,考虑最坏情况很重要,初步计算帧率和MIPS对于确定系统的初步需求很关键,同时建议使用开发工具(如评估套件)对系统进行评估。
显示控制器的RGB线输出数量可能与显示屏的RGB线输入数量不同,但仍然可以进行接口连接。如果显示屏的RGB输入线数量等于显示控制器的RGB线输出数量,不会出现颜色退化;否则,可能会出现轻微的颜色退化。通常将显示控制器的RGB线连接到显示屏显示信号线的高位,未连接的低位可以连接到地、VDD或相同颜色的高位。
PIC24FJ256DA210是一款16位微控制器,支持高达16 MIPS的处理速度。它包含96 Kbytes的内部RAM和一个内置的显示控制器,带有图形处理单元(GPUs),可以加速常见2D形状的绘制。它还可以通过增强的PMP模块与可选的外部并行RAM接口,以增加帧缓冲区的大小。该微控制器的图形控制器模块具有多个时钟信号和接口,用于驱动显示玻璃、访问寄存器、控制GPU等。此外,它还配备了多个图形加速器,如字符图形处理单元(CHRGPU)、矩形复制图形处理单元(RCCGPU)和膨胀处理单元(IPU),可以帮助释放微控制器的处理能力,提高图形绘制效率。
Microchip提供了多种支持图形设计的开发工具,其中两个重要的工具是:
任何图形应用都需要一个基本的软件组件——软件显示驱动,它提供设置像素颜色的基本操作,还可以实现绘制基本形状(如线条、矩形、圆形、文本、图像等)的API。Microchip提供了一个“Microchip Graphics Library”软件库,包含上述驱动和更高层次的功能。该库具有模块化设计、支持多种用户界面、不依赖显示尺寸或分辨率等特点,并且对Microchip客户免费。
Microchip图形库的配置通过两个文件完成:
除了Microchip的图形库,还有一些第三方提供的PIC MCU图形库,如Segger的emWin Graphics Library和Micrium的µC/GUI。
嵌入式图形支持在最近的用户界面应用中变得越来越重要。Microchip通过提供开发工具、图形库、图形启用的微控制器(如PIC24FJ256DA210)以及详细的文档、演示代码和支持,为客户提供了多方面的支持。Microchip的图形解决方案可以成功应用于许多嵌入式图形应用,从而缩短产品上市时间并降低成本。
在开发嵌入式图形应用时,电子工程师需要综合考虑色彩科学、显示术语、硬件组件、决策因素、开发工具和软件等多个方面。通过合理选择和配置这些要素,可以设计出高效、美观的图形应用。希望本文能够为电子工程师在嵌入式图形应用开发方面提供有益的参考。你在开发过程中遇到过哪些挑战呢?欢迎在评论区分享你的经验。
全部0条评论
快来发表一下你的评论吧 !