当前位置:首页 > 消费电子 > 消费电子
[导读]4.系统软件设计本系统的软件主要由系统各模块初始化、μC/GUI建立人机交互界面、文件系统读取图片及字库文件、图片解码算法的实现、触摸浏览功能及幻灯片播放功能等功能模

4.系统软件设计

本系统的软件主要由系统各模块初始化、μC/GUI建立人机交互界面、文件系统读取图片及字库文件、图片解码算法的实现、触摸浏览功能及幻灯片播放功能等功能模块组成。

4.1 μC/GUI建立人机交互界面本系统利用μC/GUI builder建立μC/GUI人机交互界面,在μC/GUI builder中建立窗体、文本框、控件等、将编译后产生的C文件添加到工程目录中。μC/GUI builder的应用,缩短了界面开发周期,修改灵活方便,后期修改界面时,只需要在μC/GUI builder修改相关组件,编译运行即可实现程序的修改。

4.2 μC/GUI显示汉字

μC/GUI中通过查找字模的方式来实现字体的显示。字体库中的每一个字母都有其对应的字模,字模由结构体GUI_FONT和GUI_FONT_PROP统一管理。但是μC/GUI中本身只支持英文,没有提供中文的字库源码文件。本系统在修改μC/GUI字库显示驱动函数的基础上实现了汉字的显示,以显示12*12点阵汉字为例,具体的修改步骤如下:

第一步:在GUI.H中声明全局结构体对象GUI_Font12_HZ;

第二步:定义存放字模数据的数组;

第三步:定义用于说明每个字母的字模数据在程序段存储方式的结构体;

第四步:根据汉字内码高位定义多个结构体,用于存放字库字模编码和字模数据存放地址的映像;

第五步:将创建的汉字库文件HZK12.C添加至μC/GUI工程,在主函数中调用显示函数。

通过以上步骤实现了中文汉字在μC/GUI界面的显示,经测试,汉字显示流畅稳定。

4.3 图片解码算法

JPEG图片解码显示包括解析JPEG头文件信息、基于连续DCT编码的JPEG解码算法处理、转换图像格式、液晶显示等部分,总体流程图如图7所示。

 

 

4.3.1 解析JPEG头文件信息

对JPEG解码的过程进行初始化,获取JPEG头文件中的相关信息,本系统的方法是设计一系列的结构体对应头文件中的各个信息标记,并存储标记内表示的信息,如色彩信息、采样比、图片尺寸、量化表、Huffman解码表等重要信息。

4.3.2 基于连续DCT编码的JPEG解码算法

基于连续DCT编码的JPEG解码算法包括熵解码、反量化和反向离散余弦变换(IDCT)共三个步骤。JPEG基本系统的解码器结构图如图8所示。

 

 

(1)熵解码。熵解码的输入信号是被压缩编码的比特流,输出是被解码得到的DCT变换系数的量化值。通过查找Huffman解码表将压缩图像数据还原成交流AC系数和直流DC系数组成的量化数据块。

熵解码对读入的图像数据进行DC直流系数和AC交流系数的Huffman解码。JPEG算法提供标准的Huffman码表,针对每幅图像都有各自不同的特点,系统熵解码采用自适应的Huffman码表。采用自适应的Huffman码表,首先统计输入图像数据的特性,生成码树,再反推得到各级Huffman码表。

在JPEG头文件信息的标记中,定义了一张表用来记录Huffman树其代码长度限制在16bit以内。JPEG头文件信息一般包含4个Huffman码:用于解码直流DC系数的Huffman码表,其中包括一个亮度表和一个色度表;用于解码交流AC系数的Huffman码表,其中包括一个亮度表和一个色度表。根据Huffman码表在文件中的保存形式,设计Huffman解码一个码字的程序,程序流程图如图9所示。

 

 

解码时,输入图像压缩后的数据流,从数据流中读取比特数据组成的码字,在Huffman树中搜索码字的位置,根据码字的位置确定解码的值,解码输出结果是一个8位值。在Huffman解码过程中,如果产生了一个0xFF,就用0xFF0x00代替,把0xFF0x00当做0xFF进行处理。

(2)反量化。反量化的输入信号是熵解码后的数据,通过查量化表进行计算,将在压缩过程中经过DCT变换后的频率系数还原出来,反量化成DCT系数。

