如题,端午节废寝忘食奋斗三天出结果——(OV7670+FIFO+3.0TFT)+代码、思想详细注释——有图有真相!
一直都是从神坛拿东西,这回共享一回,有详细注释。
摄像头模块是guanfu_wang那儿买的,效果很牛X!
以下是主函数中说明:
/***********************************************************
XXXX:Designed by LuoFaJiang —— 刺客
如有雷同,当没看见!
说明:该程序中SCCB部分及摄像头初始化部分照抄guanfu_wang的,表示感谢哈
在这儿给他打个小广告哈:http://shop37116146.taobao.com/
其余FIFO部分为参照guanfu_wang的程序及datasheet自己写的,第一次看着
英文资料弄,比较头痛。
感觉思想不错,给大家分享下,希望对初学者有帮助!
————————————————————————————————————
————————————————————————————————————
主要思想为:
始终保持FIFO片选和读(WEN)有效(这个和guanfu_wang的例程应该是
不一样),在进入循环前,首先FIFO_WRST_L();为FIFO第一次复位做准备,然后
等待帧中断(VSYNC),在中断中,首先判断前一帧是否写完,如果没写完,
就不要这一帧的数据,退出中断继续写上一帧,如果写完,就复位写FIFO,
开始写入数据,然后(其实和FIFO几乎同步,但是写TFT比写F IFO慢
得多,故不用担心数据出错,同时能保证高效和数据准确)复位读FIFO,开
始写TFT,如此循环。
总的说来,程序流程设计效率还是比较高(具体多少帧/S没算过,大概可
以达到诺基亚7100S手机摄像头2/5的速度,大概在5~8帧/S),还说过得去吧,呵呵
我已经很满足了...
—————————————————————————————————————
—————————————————————————————————————
编程环境:
AVR Studio4.17 + WINAVR2010
硬件环境:
Mega128 @ 16M 使用Mega128在3.3V下小小超到16M,比较稳定)
TFT为WQVGA3.0寸240*400屏,安富莱的,驱动为SPFD5420A
注:程序中delay.h为修改过的延时函数,针对8M晶振,包含的东西比较繁杂,
,所以就不加进来了,大家可以自己写一个代替,但是建议大家用库的延时
函数,否则一优化就被和谐了!!!
其中刷屏速度没测过,或许还能高一点,哪位师兄搞出更优化的说一声哈!!!
再有,下面图片是在傍晚用手机照的,手机130W的像素,大家将就看了,另外,接线
是自己飞线,没画原理图,接线在程序定义里面都有,你懂的!
先贴主函数代码:(全部程序在下面链接)
int main(void)
{
PIN_Init(); //TFT引脚初始化
T_SPI_Init(); //SPI初始化
TFT_Init(); //TFT初始化
Pant(0x0000); //TFT清屏
Sensor_Init(); //传感器初始化
M128_INT01_Init(); //外部中断0,1初始化
FIFO_OE_L(); //FIFO片选使能
FIFO_WEN_H(); //FIFO写使能
FIFO_WRST_L(); //为FIFO第一次复位做准备
asm("sei"); //开全局中断
PORTA=0xff;
DDRA=0xff; //A端口输出,用于下面设置TFT窗口参数
Address_set(0,0,239,319);//设置TFT窗口参数为240*320
PORTA=0xff;
DDRA=0x00; //A端口上拉输入,以免影响摄像头和TFT数据传输
//*********************************
//*********************************
while(1)
{
if(!Frame_Writed) //查询该帧图像是否没有写过
{ //写过,就不再写,等待下一帧
Frame_Write_State=1;//正在写TFT
Write_Picture(); //写TFT
Frame_Write_State=0;//写完TFT
Frame_Writed=1; //该帧图像被写过
}
while(Frame_Writed){} //等待下一帧图像来临
}
//*********************************
//*********************************
return 0;
}
点击此处下载 ourdev_646037ZRMHTO.rar(文件大小:189K) (原文件名OV7670+FIFO+3.0TFT)+代码、思想详细注释.rar)
|