1 引言
TFT-LCD(薄膜场效应晶体管LCD)是一种有源矩阵类型液晶显示器(AM-LCD)[1]。TFT-LCD目前可以在亮度对比度、功耗和寿命、体积和重量等综合性能上全面赶超CRT的显示器件。它凭借优良的性能、大规模生产特性、高自动化程度、低廉的原材料成本、广阔的发展空间,已成为新世纪的主流显示产品,是21世纪全球经济增长的一个亮点,大多数数码产品、商用设备以及展览馆的设备中都有它的身影。
日常所见的涉及图像显示的案例很多都可以考虑用真彩显示器来实现,基于这个思路,传统的相册也发生了新的变化。科技渗透于人们生活中的每一个角落,电子相册的出现使得这类物品有了更加方便的展示和更多的表现方式,人们也更加趋向于使用电子相册。电子相册从实现手段上可以分为硬件类型和软件类型,本设计属于硬件类型。硬件类型的电子相册是使用独立的LCD显示屏和主控芯片等元件展示数码照片的独立电子产品,在一些设计中还可以借助通信口外接到电视机对数码照片进行显示。传统意义上的相册和相框只能静态地展示一张照片,而电子相册却可以实现多张照片的显示,甚至可以动态的显示照片,大大丰富了展示的内容,这便是电子相册的魅力所在。
本设计采用TFT-LCD屏、单片机、SD卡等器件来构成电子相册的硬件电路系统,通过软件编程实现在液晶屏幕上自动或手动播放SD卡内的格式为bin和bmp的图像文件。
图1 电子相册的电路设计框图
2 系统硬件设计
2.1 电路设计框图
整个电路主要由单片机最小系统[2]、液晶模块、SD卡电路和按键模块等组成。其中下载程序模块在实际产品中是不需要的,这里只是方便调试。该电路系统的主要数据通信包括单片机向SD卡电路发送指令、SD卡返回读取数据给单片机,单片机再把数据转发给液晶模块等。其中按键模块用来控制单片机选择不同的图片播放模式。电路设计框图如图1所示。
2.2 部分模块及整体电路的设计
(1) TFT-LCD液晶显示模块
因为本系统所采用的TFT-LCD自带了控制器,因此在硬件设计中的工作量相应减少,仅需将控制线和数据线与单片机相连接,并在中间加入限流电阻,同时接电源和接地的引脚分别接3.3v电源和接地。TFT-LCD
图2 TFT-LCD液晶显示模块
液晶显示模块电路如图2所示。
(2) SD卡电路模块
在SD卡电路模块中,本文采用了SPI总线模式[2]:即使用4线制与单片机进行通信。除了该4线以及地线和电源线外,其他引脚可悬空。另外考虑到数据传输的安全性和稳定性,本设计在通信线上加上一组二极管来保护I/O口。在实际电路中焊接的是SD卡槽而不是SD卡本身。SD卡电路模块如图3所示。
(3) 电子相册的整体电路
电子相册的电路设计原理图如图4所示,主要包括电源滤波指示模块、单片机STC12C5A60S2最小系统、下载模块、电平转换模块、TFT-LCD液晶显示模块、SD卡电路模块以及一些简单的按键电路。
3 系统程序设计
3.1 主程序流程图
图3 SD卡电路模块
图4 系统电路原理图
从应用层面上,开机上电后,单片机将发送指令来分别复位和初始化SD卡和彩屏,然后通过FAT32文件系统调用底层的SD卡驱动按块读取数据[3,4],经由单片机根据文件格式进行数据处理后再显示到彩屏,根据按键的响应,执行相应的子流程。主程序流程如图5所示。
3.2 文件处理子程序
(1) bin文件
通过Img2Lcd取模软件对图片进行取模,可以获得图片的纯数据文件即bin文件。对每个像素点取16位的色彩数据,这能遵循彩屏驱动中数据读取函数的读取方法。bin文件读取流程如图6所示。从根目录下文件的目录项信息中可以得到文件的拓展名,由此对每个字符进行判断,满足条件才开始读取。由于缓存只设为512字节,这与单片机中的RAM有关,因此每一簇需按扇区进行读取,如果一扇区是512字节,那么一次能传给彩屏32个像素点的数据。因此,取模获得的bin文件是有利于本设计中电子相册的实现。
(2) bmp文件
bmp是windows操作系统下的一种无损图片格式,windows系统自身内部的各绘图操作也都是以bmp为基础,可见该图片格式在操作系统中的地位。从数据结构上看,它由位图文件头、位图信息头、调色板和位图数据组成[4]。在位图文件头中,本设计需要采用记录在偏移量0x000A处的信息,它描述的是从文件开始到位图数据的距离(偏移量)。此外,在0x0000处2字节的文件标识可用于判断该文件是否是“BM”格式。
图5 主程序流程图
图6 bin文件读取流程图
设计中考虑到彩屏的规格参数,使用的bmp图片都要符合16位深、160×128像素这两个条件,可以用Photoshop来生成。更细节的规定,文件位图信息头中偏移量0x001E的Compression的值要为0,即无压缩算法,此时位图没有色彩表,每16位/像素,但这16位数据又和彩屏的显示模式不大一样。具体为最低5位表示B的分量,中间5位表示G的分量,再高5位表示R的分量,最高位保留为0,就是所谓的RGB555。如果直接用从SD卡中读取的bmp图片数据传递给彩屏,显然会造成显示颜色的偏差。通过取模获得的纯数据文件则是RGB565模式,能够保证彩屏可以正常显示图片,不存在颜色显示的偏差。因此,如果要正常显示bmp图片,需要在文件处理中首先进行解码处理变成RGB565模式,具体可以采用以下方法:将原来中间5位的G扩展成6位,即左移一位后右边补0。另外,bmp图片的数据是按从下往上、从左往右排列的,这时图像的高度为正数。此时,从左下角开始逐行往上扫描,一幅画面的最后一个像素点应该是右上角。bmp文件处理流程如图7所示。
图7 bmp文件处理流程
结束语
本文设计了基于TFT-LCD显示屏的电子相册,为提高显示刷新速度采用了STC单时钟单片机和较高频率的外部晶振,并使用硬件SPI接口实现与SD卡数据的快速传输。本文设计的程序可以通过FAT32文件系统来访问SD卡中的文件,而不是通过指定存储空间单元进行读取,这样系统具有读取用户后期存储的图片的能力。文中还分别从bin文件和bmp文件中解析文件数据构成,并设计算法从bmp文件中提取图像数据,并进行颜色模式转换的相关处理,最终实现电子相册的功能。
本文设计的电子相册成本低廉,具有一定的工程应用价值。但是电子行业也是日新月异的,现在显示技术也有了更大的发展,如裸眼3D屏幕,视网膜屏幕等,处理芯片也越来越快。相信在不久的将来,市场又会涌现更多富有创意、性能强劲的数码产品。
参考文献:
[1] 申智源.TFT-LCD技术:结构、原理及制造技术[M].北京:电子工业出版社,2012.
[2] 陈桂友,柴远斌.单片机应用技术[M].北京:机械工业出版社,2008.
[3] 张洪涛,莫文承,李兵兵。基于SPI协议的SD卡读写[J].电子元器件应用,2008,10(3):42-43.
[4] 张明亮,张宗杰.浅析FAT32文件系统[J].计算机与数字工程,2005,33(1):56-59.
[5] 杨明极,陈方县,吴学君.嵌入式系统中SD卡的FAT32文件系统的设计[J].电声技术,2010,34(4):36-39.
[6] 李伟,张利华.BMP文件解码的研究与实现[J].计算机工程与设计,2006,27(7):1180-1182.