顾峰斯琴高丽的钱:7寸视频&串口显示模组调试技巧之1——层切换效果

来源:百度文库 编辑:九乡新闻网 时间:2024/07/14 07:04:00

7寸视频&串口显示模组调试技巧之1——层切换效果

 

         历经一年,终于完成了视频&串口模组的开发和研制,目前已经开始向部分客户小批量供货了。从最原始的5.7寸640*480的视频采集模组,到5.7寸640*480的视频&串口模组,再到今天7寸800*480的视频&串口模组,特权花费了很大的心血,尤其是第一台原型样机的开发调试。

         这款7寸的视频&串口模组(型号:M070AS26)也有机会搬上台面与各位网友见面。特权同学希望藉着后面一系列的开发指南、应用参考和调试技巧,能够帮助各位全方面的了解她。若是正好项目中能够用上类似产品,那就正好考察一下这台模组的功能、性能。

大家若对后续的文章有任何看法见解或是建议要求,特权同学都愿意洗耳恭听——或许您的一句话就会带来我们下一款产品的创新和超越。

 

         在《7寸串口&视频液晶显示模组使用说明书.pdf》的指令集中有如下说明:

当叠加层色彩为0x0000时,当前显示视频层图像;当叠加层色彩为0xffff时,则当前显示图片层图像;否则,当前像素将显示叠加层数据所表示的相应色彩。

         这句说明作何理解呢?实际上,晶奥科技的串口系列显示模组通常有两层,带视频功能的模组则有三层。所谓两层或三层又到底是怎么回事呢?下面特权同学将带大家领会其中的奥妙。

层的概念

         先来了解一下层的概念及不同层的用处。串口&视频模组是一款智能模组,它包括了叠加层、图片层和视频层。所谓叠加层,顾名思义,就是可以把一些色彩值叠加到本身显示为图片或视频的当前显示画面中,一般能够在叠加层显示的指令(或者确切的说可以操作叠加层数据变化的指令)如表1所示,包括文本显示、置点、多线段连线、画圆和区域操作。叠加层最大的特点是用户可以直接的访问读写,即通常说是的“所见即所得”,用户所送出的值即最终的显示色彩(但0x0000和0xffff两个保留值是例外)。

表1 叠加层操作指令

 

分类

功能

指令

指令参数

描述

文本显示

16X16点阵GB2312国标简体汉字

0x54

Xadd(2Byte) + Yadd(2Byte) + String

(Xadd,Yadd)为当前字符串显示的启示坐标。String为多个需要显示的国标码值。每个国标码为两个字节,其中高字节在前、低字节在后。若显示ASIIC码,则直接送ASIIC码值即可。

32X32点阵GB2312国标简体汉字

0x55

64X64点阵GB2312国标简体汉字

0x6e

置点

背景色显示多个点

0x50

Xadd(2Byte)+Yadd(2Byte) +……

(Xadd,Yadd)为当前需要显示背景色像素点的坐标。若显示n个点,则连续送n次的X和Y坐标值。该指令主要用于删除点。

前景色显示多个点

0x51

(Xadd,Yadd)为当前需要显示前景色像素点的坐标。若显示n个点,则连续送n次的X和Y坐标值。

多线段连线

多个指定点用线段进行连接(前景色)

0x56

Xadd(2Byte)+Yadd(2Byte) +……

(Xadd,Yadd)为当前需要用前景色连线的像素点坐标。若连接n个点,则送n次X和Y坐标值。

多个指定点用线段进行连接(背景色)

0x6d

(Xadd,Yadd)为当前需要用背景色连线的像素点坐标。若连接n个点,则送n次X和Y坐标值。该指令主要用于删除点。

频谱显示

0x75

X0add(2Byte)+Y0add(2Byte)+Hmax+h1+h2+……

X0add为x轴坐标起点,Y0add为频谱水平起点,Hmax(1Byte)为谱线的最大高度。hi(0=0,1,2……)为单根谱线的高度(1Byte),每增加一个i值,x轴坐标自动增1。谱线显示前景色,比hi值大的区域显示背景色。

