1、51 单片机做电子相册 文/张彬杰简介 如图是自己做的电子相册,只用了一片单片机外,没有用其它芯片。屏幕的分辨率是 160x128。颜色位数是 16 位高彩色。我用 SD/MMC 卡作为存储设备。使用FAT32 作为图象的管理系统。用 51 单片机控制播放和解读 FAT32 结构。同时,加入了对 BMP 文件播放的支持。图象保存在根目录,从 000.*开始,单片机顺序的读取,并显示到彩色液晶上。支持*.bmp 文件,支持取模软件取出的*.bin 文件。一、硬件要求 SD/MMC 卡的存储默认是以 512 字节大小为块的,即 1 个扇区。所以,选择的单片机 RAM 要大于 512 字节。这样方便
2、处理存储的数据。晶振选用时,可以选择单片机支持的最高频率。这样,处理的速度就能达到极限。液晶选择要带有控制器的。这样,一方面方便控制,单片机也有时间做其它的事情。电源使用 USB接口供电。而 SD/MMC 卡使用的电源电压为 3.3V,所以还要用片 LM1117-3.3 进行电源转换,把 5V 电源电压转成 3.3V。SD 卡支持两种总线方式:SD 方式与 SPI方式。其中 SD 方式采用 6 线制,使用 CLK、CMD、DAT0DAT3 进行数据通信。而SPI 方式采用 4 线制,使用 CS、CLK、DataIn(mosi)、DataOut(miso)进行数据通信。SD 方式时的数据传输速度
3、比 SPI 方式要快。采用单片机对 SD 卡进行读写时,一般都采用 SPI 模式。所以单片机最好选用,有硬件 SPI 接口的,这样就可以方便而高速的和 SD/MMC 卡连接。二、电路原理 我选用 SST89E58RDA 做为主控制芯片。它有 1k 的内部 RAM ,有硬件 SPI 接口。最高可用 40M 晶振,还可以设置它的工作模式为 2 倍速度。这样,它就相当于普通 51 单片机的 80M 速度。液晶自带 SPFD54124B 控制器,使用 3.3V 电源。电路原理如图,我除了一片 51 单片机机没有用其它的芯片。电路也很简单如图,单片机最小系统+3.3V 电源转换+SD/MMC 卡+彩色液
4、晶。SD/MMC 卡使用 SPI 模式,和单片机的 SPI 接口直接相连。液晶的 8 个数据 IO 口和单片机的 P2 口直接相连。液晶的其余控制线分别连接至 P3 口。二、速度 电子相册的播放速度够流畅吗?我们来计算下。我使用 40M 的晶振,并打开双倍速度允许。单片机的 SPI 接口可以设置为时钟源的 4 分频,也就是 10Mbps,再乘以双倍速度=20Mbps。这是 SD/MMC 卡和单片机之间的工作速度。再看看一张图片的数据量吧。一张图片的数据大小是 160x128x16=400k。那么这个速度足可以,每秒播放 50 张图片。播放动画片应该都可以了吧。但是,这毕竟是理论值,实际上是达不
5、到的。不过也够快了,足以用来做数码相册用。 三、程序 程序编写要一步一步来了: 1、要会读写 SD/MMC 卡,建立读写 SD 卡的子程序文件。 2、要学会控制彩色液晶,建立液晶控制子程序文件。 3、要了解 FAT32 文件系统,建立 FAT 结构分析子程序文件。 4、建立文件处理子程序,读取分析文件类型并做相应处理。 5、建立主程序调用各个子程序,完成图片的显示。1读写 SD/MMC 卡 SD 卡的特点: 1、两个可选的通信协议:SD 模式和 SPI 模式 2、可变时钟频率 025MHz3、工作电压范围:2.0-3.6V4、卡片带电插拔保护5、兼容 MMC 卡命令由于 SD 卡兼容 MMC
6、卡命令。所以,使用 MMC 卡的命令集。SD/MMC 卡每次通信,传输 48 位,即 6 字节的数据。第 1 字节是命令,紧接着 4 字节是参数,一般用于指定 SD/MMC 卡的字节地址。 最后,一个字节是校验码。一般,命令也就用到 0x40 复位命令、 0x41 初始化命令、 0x51 读扇区命令、0x58 写扇区命令。硬件 SPI 接口电平上,设置单片机的时钟线,默认为 1,设置数据在时钟的后沿移位。注意,在初始化阶段最好设置 SPI 频率为 128 分频,较低速度。等初始化完成再把分频系数改为 4 分频,较高速度,正常使用 SD/MMC 卡。2控制彩色液晶 彩色液晶,只要使用带控制器的就
7、可以了。我用的是带 SPFD54124B 控制器的160x128 分辨率的彩色液晶。当 RS=0、RW 上升沿跳变时,单片机 P2 口传送给彩色液晶的数据是命令。当 RS=1、RW 上升沿跳变时,单片机 P2 口传送给彩色液晶的就是普通数据了。也可以使用带其它控制器的液晶,如 SSD1289。这些液晶控制器,只要通过设置相应的控制线,发送相应数据和命令,就可以很方便的使用了。3 FAT32 文件系统 FAT32 文件系统由结构信息+文件分配表+数据区组成。结构信息,保存 FAT32的结构内容。文件分配表,以 4 字节的大小,记录蔟的链式关系。数据区,记录文件真正的数据。读取第一扇区,既 512
8、 字节的内容,我们可以知道“文件分配表的起始地址”,“每簇多少扇区”和“分配表的大小”。通过计算,我们可以得知根目录的扇区地址,也就是 2 蔟的扇区地址。根目录,用 32 字节大小,记录文件名和首簇地址等信息。文件存放都是以簇为单位进行存储的。公式:任何扇区地址=(记录簇号-2) *每簇多少扇区 +根目录的扇区地址。知道了以上信息,就可以方便的将文件的簇地址转换成扇区地址。但文件的存放是链式结构,我们还要读下一个簇号,直到蔟号为结束蔟号:0x0fffffff。最后对读取的文件内容进行传输。4文件处理子程序 先说说*.bin 的文件吧,它是纯数据文件。一般,用图像取模软件,对图像取摸,就可以得到
9、相应的*.bin 文件。它保存了图象信息,如:0xf800,表示一个像素为红色(16 位 r-g-b 5-6-5)。那么*.BMP 文件呢?一般来说,它由文件头+数据组成。数据是以液晶的最后一行内容开始,一行一行,从左向右,从下向上保存的。所以读取 bmp 文件也并不难,就是有点烦了。5建立主程序 最后,主程序读取通过 FAT32 文件系统,得到根目录地址,再读取根目录的文件记录,得到指定文件的首簇地址。经过地址转换,转换成扇区地址。读取相应数据,经过单片机传输,在彩色液晶上显示图像。显示完一幅图象后,延迟2 秒,继续显示下一幅。四、使用方式 文件名以 3 位数字命名,存放在根目录下,从 000 开始,顺序读取。当读取不到下一个文件时,重新从 000 读取。Bmp 文件是 r-g-b 5-5-5 存放的高彩色图象,图像大小为:160x128。可用 Photoshop,另存为产生。Bin 文件可以由Image2lcd 生成,数据高位在前。用编译工具打开 main.c,编译下即可产生烧录文件。类别:默认分类 | | 添加到搜藏 | 分享到 i 贴吧 | 浏览(172) | 评论 (0) 下一篇: 51 单片机做音乐盒最近读者: