LuoFaJiang 发表于 2011-6-5 20:32:35

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)

LuoFaJiang 发表于 2011-6-5 20:35:15

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)

xkdwangcs 发表于 2011-6-5 20:57:32

今天真是太幸运了。一进来就发现我离楼主这么近.

lrbdh 发表于 2011-6-5 20:58:23

顶上去!!!

FlashNuk 发表于 2011-6-5 20:59:23

好帖

LuoFaJiang 发表于 2011-6-5 21:01:53

回复【2楼】xkdwangcs
-----------------------------------------------------------------------
小黑屋啊,呵呵

wangguanfu 发表于 2011-6-5 21:05:57

恭喜楼主 http://v.youku.com/v_show/id_XMjU4NjUxNjQw.html

LuoFaJiang 发表于 2011-6-5 21:19:54

回复【6楼】wangguanfu
-----------------------------------------------------------------------

老大来了哇,还附带打个小广告,呵呵,拜老大!!!

LuoFaJiang 发表于 2011-6-5 21:22:09

没事儿干,自己顶一个!

xuzhouqxy 发表于 2011-6-6 18:20:59

好贴

gdaswater 发表于 2011-6-6 18:42:43

呵呵 学习学习

zenl0039 发表于 2011-6-7 09:55:36

楼主厉害!赞

问问,连线这么长不会有影响吗?

hzn1948 发表于 2011-6-7 11:10:43

好帖,顶!

LuoFaJiang 发表于 2011-6-7 19:02:51

回复【11楼】zenl0039
-----------------------------------------------------------------------

其实也不算长,应该是FIFO驱动能力很好,原本加了NOP小延时了一个(程序中可以看到),后来去掉了也没问题。

wenfeiexe 发表于 2011-6-7 19:06:04

cool

STC89C55 发表于 2011-6-9 22:41:42

回复【楼主位】LuoFaJiang
-----------------------------------------------------------------------

一定要顶啊……

HUZHIPENG 发表于 2011-6-20 09:54:08

学习中

LuoFaJiang 发表于 2011-11-29 13:36:53

话说前一段时间没事干,编了个定时器程序测了一下,达到8帧/s,还是不错的。

xsmjc98 发表于 2011-11-29 14:02:56

应该很好玩~

ccy19870206 发表于 2011-12-2 16:36:25

希望能帮上忙

tacbo 发表于 2011-12-26 19:14:31

学习学习

kingboy100 发表于 2011-12-27 07:23:01

mark

liuhao542486 发表于 2012-1-9 18:10:44

mark

Spunky 发表于 2012-1-10 17:40:33

mark

packy_pan 发表于 2012-4-3 15:39:13

能配置OV7670至400*240么?这样屏幕就能满屏啊?

wcm_e 发表于 2012-4-5 16:43:52

学习了! 谢谢

lu0718 发表于 2012-4-5 23:14:24

摄像头多少米一个?

tangguanglun 发表于 2012-5-22 20:09:45

所有摄像头问题都顶

lgx4915 发表于 2012-6-14 12:25:26

非常好

zsulrq 发表于 2012-6-25 16:12:14

最近开始有兴趣,谢谢楼主,只是附件暂时下不来,呵呵

shouqiang_zhang 发表于 2012-6-25 16:15:18

留着,后面有空看

omg123 发表于 2012-6-25 21:35:21

为什么附件还是无法下载呢?楼主能给我发一份么?totoro0130@163.com,多谢

marshallemon 发表于 2012-6-25 21:44:38

LuoFaJiang 发表于 2011-6-5 20:35 static/image/common/back.gif
(原文件名:全家福.jpg)




你这个TFT是什么型号?用M128全屏刷新迟钝不?

LuoFaJiang 发表于 2012-6-25 23:16:04

omg123 发表于 2012-6-25 21:35 static/image/common/back.gif
为什么附件还是无法下载呢?楼主能给我发一份么?,多谢

附件已经重新上传!

LuoFaJiang 发表于 2012-6-25 23:18:33

packy_pan 发表于 2012-4-3 15:39 static/image/common/back.gif
能配置OV7670至400*240么?这样屏幕就能满屏啊?

可以的,只是这样子视野就小了,因为在QVGA时是亚采样的,用240X400就不能亚采样了

LuoFaJiang 发表于 2012-6-25 23:19:53

lu0718 发表于 2012-4-5 23:14 static/image/common/back.gif
摄像头多少米一个?

王老大那儿买的,85大洋

LuoFaJiang 发表于 2012-6-25 23:20:34

zsulrq 发表于 2012-6-25 16:12 static/image/common/back.gif
最近开始有兴趣,谢谢楼主,只是附件暂时下不来,呵呵

附件已经重新上传,在后面回帖处

LuoFaJiang 发表于 2012-6-25 23:24:12

