|
如题。
用AVR的可以看我以前的一个帖:
http://www.ourdev.cn/forum.php?m ... mp;highlight=OV7670
里面有这个OV7670+FIFO的资料,这儿就不上传了,另外上面这个帖子注释比较清晰,
思路和本帖的程序思路差不多,可以参考。
http://www.ourdev.cn/forum.php?m ... p;page=1#pid5697907
上面帖25楼有电路板的原理图,另外不会FSMC的也可以参看上面帖子
效果实测:刷1000屏用时33秒,既30FPS,有点小小的不流畅,估计是数据上有点小问题
拿来参考是没问题的。
同样上个main函数吧!
/*
Designed By LuoFaJiang @ 2012.03.26
From Xhu University
*/
/***************************************/
#include "ILI9325_GUI.h"
#include "stm32f10x.h"
#include "ili9325.h"
#include "delay.h"
#include "Sensor.h"
/***************************************/
volatile char Temp=0;
volatile char Frame_Write_Status=0;
volatile char Frame_Writed=0;
//volatile int Temp_Num=0; //调试测试用
//***************************************************
/****************************************************/
void Display_Picture(void);
/****************************************************/
/****************************************************/
int main(void)
{
SystemInit();
//RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_16);//超频貌似没的用
SysTick_Init(72);
STM3210E_LCD_Init();
LCD_Clear(Red);
LCD_SetTextColor(Yellow);
LCD_SetBackColor(Red);
LCD_Show_Str(140,80,"FSMC_LCD Init Success!");
Seneor_VSYNC_Config();
NVIC_Configuration();
EXTI_Configuration();
while(!Temp) //初始化OV7670直至成功
{
Temp=Sensor_Init();
}
LCD_Show_Str(100,80,"OV7670 Init Success!");
Delay_ms(5000);
LCD_WriteReg(0x0003,0x10C8);//调整LCD显示方向
Sensor_FIFO_OE_L(); //FIFO片选使能
Sensor_FIFO_WEN_H(); //FIFO写使能
Sensor_FIFO_WRST_L(); //FIFO写复位准备
Sensor_FIFO_RRST_L(); //FIFO读复位准备
LCD_SetWindow(0,0,239,319); //设置LCD显示窗口
LCD_WriteRAM_Prepare(); //写数据前准备
while(1)
{
if(!Frame_Writed)
{
Frame_Write_Status=1;
Display_Picture();
Frame_Write_Status=0;
Frame_Writed=1;
}
while(Frame_Writed);
}
}
/*****************************************************/
/*****************************************************/
void Display_Picture()
{
u32 register Data_H=0;
u32 register Data_L=0;
u32 register index=0;
// LCD_SetWindow(0,0,239,319); //设置LCD显示窗口
// LCD_WriteRAM_Prepare(); //写数据前准备
Sensor_FIFO_RCLK_L();
Sensor_FIFO_RCLK_H();
for(index = 0; index <76800; index++)
{
Sensor_FIFO_RCLK_L();
Data_H=Sensor_FIFO_Data_IDR;
Sensor_FIFO_RCLK_H();
Sensor_FIFO_RCLK_L();
Data_L=Sensor_FIFO_Data_IDR;
Sensor_FIFO_RCLK_H();
Data_L>>=8;
Data_H&=0xFF00;
LCD->LCD_RAM =Data_H+Data_L;
}
/* 调试测试用
Temp_Num++;
if(Temp_Num==1000)
{
LCD_Clear(Red);
while(1);
}
*/
}
/**********************END***********************/
程序工程:基于MDK,Keil uV4
照片是手机照的,效果不好,将就看吧!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|