历史上的今天
返回首页

历史上的今天

今天是: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秒钟中断                                                                          

推荐阅读

史海拾趣

问答坊 | AI 解惑

几本verilog的书大家看看啊(续)

还有一本夏宇闻的书因太大传不上想要和我联系书名是《Verilog数字系统设计教程【夏宇闻】.rar》…

查看全部问答>

信号速率与线缆长度的关系:CAN总线计时权衡因素

作者:Clark Kinnaird,德州仪器 (TI) 有一个关于得克萨斯州民间英雄Pecos Bill的故事:那时,有人打赌他不能从从得克萨斯州的加尔维斯敦游过墨西哥湾到达弗罗里达州的基韦斯特。他训练了一个月,当这一天到来时他便一头扎进了墨西哥湾。Bill不分 ...…

查看全部问答>

TOC读写问题?

我用的是eboot+nboot启动,在读TOC的时候,读出来的数好像有些对,有些不对,下面是我读出来的值。其中ConfigFlags的值是不是有问题?如果我要改设置ConfigFlags这个的值,我要在那操作?怎么做?麻烦高手指点一下。这个问题已经搞了快一周了。 Mi ...…

查看全部问答>

S2440 Camera驱动从中断中返回后死机!!

做2440下ov9650的driver, 使能摄像头抓拍后,获得一帧数据程序进入中断,在中断中将标志位清除,然后将摄像头抓拍禁用,退出中断。通过在return irq_handled 之前打印信息,打印信息被打印之后,系统就死掉了,不知道为什么,中断中对寄存器的操作 ...…

查看全部问答>

wince6 falsh不显示盘符

目前在玩wince6,遇到一些问题,请教大家。 Flash不显示盘符,但在Storage Manager可以识别其容量。…

查看全部问答>

【设计工具】MicroBlaze™ 支持实例之Xilkernel 实例

  本例详细描述了使用嵌入式开发套件实现的 Xilinx 嵌入式系统,展示了Microblaze 软处理器上的 Xilkernel 的特点。用于展示内核的硬件设计包含连到2个 XPS 定时器上的 MicroBlaze 处理器、UARTLITE、XPS 中断控制器、外部 SRAM、GPIO 模块和用于 ...…

查看全部问答>

msp430f149串口通訊

官方範例上都是發送和接收 一來一往 不然就是一直發送 我想問問 有沒有單獨使用接收的功能阿??? 可以給個程序嗎?!…

查看全部问答>

STM32F103R8T6单片机控制直流无感无刷电机

现在需要用STM32F103R8T6单片机控制直流无感无刷电机,要求控制方式为PWM控制,能通过控制占空比调节电机转速。求大神指教,我是小白 …

查看全部问答>

运放的速度指标Slew rate和Rise time的区别?

手头有NE5532、NE5534;还有OP07、OP27、OP37。 做激光测距,现在需要一个能做成跟随器的高速运放。 看了一些手册发现Slew rate和Rise time这两个指标应该是反映运放速度的。但不确定具体应该看哪一个指标。 上图为NE5534的参数,SR为13V/us,也 ...…

查看全部问答>