marshallemon 发表于 2012-6-25 21:44 static/image/common/back.gif
你这个TFT是什么型号?用M128全屏刷新迟钝不?

SPFD5420A的驱动器,现在刷摄像头频率为8FPS,对跑16M的AVR来说,个人觉得很不错了,相对于72M的STM32来说的话,STM32
的IO速度感觉有点坑爹

734282083 发表于 2012-6-25 23:40:27

不错 手里有一个ov6620 有时间可以捣鼓下

marshallemon 发表于 2012-6-26 08:54:43

LuoFaJiang 发表于 2012-6-25 23:24 static/image/common/back.gif
SPFD5420A的驱动器,现在刷摄像头频率为8FPS,对跑16M的AVR来说,个人觉得很不错了,相对于72M的STM32来 ...

8FPS?那不是很迟钝了?

LuoFaJiang 发表于 2012-6-26 11:59:10

marshallemon 发表于 2012-6-26 08:54 static/image/common/back.gif
8FPS?那不是很迟钝了?

你也不想想,这是AVR,晶振才16M,自己算算数据量好大,要快就搞STM32,30+FPS!搞得不好STM32也就15FPS的样子。

fuchenyang 发表于 2012-6-26 12:19:22

现在好像还是不能下载啊,先留个脚印

marshallemon 发表于 2012-6-26 21:33:18

LuoFaJiang 发表于 2012-6-26 11:59 static/image/common/back.gif
你也不想想,这是AVR,晶振才16M,自己算算数据量好大,要快就搞STM32,30+FPS!搞得不好STM32也就15FPS ...

驱动稍大尺寸TFT,估计STM32F4系列的还可以

LuoFaJiang 发表于 2012-6-27 21:21:51

marshallemon 发表于 2012-6-26 21:33 static/image/common/back.gif
驱动稍大尺寸TFT,估计STM32F4系列的还可以

我说的是驱动OV7670刷TFT

LuoFaJiang 发表于 2012-6-27 21:24:00

fuchenyang 发表于 2012-6-26 12:19 static/image/common/back.gif
现在好像还是不能下载啊,先留个脚印

37楼有重新上传的代码包!

fuchenyang 发表于 2012-6-28 12:06:37

LuoFaJiang 发表于 2012-6-27 21:24 static/image/common/back.gif
37楼有重新上传的代码包!

下载了,谢谢{:handshake:}

Zhhu218 发表于 2012-6-28 16:46:22

厉害啊,最近才学习AVR

zjczm 发表于 2012-7-11 17:06:47

太谢谢了。正在学习如何用摄像头。

abcfanyuan 发表于 2012-7-28 01:44:48

mark,想用msp430搞,先看看

abcfanyuan 发表于 2012-7-31 00:36:22

不知道楼主的pgm_read_byte()是在哪里定义的?怎么着不到?

zhouxy0901 发表于 2012-7-31 12:48:39

谢谢楼主,抓紧时间看!

ganhui1300 发表于 2012-8-1 08:43:11

颜色不对,红色变成淡红色,头疼!!!

monkerman 发表于 2012-9-20 15:42:32

给力. 带劲!!

tmacno01 发表于 2012-11-2 09:43:24

mark 一下

debian123 发表于 2013-2-6 16:28:06

有用,学习下

dboyzju 发表于 2013-2-6 23:33:21

lz的atmega128开发板,我也有一块一模一样的啊TS8900-M128

ssssnancy 发表于 2013-3-4 11:02:24

找到了哈哈发哥顶了

LuoFaJiang 发表于 2013-3-18 00:11:42

dboyzju 发表于 2013-2-6 23:33 static/image/common/back.gif
lz的atmega128开发板,我也有一块一模一样的啊TS8900-M128

呵呵呵,看着亲切啊!

LuoFaJiang 发表于 2013-3-18 00:12:06

ssssnancy 发表于 2013-3-4 11:02 static/image/common/back.gif
找到了哈哈发哥顶了

嗯,慢慢整嘛

xslff 发表于 2013-3-18 22:13:48

学习Winavr的留个爪印。

yongxiangu 发表于 2013-3-18 22:49:40

不错!挺好玩的

longwu537 发表于 2013-4-6 11:18:45

LuoFaJiang 发表于 2011-6-5 20:35 static/image/common/back.gif
(原文件名:全家福.jpg)




好贴要顶一下

nsj21n 发表于 2013-4-7 18:39:56

不错,我也刚刚开始玩摄像头,请教了!

Zoiphy 发表于 2013-4-19 19:33:38

膜拜一下!

younge 发表于 2013-4-19 20:14:33

一直有这个想法,做一个摄像头一个显示器,做成遥控的。
哈哈,留印
页: [1]
查看完整版本: Mega128+(OV7670+FIFO+3.0TFT)+代码、思想详细注释——有图有真相!