新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于ATmegal28的LED显示屏图像数据解码设计

基于ATmegal28的LED显示屏图像数据解码设计

作者:时间:2013-01-18来源:网络收藏

  随着LED-display.cnLEDw.com/">的普及和成本的降低,已经成为公共场合信息宣传的一种重要工具。目前实现对的文字图像更改的方法主要有:显示屏通过串口或网线与计算机连接实现更改;通过GPRS网络实现数据的远程传输,接收后在计算机上用特定软件解码后发送到LED显示屏显示。以上方法始终需要在计算机平台上实现,附加成本较高。设计利用手机作为发送端,发送彩信至GPRS模块,利用单片机直接对彩信图像进行解码然后发送到LED显示屏上进行显示。

  l JPEG解码可行性分析

  该设计所用全彩LED屏接收的数据格式为Xmp格式,Xmp格式是简化的BMP格式。Xmp格式在图像数据前有6个字节表示图像的属性,第1字节为1个点的字节数;第2字节为XMP文件中包含的图片个数;第3,4字节为图像的高;第5,6字节为图像的宽,其后为图像每点的颜色。每点的颜色用2个字节表示(16位色)。由于所用全彩LED屏只有64×64像素,所以JPEG解码后还需进行图像的缩放。

  JPEG解码过程中所需要的缓存主要包括原始JPEG图像数据的缓存、中间变量的缓存以及解出的Xmp数据的缓存。根据JPEG图像的复杂度及压缩比的不同,一般一帧320×240的彩色JPEG图像的大小在2~20 KB。JPEG解码缓存主要用于存储Huffman表,量化表,IDCT解码的临时结果等。这些大约需要8 KB。解出的Xmp数据的缓存要求的RAM相对比较固定为9 KB。综上JPEG解码大致需25 KB的RAM。内部只有4 KB的SRAM,所以该系统外扩了64 KB的外部RAM。

  2 软件实现

  该设计采用avr—gcc作为编译工具。avr-gcc默认设置栈由内部RAM的顶部向下生长。由于图像处理过程中需要占用大量的RAM空间,所以应该通过设置把所有数据区移到外部RAM,只留栈区在内部RAM,避免数据的相互覆盖。

  JPEG解码过程主要包括Huffman解码、反量化及IDCT变换、色彩变换等模块。该文采用的LED显示屏是64×64点像素,并且只能显示Xmp格式的图片。因此在JPEG解码后需增加图像的缩放模块。其流程框图如图1所示。

流程框图

  2.1 Huffman解码的实现

  Huffman解码是解码过程中重要的一环。传统的哈夫曼解码需要逐位查找哈夫曼表,进行比较判断,由于查找过程需要大量的移位及循环。这样的解码效率非常低。针对这种情况,充分考虑到的存储容量的限制,在读文件头时,软件事先构造出不同码长下的哈夫曼码字的最小值表和最大值表如表1所示,最小值在哈夫曼表中的索引以及哈夫曼树各叶子结点对应的编码表。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