历史上的今天
今天是:2025年07月21日(星期一)
2020年07月21日 | stm32F407+ov7670的摄像头识别
2020-07-21 来源:51hei

单片机源程序如下:
#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("rn");
//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秒钟中断
史海拾趣
|
作者:Clark Kinnaird,德州仪器 (TI) 有一个关于得克萨斯州民间英雄Pecos Bill的故事:那时,有人打赌他不能从从得克萨斯州的加尔维斯敦游过墨西哥湾到达弗罗里达州的基韦斯特。他训练了一个月,当这一天到来时他便一头扎进了墨西哥湾。Bill不分 ...… 查看全部问答> |
|
做2440下ov9650的driver, 使能摄像头抓拍后,获得一帧数据程序进入中断,在中断中将标志位清除,然后将摄像头抓拍禁用,退出中断。通过在return irq_handled 之前打印信息,打印信息被打印之后,系统就死掉了,不知道为什么,中断中对寄存器的操作 ...… 查看全部问答> |
|
【设计工具】MicroBlaze™ 支持实例之Xilkernel 实例 本例详细描述了使用嵌入式开发套件实现的 Xilinx 嵌入式系统,展示了Microblaze 软处理器上的 Xilkernel 的特点。用于展示内核的硬件设计包含连到2个 XPS 定时器上的 MicroBlaze 处理器、UARTLITE、XPS 中断控制器、外部 SRAM、GPIO 模块和用于 ...… 查看全部问答> |
|
现在需要用STM32F103R8T6单片机控制直流无感无刷电机,要求控制方式为PWM控制,能通过控制占空比调节电机转速。求大神指教,我是小白 … 查看全部问答> |
|
运放的速度指标Slew rate和Rise time的区别? 手头有NE5532、NE5534;还有OP07、OP27、OP37。 做激光测距,现在需要一个能做成跟随器的高速运放。 看了一些手册发现Slew rate和Rise time这两个指标应该是反映运放速度的。但不确定具体应该看哪一个指标。 上图为NE5534的参数,SR为13V/us,也 ...… 查看全部问答> |




