STM32F407开发板配置了TF卡接口及相应的文件系统,其接口电路如图1所示。
由于采用了一款SPI接口的2.2寸TFT显示屏,故要实现数码相框功能需要在其TF卡的读写功能上重新进行整体的修改和调整。
图1 TF卡接口
在整体修改和调整过程中,主要是依照下面3个步骤来完成:
- 替换原显示驱动
关于TFT显示屏的驱动在前面已经做过介绍,这里就不再重述。但为了后续的处理需要将其配置成独立的功能模块以供调用,否则很在其它地方调用它。
此外,就是将原来的显示模块及相关调用屏蔽。
2. 恢复界面显示
由于新的显示驱动函数与原驱动函数存在一定的差别,因此在恢复原显示界面时,需以新的显示函数来替代原有的功能。
在恢复原界面的基础上,新的界面效果如图2所示。
图2 新界面效果
在未使用原字库的情况下,用工具软件重新提取了相关汉字的字模,见图3所示。
图3 提取字模
为了控制运行的进程,在显示图片前为其添加了键控处理,其语句为:
key = key_scan(0);
while(key != KEY1_PRES)
{
key = key_scan(0);
}
添加键控后的处理界面见图4所示:
图4 开始浏览
- 检测TF卡读取功能
为验证TF卡的读取功能,在恢复图像显示功能前可恢复图片文件名的显示功能,其语句为:
piclib_ai_load_picfile(pname, 0, 0, 240,320, 1);
LCD_ShowString(20,12,(char *)pname); ```
实现图片文件名称显示的效果如图5所示:
图5 显示文件名
- 恢复图像显示功能
在完成界面恢复后,要恢复图像显示功能必须对相关的图像显示函数进行更新和补充。
以BMP位图显示为例,其使用的函数为:
uint8_t stdbmp_decode(const char
*filename)
该函数所涉及的图像显示函数为:
pic_phy.draw_point(uint16_t x, uint16_t
y ,uint16_t c)
其替代函数为:
void ili9341_draw_pixel(uint16_t c,
uint16_t x, uint16_t y)
恢复后的BMP位图显示效果如图6至图8所示:
图6 显示效果
图7 显示细节
图8 显示细节
总之,在原功能的基础上要以新的显示驱动来恢复其原有功能还是需要花费一定努力的,并采用一些方法的,当然其效果也是非常令人兴奋的!
视频演示: