Mega128+(OV7670+FIFO+3.0TFT)+代码、思想详细注释——有图有真相!
如题,端午节废寝忘食奋斗三天出结果——(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) http://cache.amobbs.com/bbs_upload782111/files_40/ourdev_646027XOBIX5.jpg
(原文件名:全家福.jpg)
http://cache.amobbs.com/bbs_upload782111/files_40/ourdev_646028BB518B.jpg
(原文件名:寝室楼及地面.jpg)
http://cache.amobbs.com/bbs_upload782111/files_40/ourdev_646029VMG4HB.jpg
(原文件名:楼2.jpg)
http://cache.amobbs.com/bbs_upload782111/files_40/ourdev_646030MQTKFG.jpg
(原文件名:还是寝室楼.jpg)
http://cache.amobbs.com/bbs_upload782111/files_40/ourdev_646031UN8J7P.jpg
(原文件名:干掉TFT.jpg)
http://cache.amobbs.com/bbs_upload782111/files_40/ourdev_646032X95KSS.jpg
(原文件名:对面寝室楼1.jpg)
http://cache.amobbs.com/bbs_upload782111/files_40/ourdev_646033JBYA73.jpg
(原文件名:对面楼.jpg)
http://cache.amobbs.com/bbs_upload782111/files_40/ourdev_646034P07ZZ7.JPG
(原文件名:PCB_AVR3.0TFT.JPG)
点击此处下载 ourdev_646035K678ZP.pdf(文件大小:38K) (原文件名:OV767_FIFO_SCH.pdf)
http://cache.amobbs.com/bbs_upload782111/files_40/ourdev_646036VPCK14.jpg
(原文件名:Mega28主板.jpg) 今天真是太幸运了。一进来就发现我离楼主这么近. 顶上去!!! 好帖 回复【2楼】xkdwangcs
-----------------------------------------------------------------------
小黑屋啊,呵呵 恭喜楼主 http://v.youku.com/v_show/id_XMjU4NjUxNjQw.html 回复【6楼】wangguanfu
-----------------------------------------------------------------------
老大来了哇,还附带打个小广告,呵呵,拜老大!!! 没事儿干,自己顶一个! 好贴 呵呵 学习学习 楼主厉害!赞
问问,连线这么长不会有影响吗? 好帖,顶! 回复【11楼】zenl0039
-----------------------------------------------------------------------
其实也不算长,应该是FIFO驱动能力很好,原本加了NOP小延时了一个(程序中可以看到),后来去掉了也没问题。 cool 回复【楼主位】LuoFaJiang
-----------------------------------------------------------------------
一定要顶啊…… 学习中 话说前一段时间没事干,编了个定时器程序测了一下,达到8帧/s,还是不错的。 应该很好玩~ 希望能帮上忙 学习学习 mark mark mark 能配置OV7670至400*240么?这样屏幕就能满屏啊? 学习了! 谢谢 摄像头多少米一个? 所有摄像头问题都顶 非常好
最近开始有兴趣,谢谢楼主,只是附件暂时下不来,呵呵 留着,后面有空看 为什么附件还是无法下载呢?楼主能给我发一份么?totoro0130@163.com,多谢 LuoFaJiang 发表于 2011-6-5 20:35 static/image/common/back.gif
(原文件名:全家福.jpg)
你这个TFT是什么型号?用M128全屏刷新迟钝不? omg123 发表于 2012-6-25 21:35 static/image/common/back.gif
为什么附件还是无法下载呢?楼主能给我发一份么?,多谢
附件已经重新上传! packy_pan 发表于 2012-4-3 15:39 static/image/common/back.gif
能配置OV7670至400*240么?这样屏幕就能满屏啊?
可以的,只是这样子视野就小了,因为在QVGA时是亚采样的,用240X400就不能亚采样了 lu0718 发表于 2012-4-5 23:14 static/image/common/back.gif
摄像头多少米一个?
王老大那儿买的,85大洋 zsulrq 发表于 2012-6-25 16:12 static/image/common/back.gif
最近开始有兴趣,谢谢楼主,只是附件暂时下不来,呵呵
附件已经重新上传,在后面回帖处 marshallemon 发表于 2012-6-25 21:44 static/image/common/back.gif
你这个TFT是什么型号?用M128全屏刷新迟钝不?
SPFD5420A的驱动器,现在刷摄像头频率为8FPS,对跑16M的AVR来说,个人觉得很不错了,相对于72M的STM32来说的话,STM32
的IO速度感觉有点坑爹
不错 手里有一个ov6620 有时间可以捣鼓下 LuoFaJiang 发表于 2012-6-25 23:24 static/image/common/back.gif
SPFD5420A的驱动器,现在刷摄像头频率为8FPS,对跑16M的AVR来说,个人觉得很不错了,相对于72M的STM32来 ...
8FPS?那不是很迟钝了? marshallemon 发表于 2012-6-26 08:54 static/image/common/back.gif
8FPS?那不是很迟钝了?
你也不想想,这是AVR,晶振才16M,自己算算数据量好大,要快就搞STM32,30+FPS!搞得不好STM32也就15FPS的样子。 现在好像还是不能下载啊,先留个脚印
LuoFaJiang 发表于 2012-6-26 11:59 static/image/common/back.gif
你也不想想,这是AVR,晶振才16M,自己算算数据量好大,要快就搞STM32,30+FPS!搞得不好STM32也就15FPS ...
驱动稍大尺寸TFT,估计STM32F4系列的还可以 marshallemon 发表于 2012-6-26 21:33 static/image/common/back.gif
驱动稍大尺寸TFT,估计STM32F4系列的还可以
我说的是驱动OV7670刷TFT fuchenyang 发表于 2012-6-26 12:19 static/image/common/back.gif
现在好像还是不能下载啊,先留个脚印
37楼有重新上传的代码包! LuoFaJiang 发表于 2012-6-27 21:24 static/image/common/back.gif
37楼有重新上传的代码包!
下载了,谢谢{:handshake:} 厉害啊,最近才学习AVR 太谢谢了。正在学习如何用摄像头。 mark,想用msp430搞,先看看 不知道楼主的pgm_read_byte()是在哪里定义的?怎么着不到? 谢谢楼主,抓紧时间看! 颜色不对,红色变成淡红色,头疼!!! 给力. 带劲!! mark 一下 有用,学习下 lz的atmega128开发板,我也有一块一模一样的啊TS8900-M128 找到了哈哈发哥顶了 dboyzju 发表于 2013-2-6 23:33 static/image/common/back.gif
lz的atmega128开发板,我也有一块一模一样的啊TS8900-M128
呵呵呵,看着亲切啊! ssssnancy 发表于 2013-3-4 11:02 static/image/common/back.gif
找到了哈哈发哥顶了
嗯,慢慢整嘛 学习Winavr的留个爪印。 不错!挺好玩的 LuoFaJiang 发表于 2011-6-5 20:35 static/image/common/back.gif
(原文件名:全家福.jpg)
好贴要顶一下 不错,我也刚刚开始玩摄像头,请教了! 膜拜一下! 一直有这个想法,做一个摄像头一个显示器,做成遥控的。
哈哈,留印
页:
[1]