本帖最后由 znmcu 于 2012-12-23 00:48 编辑
振南QQ 987582714 znFAT发布与支持网站 www.znfat.com
STM32F4+TFT触摸屏+SD卡+znFAT 实现画图板及存BMP
源代码下载:
paintboard.zip
(592.16 KB)
这里我们要实现一个简单的“画图板”,并可以将绘制的图像保存为图片。当然,我们所说的不是电脑上的软件,而是一个嵌入式的实验,其中包含了单片机或微处理器、存储设备、TFT液晶与触摸控制器等。 其实“画图板”的原理很简单,获得触摸屏上的点(x,y)座标位置,然后在这个点上画上若干个点(画点的数量,就会影响画图的线条宽度)。当触摸笔在屏上连续的滑动时,自然就会产生相应的线条。如下图: 图中上面的线条比下面的线条细,是因为上面在每一个触摸的座标(x,y)上,所画的点的个数比下面多。画图板更重要的一个功能是能够选择更换画笔颜色。这一功能通常我们是使用“颜料盘”来完成(就像Windows中的画图板程序中一样)。如下图:
在显示的区域中,我们放几个颜色块,它们各自占用相应的矩形。程序可以判断当前触摸笔所处的座标是否在这些矩形区域内,如果在则将画点的颜色更改为相应的颜色,否则就用当前的颜色画点。这样,就完成了一个简单的画图板。 画完图之后,我们希望将我们的“杰作”保存为图片,这该如何来作呢?我们可以使用SD卡来作为存储设备,读取显示屏上所有点的像素值,依次写入到SD卡的文件中(图片格式使用BMP,因为它最简单,无需作压缩处理)。这里最大的问题在于:如何将像素数据写成一个在SD卡目录下的BMP文件。这件事情其实并不容易,涉及到文件系统,比如FAT32等(正是因为有文件系统来管理存储设备的存储空间,我们才会看到那些呈现在我们面前的一个个的文件)。FAT32文件系统有一套庞杂而完备的协议,我们要想以文件的方式来读写数据,就必须要遵循这些协议(这些协议用于规定文件目录如何组织,数据如何存储等)。我们需要写一套代码来实现对文件的操作,如何来写?似乎毫无头绪! 为了能够方便而轻松的完成对存储设备中文件的操作,振南花费了大量精力来研究FAT32的具体实现和解决方案。现在,大家可以用使用振南的znFAT来实现这些文件操作的功能。 实验中,我们所使用的实际芯片和器件:核心处理器STM32F407(意法半导体的Cortex-M4内核ARM处理器,性能比较高)、TFT液晶(控制器为ILI9325,320X240分辨率,16位色)、ADS7864(4线触摸控制器,对电阻触摸产生的模拟量进行测量,换算得到相应的屏上座标)、SD卡(4G卡容量的SDHC卡,使用振南的SD卡模块与处理器相连接)。 上面所说的是硬件器件,在软件上我们首先要使用的是振南的znFAT(用于实现对SD卡上文件的读写操作),其次TFT液晶和触摸屏的驱动与程序移植于STM32F103(原属于一款开发板的实验例程,这里直接拿来使用,F407与F103的固件库是比较相似的!) 再来看一下本实验的示意图: 图中STM32F407的测试板使用的是意法官方的M4 Discovery。实验中使用的芯片与器件都很常见,以方便大家DIY。
在线视频演示:
实验中存取的BMP文件:
硬件平台:(STM32F407 Discovery 测试板+振南的SD卡模块+触摸屏) 实验效果图(一些实验中间效果,对一些单一功能的测试): 最终实验效果:
|