基于S5PV210开发板裸机实现电子相册

一、项目描述

硬件平台:GEC210
项目要求:在GEC210裸机上实现数码相册:

(1)程序运行时显示主界面:从上往下滚动显示程序介绍和使用说明(自己设计文字格式);

(2)按下K2键从主界面进入照片浏览模式:按下k3键前翻、k4键后翻,5秒内没有任何按键自动循环播放照片,5分钟没有任何按键则重回主界面;

(3)可以自行添加使界面更美观或使用更人性化的功能;
说明:照片格式采用image2lcd生成的带头部格式的文件,至少5副照片

二、设计思路

基于S5PV210开发板裸机实现电子相册_第1张图片

三、程序要点

1、字幕滚动
利用LCD视窗(视口)相对于缓冲区移动,实现视窗滚动的效果。

基于S5PV210开发板裸机实现电子相册_第2张图片

局限于我还没学会控制窗口叠加,在这里我将LCD (800*480pixels) 分为两个窗口:
win1:大小 (40*480pixels) 位置 (0,0)->(39,479)
win0:大小 (760*480pixels) 位置 (40,0)->(799,479)

在win1中初始化视窗vid1,大小和win1一样,位置从win1的(0,0)开始。初始化时视窗取得缓冲区framebuffer的起始地址,视窗显示的结束地址设置为:framebuffer+视窗大小(字节数)。

之后在主函数中,通过循环使得rVIDW01ADD0B0以及rVIDW01ADD1B0每隔一段时间增加40*4(字节)即地址偏移到下一行,就可以实现滚动了。

2、看‘萌’狗

基于S5PV210开发板裸机实现电子相册_第3张图片

在主界面,我通过不断的循环喂狗避免发生看门狗中断。一旦按下K2键(或者其他按键按下)的话,我就喂最后一次狗 (5s) 就不理它了。直到5s钟后看门狗受不了发生中断,进入看门狗中断服务。

此时根据置位的中断标志wdt_flag,设计程序进行使LCD自动显示下一张照片(此时wdt_flag在结束的时候重新置0)。

由于之前我们没有喂狗,狗在快饿死的情况下 (WTCNT==0) ,自己跑去仓库 (WTDAT:保存重新装载计数初值2s) 中重新获得食物,继续等待下次中断发生。

每次发生看门狗中断都会触发LCD显示下一张图片(建议显示的程序体不要写在中断服务中,以免影响其他中断的响应),直到150个回合 (5分钟) 看门狗等到主人回来了,程序回到主界面,继续持续喂狗。
*注:由于调试需要,程序设计为20s回到主界面

3、第二缓冲区
在刷新显示图片的时候,如果直接往缓冲区buffer里面写入数据的话,会出现图片显示是扫描的方式显示的。因而可以借助第二缓冲区,先向第二缓冲区写入数据,待写入完全之后用函数memcpy(头文件:string.h)将第二缓冲区的数据拷贝到LCD缓冲区,这解决了图片刷新的视觉卡滞等问题。

四、程序源码

大家有兴趣去了解我的代码可以通过下面的云盘链接去下载,代码注释可能不是很明细,不过也不是很难理解。
百度网盘:电子相册
密码:6tr2

你可能感兴趣的:(基于S5PV210开发板裸机实现电子相册)