标题:
stm32F407+ov7670的摄像头识别(代码+连接)
[打印本页]
作者:
18892336058
时间:
2019-5-12 17:16
标题:
stm32F407+ov7670的摄像头识别(代码+连接)
stm32F407单片机+ov7670摄像头识别
实验现象.jpg
(294.16 KB, 下载次数: 53)
下载附件
2019-5-12 17:15 上传
单片机源程序如下:
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "usart.h"
#include "tftlcd.h"
#include "malloc.h"
#include "sdio_sdcard.h"
#include "flash.h"
#include "ff.h"
#include "fatfs_app.h"
#include "key.h"
#include "font_show.h"
#include "exti.h"
#include "time.h"
#include "string.h"
#include "math.h"
#include "OV7670_DCMI.h"
extern u8 ov_sta; //在exit.c里面定义
extern u8 ov_frame; //在time.c里面定义
//更新LCD显示
void camera_refresh(void)
{
u32 j;
u16 i;
u16 color;
u16 temp;
if(ov_sta)//有帧中断更新?
{
LCD_Display_Dir(1);
//LCD_Set_Window((tftlcd_data.width-320)/2,(tftlcd_data.height-240)/2,320,240-1);//将显示区域设置到屏幕中央
LCD_Set_Window(0,(tftlcd_data.height-240)/2,320-1,240-1);//将显示区域设置到屏幕中央
OV7670_RRST=0; //开始复位读指针
OV7670_RCK_L;
OV7670_RCK_H;
OV7670_RCK_L;
OV7670_RRST=1; //复位读指针结束
OV7670_RCK_H;
/*for(i=0;i<240;i++) //此种方式可以兼容任何彩屏
{
for(j=0;j<320;j++)
{
OV7670_RCK_L;
color=OV7670_DATA; //读数据
OV7670_RCK_H;
color>>=8;
OV7670_RCK_L;
color|=OV7670_DATA; //读数据
OV7670_RCK_H;
LCD_WriteData_Color(color);
}
}*/
for(j=0;j<76800;j++) //此种方式需清楚TFT内部显示方向控制寄存器值
{
OV7670_RCK_L;
color=OV7670_DATA; //读数据
OV7670_RCK_H;
color<<=8;
OV7670_RCK_L;
color|=OV7670_DATA; //读数据
OV7670_RCK_H;
LCD_WriteData_Color(color);
//printf("%x ",color);
//if(j%20==0)printf("\r\n");
//delay_us(50);
}
ov_sta=0; //清零帧中断标记
ov_frame++; //统计帧数
LCD_Display_Dir(0);
}
}
const u8*LMODE_TBL[5]={"Auto","Sunny","Cloudy","Office","Home"};
const u8 *EFFECTS_TBL[7]={"Normal","Negative","B&W","Redish","Greenish","Bluish","Antique"}; //7种特效
int main()
{
u8 i=0;
u8 key;
u8 lightmode=0,saturation=2,brightness=2,contrast=2;
u8 effect=0;
u8 sbuf[15];
u8 count;
SysTick_Init(168);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级分组 分2组
LED_Init();
KEY_Init();
USART1_Init(9600);
TFTLCD_Init(); //LCD初始化
EN25QXX_Init(); //初始化EN25Q128
my_mem_init(SRAMIN); //初始化内部内存池
FRONT_COLOR=RED;//设置字体为红色
// while(SD_Init()!=0)
// {
// LCD_ShowString(10,10,tftlcd_data.width,tftlcd_data.height,16,"SD Card Error!");
// }
// FATFS_Init(); //为fatfs相关变量申请内存
// f_mount(fs[0],"0:",1); //挂载SD卡
// f_mount(fs[1],"1:",1); //挂载FLASH.
LCD_ShowFont12Char(10, 10, "xx科技");
LCD_ShowFont12Char(10, 30, "wwwxxxxnet");
LCD_ShowFont12Char(10, 50, "摄像头应用--OV7670");
while(OV7670_Init())//初始化OV7670
{
LCD_ShowString(10,80,tftlcd_data.width,tftlcd_data.height,16,"OV7670 Error!");
delay_ms(200);
LCD_Fill(10,80,239,206,WHITE);
delay_ms(200);
}
LCD_ShowString(10,80,tftlcd_data.width,tftlcd_data.height,16,"OV7670 OK! ");
delay_ms(1500);
OV7670_Light_Mode(0); //默认设置自动白平衡
OV7670_Color_Saturation(2); // 色度调节
OV7670_Brightness(2); //亮度调节
OV7670_Contrast(2); //对比度
OV7670_Special_Effects(0); //特效
TIM4_Init(10000,8399); //10Khz计数频率,1秒钟中断
EXTI7_Init();
OV7670_Window_Set(12,176,240,320); //设置窗口
OV7670_CS=0;
LCD_Clear(BLACK);
while(1)
{
key=KEY_Scan(0);
if(key)count=20;
switch(key)
{
case KEY_UP: //灯光模式设置
lightmode++;
if(lightmode>4)lightmode=0;
OV7670_Light_Mode(lightmode);
sprintf((char*)sbuf,"%s",LMODE_TBL[lightmode]);
break;
case KEY_DOWN: //饱和度
saturation++;
if(saturation>4)saturation=0;
OV7670_Color_Saturation(saturation);
sprintf((char*)sbuf,"Saturation:%d",(char)saturation-2);
break;
case KEY_LEFT: //亮度
brightness++;
if(brightness>4)brightness=0;
OV7670_Brightness(brightness);
sprintf((char*)sbuf,"Brightness:%d",(char)brightness-2);
break;
case KEY_RIGHT: //对比度
contrast++;
if(contrast>4)contrast=0;
OV7670_Contrast(contrast);
sprintf((char*)sbuf,"Contrast:%d",(char)contrast-2);
break;
}
if(count)
{
count--;
LCD_ShowString((tftlcd_data.width-240)/2+30,(tftlcd_data.height-320)/2+60,200,16,16,sbuf);
}
camera_refresh();//更新显示
i++;
if(i%20==0)
{
led1=!led1;
}
//delay_ms(10);
}
}
复制代码
所有资料51hei提供下载:
摄像头应用程序--OV7670--DCMI.7z
(756.84 KB, 下载次数: 333)
2019-5-12 22:23 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
图图图天
时间:
2020-4-3 21:18
请问楼主,单片机引脚怎么和ov7670引脚对应
作者:
会说话的小蜗
时间:
2020-7-7 15:44
谁有下载好的可不可以给我一份
作者:
3078
时间:
2020-7-21 11:41
这个可以识别出字母吗?
作者:
唐壹影
时间:
2020-7-22 10:32
请问这个文件是写在.c文件里还是头文件里?
作者:
liuboyang2020
时间:
2021-1-13 05:34
很好的一个摄像头应用程序
作者:
hujj
时间:
2021-1-13 09:37
我买了一个7076摄像头还在吃灰,正好可以借鉴楼主的经验使用起来。
作者:
咔玛尔
时间:
2021-4-27 12:41
F407和F429能一样使用吗
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1