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

標題: STM32F10控制OV7275攝像頭源程序 [打印本頁]

作者: shbing    時間: 2020-6-20 14:14
標題: STM32F10控制OV7275攝像頭源程序
#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






歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: av片免费| 久久精品a | 日韩精品欧美精品 | 中文日韩在线 | 亚洲精品成人在线 | 黄色大片免费看 | 91免费在线看 | 一二三在线视频 | 久久久久久精 | 99精品国产在热久久 | 天天干国产 | 欧美国产日韩在线 | 亚洲精品在线视频 | 久久精品久久久久久 | 亚洲成人动漫在线观看 | 久久国产精品久久久久 | 奇米四色影视 | 午夜免费视频 | aaa一区| 一区二区三区国产精品 | 欧美亚洲高清 | 91精品国产乱码久久久久久久久 | 日韩中文在线视频 | 亚洲欧美网 | 国产成人一区二区三区 | 欧美区日韩区 | av香蕉| 亚洲久久在线 | 一级毛片黄片 | 天天色天天色 | 日韩毛片播放 | 一区二区视频 | 免费毛片网站在线观看 | 国产精品一区在线播放 | 日韩欧美精品 | 久久久久久久久久久久久9999 | 天天操综合网 | 国产精品久久久久久婷婷天堂 | 综合国产第二页 | 亚洲天堂网站 | 精品久久久久久亚洲精品 |