JPEG文件中包括亮度量化表和色度量化表两张量化表,将Huffman解码得到的系数矩阵与相应的量化矩阵相乘,即得到反量化结果。

由于数据是按8×8矩阵的“Z”字形编排,所以要对反量化运算的结果进行反Zig-Zag变换。

(3)反向离散余弦变换(IDCT)。反向离散余弦变换把频率域DCT分量系数反转成颜色空间域表示的图像数据。对反量化后得到的DCT变换系数经过反向离散余弦变换IDCT得到图像的像素。反离散余弦转换的输入是频率域的一个8×8分量系数块,输出则得到空间域的一个8×8像素块。

在程序运行过程中,IDCT运算量较大,有大量浮点乘法和加法运算,程序执行速度较慢,这对图片能否流畅的显示有很大影响。基于此本统软件对IDCT算法了优化,采用一种快速IDCT算法[5],把二维IDCT分解成行和列两个一维IDCT,再将IDCT算法通过数学变换转化为离散傅里叶逆变换(IDFT),利用矩阵变换简化计算。在开始进行二维IDCT转换时,先对输入的反量化后的数据进行8次一维的行变换,并将存储运行结果,再对运行的结果进行8次一维的列变换,经过两次变换,得到的就是二维IDCT运算变换的结果。程序流程图如图10所示。

 

 

4.3.3 色彩模式转换

由于液晶支持的是RGB格式的图像数据,需要把执行完解码过程得到的YCrCb格式的数据转换成RGB模式,将256级的YCrCb色彩模型转换成RGB色彩模型的计算公式如式(1)。

 

 

因为R、G、B的取值范围为[0,255],需要对运算结果进行阈值保护,对超过255的数值,限定在255,小于0的数值,限定在0.经过运算最终可以得到RGB模式的图像数据,完成解码过程。

4.4 图片浏览模式

本系统的图片浏览模式有触摸手动浏览和定时自动浏览两种模式可供选择。在触摸手动浏览模式下,有“下一张”,“上一张”,“退出”控件。通过操作触摸屏上下翻页的控件,实现浏览图片的功能。在浏览完最后一张时,系统会自动跳转到第一张。在定时自动浏览模式下,界面仅有退出控件,每隔3秒,自动进行下一张图片的浏览,并循环显示。

5.系统调试

5.1 硬件调试

通过硬件电路设计,检查元器件之间的电气连接,下载基本调试程序,检测系统板运行状况,在对USB枚举测试时,通过USB数据线连接至电脑,可以对flash存储设备进行读写操作。

5.2 软件调试

5.2.1 LIB库的编译

本系统的软件开发环境是MDK,在程序基本模块的底层驱动编写完善以后,将STM32的底层外设驱动库和μC/GUI库函数编译封装成LIB库,在后期程序开发时,大大提高了程序的编译效率,缩短了软件开发周期。

5.2.2 Finsh Shell调试组件本系统采用RT-Thread嵌入式操作系统,通过其自带的用户命令行组件Finsh Shell查看系统运行状况。通过超级终端输入相应的命令来使用Finsh Shell.Finsh Shell在RT-Thread中被设计成一个独立的线程,通过串口设备输入相应的命令,系统对用户命令进行解析执行,可用来获取系统运行时信息,对任意寄存器和内存地址进行读写操作,还能够直接在shell中调用系统函数,访问系统变量。FinshShell组件的使用,在很大程度上提高了调试程序的效率。

5.2.3 图片解码调试

由于图片解码算法占用内存较大,考虑到图片解码算法在STM32中可能会因为内存分配不足而无法正常运行,在验证图片解码函数的正确性时,先在PC机的VC模拟器上运行,用以给图片解码算法提供一个理想的运行平台。在模拟器中,用数组存储图片二进制源码,用解码算法对图片的数组数据进行解码,验证解码算法的正确性。在模拟器运行正确后,再将图片解码算法移植到本系统上运行,实践证明,STM32的内存足以支持图片解码算法正常执行。实验在VC模拟器中运行的效果图如图11所示。

 

 

6.结论

本文介绍了基于RT-Thread和STM32数码相框的设计方案,通过设计相关硬件电路和软件算法,实现了数码相框对JPEG格式图片文件的浏览功能。本系统设计的基于连续IDCT变换的JPEG解码算法能够正确稳定完成JPEG格式图像的解码,解码速度较快,恢复图像的质量良好。实际测试表明,本方案具有很强的实用性。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