×
单片机 > 单片机程序设计 > 详情

一种简易数码相框的设计

发布时间:2020-06-06 发布时间:
|

引言
伴随着数码科技的快速发展以及数码相机的日益普及,传统的相册和相框由于自身局限性已经不能完全满足人们日益增长的对于照片的有效存储和分享的需求。鉴于此,数码相框应运而生,经过几年的发展,数码相框的外观已经非常接近传统相框,而且更为精致。从200万像素发展到目前的600万以上像素,画面精度和质量已经有了大幅上升。此外,还有多功能数码相框,除了能展示数码照片外,还可以播放MP3/MP4/幻灯片、电影/影像/电视,以及看电子书、设置闹钟和日历等。
本文介绍一种简单、低成本的数码相框设计,主要由LPC1100系列MCU、SD存储卡、TFT液晶屏以及电源等外围电路组成。通过信号处理芯片LPC1114实现BMP图片文件的读取以及TFT液晶屏的显示。经试验,此数码相框可以存储和展示几百甚至上千张的照片,能够很好地完成SD卡中照片的循环播放,性能稳定且画面清晰,比普通相框的单一功能更有优势。

1 硬件设计
本数码相框功能非常简单,把320×240像素的16位或24位BMP照片放入SD卡中,数码相框就会循环读取SD卡中的照片,并逐一显示。硬件平台以NXP公司生产的低功耗、高性能ARM Cortex—M0内核微控制器LPC1114为核心,配合一个SD卡和一个3.2英寸的TFT显示屏。数码相框硬件结构框图如图1所示。


1.1 电源电路
电源电路作为本系统的供电电路具有十分重要的作用,是整个系统的动力核心。数码相框一般情况下都是处于运行状态,非常耗电,不适合采用电池供电,所以这里采用直流电源供电。首先,220 V的交流电经过变压整流转换成9~12 V的直流电压,再通过二极管IN5819进入三端稳压器7805转换成5 V电压,然后通过西伯斯公司(Sipex半导体)生产的低压差(LDO)稳压芯片SPX1117转换成系统需要的3.3 V电压。设计中选取7805主要出于两方面的考虑;一是所需外围元件少,内部有过流、过热及调整管的保护电路;二是可以扩大输入电压范圈,并为其他5 V电路提供电源。IN5819的作用是防止电源正负极接反,SPX1117是将7805稳定好的5 V电压转换成系统需要的3.3 V电压。电源电路如图2所示。


1.2 SD卡的硬件电路
存储器采用普通SD卡,容量选择在2 GB以下,其SD卡存储电路如图3所示。SD卡最大的特点就是具有加密功能,可以充分保证数据资料的安全性。SD卡支持两种可选的通信协议,分别为SD模式和SPI模式。基于主控芯片的选择,设计中采用SPI模式为彩屏模块提供字库和图库,这样大大降低了硬件要求,同时又能很好地满足系统的需求。需要注意的是,不同卡座引脚有所不同,所以在使用SD卡座时,注意先检查引脚区别。

1.3 TFT液量模块
这里选择市场上比较流行且方便购买的3.2寸TFT彩屏模块,其控制芯片为ILI9320。为了节省LPC1114的I/O端口,在数据的输入端口采用数据锁存器74HC573进行数据锁存,以实现两次8位数据的分转。背光采用8050三极管控制,串联10 kΩ限制电阻,放大电流达到300mA,完全能为5路LED提供足够的电流。触摸屏选择电阻式触摸屏,驱动芯片为ADS7843,以此实现对于数码相框的键盘操作。其模块电路如图4所示。


1.4 处理器电路
处理器部分电路是本系统的核心电路,设计中选取NXP公司推出的基于ARM Cortex—M0内棱的LPC1100系列MCU LPC1114。LPC1114属于32位微控制器,主要面向8、16位微控制器的应用,具有高性能、低功耗、简单指令集和统一编址寻址等优点,相对于市场上存在的8/16位架构来说,它有效地降低了代码长度。它不仅能执行基本的控制任务,而且能进行复杂的运算。执行效率的提高直接转换为能耗的降低。目前LPC1100系列MCU运行速度高达50 MHz,其功耗也得到了很大程度的优化——平均电流不到10 mA。[page]
LPC1114作为LPC1100系列的一种,内部资源非常丰富,简要介绍如下:
①多达42个带有配置上拉/下拉电阻的通用GPIO,驱动电流可达20 mA;
②具有一个增强快速模式(FM+)I2C接口,4个通用定时器/计数器,8通道10位ADC;
③32 KB片上Flash可编程存储器,高达8 KB的SRAM;
④一个RS-485/EIA-485标准的通用异步串行收发器,两个具有SSP特性的SPI接口;
⑤拥有集成PMU(电源管理单元),可自动调整其内部的电压调节器,以降低睡眠、深度睡眠和深度掉电模式期间的功耗。
控制部分电路其实就是LPC1114的最小系统电路,主要由时钟电路、调试电路和复位电路组成,控制电路如图5所示。

