久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1493|回復: 0
打印 上一主題 下一主題
收起左側

STM32F10控制OV7275攝像頭源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:51217 發表于 2020-6-20 14:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"         
#include "string.h"
#include "ov7725.h"
#include "tpad.h"
#include "timer.h"
#include "exti.h"
#include "usmart.h"


//由于OV7725傳感器安裝方式原因,OV7725_WINDOW_WIDTH相當于LCD的高度,OV7725_WINDOW_HEIGHT相當于LCD的寬度
//注意:此宏定義只對OV7725有效
#define  OV7725_WINDOW_WIDTH                320         // <=320
#define  OV7725_WINDOW_HEIGHT                240         // <=240


const u8*LMODE_TBL[6]={"Auto","Sunny","Cloudy","Office","Home","Night"};//6種光照模式            
const u8*EFFECTS_TBL[7]={"Normal","Negative","B&W","Redish","Greenish","Bluish","Antique"};        //7種特效
extern u8 ov_sta;        //在exit.c里 面定義
extern u8 ov_frame;        //在timer.c里面定義        

//更新LCD顯示(OV7725)
void OV7725_camera_refresh(void)
{
        u32 i,j;
         u16 color;         
        if(ov_sta)//有幀中斷更新
        {
                LCD_Scan_Dir(U2D_L2R);                //從上到下,從左到右
                LCD_Set_Window((lcddev.width-OV7725_WINDOW_WIDTH)/2,(lcddev.height-OV7725_WINDOW_HEIGHT)/2,OV7725_WINDOW_WIDTH,OV7725_WINDOW_HEIGHT);//將顯示區域設置到屏幕中央
                if(lcddev.id==0X1963)
                        LCD_Set_Window((lcddev.width-OV7725_WINDOW_WIDTH)/2,(lcddev.height-OV7725_WINDOW_HEIGHT)/2,OV7725_WINDOW_HEIGHT,OV7725_WINDOW_WIDTH);//將顯示區域設置到屏幕中央
                LCD_WriteRAM_Prepare();     //開始寫入GRAM        
                OV7725_RRST=0;                                //開始復位讀指針
                OV7725_RCK_L;
                OV7725_RCK_H;
                OV7725_RCK_L;
                OV7725_RRST=1;                                //復位讀指針結束
                OV7725_RCK_H;
                for(i=0;i<OV7725_WINDOW_HEIGHT;i++)
                {
                        for(j=0;j<OV7725_WINDOW_WIDTH;j++)
                        {
                                OV7725_RCK_L;
                                color=GPIOC->IDR&0XFF;        //讀數據
                                OV7725_RCK_H;
                                color<<=8;  
                                OV7725_RCK_L;
                                color|=GPIOC->IDR&0XFF;        //讀數據
                                OV7725_RCK_H;
                                LCD->LCD_RAM=color;  
                        }
                }
                 ov_sta=0;                                        //清零幀中斷標記
                ov_frame++;
                LCD_Scan_Dir(DFT_SCAN_DIR);        //恢復默認掃描方向
        }
}   


