首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于STM32的BMP图片解码系统[图](2)

基于STM32的BMP图片解码系统[图](2)

2.2 液晶显示部分电路设计
液晶显示部分主要由微控制器STM32F103RBT6驱动AM240320LSTNQW-00H完成人机界面状态的显示,通过发送命令字,完成液晶模块的初始化,完成对内容的显示,显示部分的硬件电路接口图如图2所示。

图2 系统液晶接口原理图

2.3 SD卡读写部分的硬件设计
处理器主机可以选择SD卡模式和SPI模式中任意一种模式同SD卡通信,SD卡模式允许4线的高速数据传输。SPI模式允许简单的通过SPI接口来和SD卡通信,这种模式同SD卡模式相比就是丧失了速度。通过读取SD卡中的文件,识别出各个目录下的图片数据,然后对数据进行解码。驱动液晶完成图片的显示,SD卡接口部分电路如图3所示。

图3 SD卡接口原理图

  3 BMP图片的解码算法3.1 BMP文件组成
BMP文件由文件头、位图信息头、颜色信息和图形数据4部分组成。BMP文件头数据结构舍有BMP文件的类型、文件大小和位图起始位置等信息,它占14个字节。BMP位图信息头数据用予说明位图的尺寸等信息,它占40个字节。BMP颜色表用于说明位图中的颜色,它有若干个表项,每一个表项定义一种颜色。位图信息头和颜色表组成位图信息,位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描行之间是从下到上,Windows规定一个扫描行所占的字节数必须是4的倍数(即以long为单位),不足的以0填充。
3.2 BMP图片的读取显示算法
首先根据读取到的BMP图片数据得到BMP的头部信息,得到文件类型,大小和文件的起始位置,然后读取BMP位图信息头,这里面记录了图片的格式的信息,如BMP图片的宽度和高度,以及每个像素所占的位数,下面举例来说明BMP图片的解码过程。
常用的BMP图片格式有24位真彩图,16位图,和32位图,解码过程略有不同,下面分别介绍,首先是24位图,当根据BMP的头文件信息得到数据的起始地址之后,从起始地址开始读数据,假设每次读入512字节,由于AM240320TFT采用16位的565方式显示,即就是说需要把每个像素所占的24位致据,也就是3个字节,转换为16位的数据,即2个字节,这里以前3个字节为例来说明解码算法:

其中codor为需要提供给液晶显示器每个像素点的颜色值,tmp_color为解码过程中的临时变量,数组temp存储24位格式的像素值。同样也可以解码16位颜色图和32位颜色图,解码16位颜色图的算法比较简单,只需要解出连续的两个值然后组合成16位的565格式的颜色值送到液晶显示,其解码算法如下:

在32位图的解码过程中需要注意一个问题,就是32位图中实际上只使用了24位存储像素值,也就是32位中的前3位,最后一位没有存储像素值信息,所以在解码的过程中只需要解码前3位,将第4位跳过,具体解码算法如下:

继承事业,薪火相传
返回列表