2 软件设计
2.1 TFT彩屏模块驱动
彩屏模块程序可以分为两大类:一类是内部函数,主要由复位函数、写数据函数、写寄存嚣函数、光标设置函数、显示窗口设置函数、清屏函数等组成,供TFT模块内部驱动程序调用;另一类为外部函数,主要由TFT初始化、背光控制、显示测试、写点函数等组成,专门提供用户应用程序调用。
2.2 文件系统FatFs的移植
学习SPI总线时已经介绍了读/写SD卡的方法,对于SD卡的读写操作都是以扇区为基本单位进行的,但是,系统又是如何读取的呢?又是怎么知道文件存放在哪些扇区呢?本设计采用文件系统FatFs的方法对存储器空间进行组织和分配,并对存入的文件进行保护和检索。具体来说,也就是它负责为用户建立文件、存入、读出、修改、转储以及控制文件的存取,当用户不再使用的时候撤销文件。
FatFs文件系统的结构主要分为3个层;磁盘I/O操作、FatFs模块和应用层。前两层分别是移植文件系统需要编写的驱动函数层和文件系统操作层,而最后一层就是用户操作层,当文件系统移植完成后,用户可以根据自己的需要编写应用程序,操作磁盘。
FatFs作为一种开源项目具有容易移植、代码小、占用资源少、支持RTOS和多扇区读/写等特点,非常适合微处理器使用。要移植FatFs文件系统,首先需要到FatFs文件系统的官方网站,下载文件系统源代码。设计中使用的版本是FatFs R0.08b,具体移植步骤介绍如下:
①解压下载的文件系统,可以看到一共有两个文件夹:一个是doe,包含FatFs的描述、特性说明等;另一个是src,可以存放所有的源代码信息,一共有8个文件。
②在工程下新建一个文件夹,存放文件系统源代码。
③把源代码都添加到相应的工程中,首先根据需要修改数据类型,在integer.h中修改适合的数据类型。
④配置文件系统,可以根据字节的需要进行配置,从而减小代码和内存空间。
⑤打开diskio.c文件,编写相应的函数,如初始化磁盘函数、磁盘状态函数、读/写扇区函数、磁盘相关功能控制函数等。
⑥最后,需要在ff.c中添加函数get_fattime,此函数可获取操作时间,便于在文件属性中填写相应的创建、修改、访问时间。
2. 3 BMP位图显示
BMP是Windows操作系统中的标准图像文件格式,应用非常广泛。它采用位映射存储格式,除了图像深度可选择以外,不采用其他任何压缩,因此,BMP占用的空间很大。BMP文件的图像深度可选择1位、4位、8位、16位、32位等。BMP文件存储数据时,图像的扫描方式是按照从左到右、从下到上的顺序。典型的BMP图像文件由4部分组成,如表1所列。


位图显示是通过函数参数传递文件名,通过文件名读取文件数据。读取位图数据时,先读取54字节的头信息,再根据头信息判断是否为位图图像。如果不是位图,直接返回不再读取数据;如果是位图,再判断是16位还是24位,并循环读取数据信息,经过数据转换后发送到TFT进行显示。
读取位图文件需要调用FatFs文件系统的API函数,在读取文件时需要注意以下3点:
①首先要f_mounth函数注册工作区,在文件读取完成后,再调用这个函数来注销工作区;
②打开文件需要调用的f_open函数,当文件读取完成后,再调用f_close函数关闭文件,所以这两个函数必须成对出现;
③在读取文件时,可以由f_read函数返回的结果和次函数的读取结果来判断数据是否读取完成。


2.4 系统整体工作流程
图6为数码相框软件流程图。系统上电后先按顺序初始化系统时钟、SSPO总线、SD卡以及TFT,之后循环扫描显示数码照片。代码编写过程中完全实现结构化,只需要直接调用数码相框,扫描显示函数BmpFileSean()即可实现其功能。



结语
数码相框是基于NXP公司推出的Cortex—M0内核LPC1100系列ARM芯片LPC1114设计的,主要从硬件和软件两个方面介绍了一种简易数码相框的制作过程。硬件电路较为简单,软件方面通过FatFs文件系统的移植,能够很好地完成BMP图片的循环播放。经试验,LPC1114微控制器能够稳定地实现数码相框的基本功能,实物效果如图7所示。


对于一些特殊效果尚无法实现,再加上除了BMP格式外,都要涉及解码问题,而使用微处理器软件解码非常缓慢的。对于这些不完善的地方在后续的研究中将逐步解决。




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C8051F020的UART