int main(void)
{         
        u8 key;
         u8 i=0;            
        u8 msgbuf[15];//消息緩存區
        u8 tm=0;
        u8 lightmode=0,effect=0;
        s8 saturation=0,brightness=0,contrast=0;

        delay_init();                     //延時函數初始化         
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級
        uart_init(115200);                 //串口初始化為 115200
         usmart_dev.init(72);                //初始化USMART               
         LED_Init();                                          //初始化與LED連接的硬件接口
        KEY_Init();                                        //初始化按鍵
        LCD_Init();                                           //初始化LCD  
        TPAD_Init(6);                                //觸摸按鍵初始化
         POINT_COLOR=RED;                        //設置字體為紅色
        LCD_ShowString(30,50,200,16,16,"WarShip STM32");        
        LCD_ShowString(30,70,200,16,16,"OV7725 TEST");        
        LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
        LCD_ShowString(30,110,200,16,16,"2019/10/16");
        LCD_ShowString(30,130,200,16,16,"KEY0:Light Mode");
        LCD_ShowString(30,150,200,16,16,"KEY1:Saturation");
        LCD_ShowString(30,170,200,16,16,"KEY2:Brightness");
        LCD_ShowString(30,190,200,16,16,"KEY_UP:Contrast");
        LCD_ShowString(30,210,200,16,16,"TPAD:Effects");         
          LCD_ShowString(30,230,200,16,16,"OV7725 Init...");         
        while(1)//初始化OV7725
        {
                if(OV7725_Init()==0)
                {                        
                        LCD_ShowString(30,210,200,16,16,"OV7725 Init OK       ");
                        while(1)
                        {
                                key=KEY_Scan(0);
                                if(key==KEY0_PRES)
                                {
                                        OV7725_Window_Set(OV7725_WINDOW_WIDTH,OV7725_WINDOW_HEIGHT,0);//QVGA模式輸出
                                        break;
                                }else if(key==KEY1_PRES)
                                {
                                        OV7725_Window_Set(OV7725_WINDOW_WIDTH,OV7725_WINDOW_HEIGHT,1);//VGA模式輸出
                                        break;
                                }
                                i++;
                                if(i==100)LCD_ShowString(30,230,210,16,16,"KEY0:QVGA  KEY1:VGA"); //閃爍顯示提示信息
                                if(i==200)
                                {        
                                        LCD_Fill(30,230,210,250+16,WHITE);
                                        i=0;
                                }
                                delay_ms(5);
                        }                                
                        OV7725_Light_Mode(lightmode);
                        OV7725_Color_Saturation(saturation);
                        OV7725_Brightness(brightness);
                        OV7725_Contrast(contrast);
                        OV7725_Special_Effects(effect);
                        OV7725_CS=0;
                        break;
                }else
                {
                        LCD_ShowString(30,210,200,16,16,"OV7725 Error!!");
                        delay_ms(200);
                        LCD_Fill(30,210,239,246,WHITE);
                        delay_ms(200);
                }
        }

        TIM6_Int_Init(10000,7199);                        //10Khz計數頻率,1秒鐘中斷                                                                          
        EXTI8_Init();                                            //使能外部中斷8,捕獲幀中斷                        
        LCD_Clear(BLACK);                                                         
         while(1)
        {        
                key=KEY_Scan(0);//不支持連按
                if(key)
                {
                        tm=20;
                        switch(key)
                        {                                    
                                case KEY0_PRES:        //燈光模式Light Mode
                                        lightmode++;
                                        if(lightmode>5)lightmode=0;
                                        OV7725_Light_Mode(lightmode);                        
                                        sprintf((char*)msgbuf,"%s",LMODE_TBL[lightmode]);
                                        break;
                                case KEY1_PRES:        //飽和度Saturation
                                        saturation++;                                       
                                        if(saturation>4)saturation=-4;
                                        else if(saturation<-4)saturation=4;
                                        OV7725_Color_Saturation(saturation);                                       
                                        sprintf((char*)msgbuf,"Saturation:%d",saturation);
                                        break;
                                case WKUP_PRES:        //對比度Contrast                           
                                        contrast++;
                                        if(contrast>4)contrast=-4;
                                        else if(contrast<-4)contrast=4;
                                        OV7725_Contrast(contrast);                                       
                                        sprintf((char*)msgbuf,"Contrast:%d",contrast);
                                        break;
                        }
                }         
                if(TPAD_Scan(0))//檢測到觸摸按鍵
                {
                        effect++;
                        if(effect>6)effect=0;
                        OV7725_Special_Effects(effect);                //設置特效
                         sprintf((char*)msgbuf,"%s",EFFECTS_TBL[effect]);
                        tm=20;
                }
                OV7725_camera_refresh();                //更新顯示
                 if(tm)
                {
                        LCD_ShowString((lcddev.width-240)/2+30,(lcddev.height-320)/2+60,200,16,16,msgbuf);
                        tm--;
                }
                i++;
                if(i>=15)//DS0閃爍.
                {
                        i=0;
                        LED0=!LED0;
                 }
        }           
}





STM32F10控制OV7275攝像頭.zip

400.46 KB, 下載次數: 4, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久久久久久久 | av资源在线看 | 在线精品观看 | 精品久久一区 | 97色免费视频 | 精品国产三级 | 黄视频网站免费观看 | 久久国产亚洲 | 国产精品大全 | 国产精品一区二区三区久久 | 91久久国产综合久久91精品网站 | 亚洲二区视频 | 国产精品99久久久久久大便 | 亚洲一区二区日韩 | 日韩成人在线观看 | 国产精久久久久久久妇剪断 | 一级毛片视频 | jlzzjlzz欧美大全 | 亚洲免费视频在线观看 | 国产一区二区三区 | 欧美精品在线一区 | 天天综合永久入口 | 亚洲不卡av在线 | 亚洲www啪成人一区二区 | 久久成人一区 | 免费观看黄色一级片 | 日韩1区2区| 精品国产乱码久久久久久闺蜜 | 欧美成人h版在线观看 | 精品亚洲一区二区三区 | 国产精品免费一区二区三区四区 | 久久性 | 久久伊人精品 | 91视频精选 | 日本a级大片 | 在线一区| 国产蜜臀97一区二区三区 | 亚洲综合大片69999 | 国产三级在线观看播放 | 欧美日一区二区 | 亚洲高清视频在线观看 |