画圆

画圆弧

0x57

Type(1Byte) + xadd(2Byte) + yadd(2Byte) + r(1Byte)

Type=0x00:背景色画圆;Type=0x01:前景色画圆。以(xadd,yadd)为圆心,画半径为r的圆弧。

区域操作

区域清屏(背景色填充)

0x64

X0add2Byte) + Y0add(2Byte) + X1add2Byte) + Y1add(2Byte)

对起始坐标(X0add,Y0add)到结束坐标(X1add,Y1add)的矩形区域使用背景色填充。

整屏清屏

0x52

背景色填充整屏显示。

 

        

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

        图片层即用于存取当前显示图片的存储区,这个层和叠加层略有不同,不是用户可以直接读写访问的。当用户使用图片调用指令时,模组内部自动将原本存储在非易失存储器(如flash)中的图片数据加载到该层中。用户通常会使用一幅漂亮的图片作为界面背景,也可以使用一些小图片拼凑出一幅完美的显示界面,这些图片显示方式都为我们的所模组支持。如表2所示,为该模组的图片层相关指令。

表2 图片层指令

 

分类

功能

指令

指令参数

描述

满屏区

0x70

Photo_num(1Byte)

显示Flash中预存的第 Photo_num(0-49)幅满屏图片。

小图区

0x9c

Photo_num(1Byte) + xadd(2Byte) + yadd(2Byte)

在以(xadd,yadd)为起点的位置显示Flash中预存的第Photo_num(0-191)幅小图片。

 

        

 

 

 

        最后是视频层,这个层也非叠加层一样是用户可以直接操作的。用户可以通过相关指令控制该层的显示与否,也可以缩放或任意位置摆放该层的显示图像。视频层相关的操作指令如表3所示 。

表3 视频层指令

 

分类

功能

指令

指令参数

描述

AV显示控制

拍照指令

0x80

0x40 + page(1Byte)

执行一次拍照操作,page表示拍照存储页,可取值为1-7。

拍照显示

0x41 + page(1Byte)

执行拍照显示,page表示显示的拍照页,可取值为1-7,当希望返回正常实时AV显示时,设置page = 0即可。

视频显示模式

0x88

Dis_mode(1Byte) + Xpos(2Byte) + Ypos(2Byte)

Dis_mode为视频缩放控制寄存器:0—640*480; 1--480*360; 2—400*300; 3—320*240; Xpos和Ypos为视频显示起始坐标,高字节在前。

AV芯片配置功能

0x8f

ADDR(1Byte) + DATA(1Byte)

具体功能定义查看说明⑧

 

  

 

 

 

 

 

 

 

层的切换

         再从硬件结构上来理解层的区别,对于液晶显示屏上的任意像素点而言,它对应着16位的色彩数据。通常在模组处于工作状态时,叠加层、图片层、视频层三个层同时分别输出相同像素点的16位色彩数据,而此时液晶屏上只能显示其中的一个数据。我们通过控制叠加层中的数据来切换不同的层(即决定是显示叠加层、图片层还是视频层的数据)。如图1所示,每个液晶像素点在显示时,同时输出叠加层、图片层和视频层数据,而叠加层的数据取值决定了图片层数据显示与否,叠加层和图片层数据共同决定了视频层数据显示与否。对于叠加层而言,它所输出的0xffff和0x0000这两个数据是保留作为层切换数据(相应在叠加层就无法显示0xffff和0x0000的色彩了),也即通常所说的透明层。在模组内部会判断叠加层的数据,如果为0xffff,则当前像素点显示的数据来自图片层,而此时图片层的数据不一定就是最终显示的数据,若图片层数据为0x0000,则最终显示为视频图像;如果叠加层不为0xffff,则还需要判断叠加层数据是否为0x0000,若是,则显示视频层,否,则显示叠加层本身。

图1 层显示原理