#include "sys.h"
#include "ov7725.h"
#include "ov7725config.h"
#include "delay.h"
#include "usart.h"
#include "sccb.h"
#include "lcd.h"
#include "timer.h"
#include "exti.h" //
//alientek精英stm32開發板
//ov7725 驅動**
//正點原子@alientek
//技術論壇:www.openedv.com
//修改日期:2017/11/1
//版本:v1.0 //
//更新lcd顯示
u32 j,i,x=0,y=0;
u16 color;
u8 gm_red, gm_green, gm_blue;
u8 tm=0;
int r,tt;
u8 lightmode=0,saturation=2,contrast=2;
u8 effect=0;
u8 msgbuf[15]; //訊息快取區
extern u8 ov_sta;
extern u8 ov_frame;
//初始化ov7725
//返回0:成功
//返回其他值:錯誤**
u8 ov7725_init(void)
reg=sccb_rd_reg(0x0a); //讀取廠家id 高八位
reg<<=8;
reg|=sccb_rd_reg(0x0b); //讀取廠家id 低八位
if(reg!=ov7725_pid)
//初始化 ov7725,採用qvga解析度(320*240)
for(i=0;icase 5://night,夜晚
sccb_wr_reg(0x13, 0xff); //awb on
sccb_wr_reg(0x0e, 0xe5);
break; }
}
//色度設定
//sat:-4~+4
void ov7725_color_saturation(s8 sat)
} //亮度設定
//bright:-4~+4
void ov7725_brightness(s8 bright)
sccb_wr_reg(bright, bright_value);
sccb_wr_reg(sign, sign); }
//對比度設定
//contrast:-4~+4
void ov7725_contrast(s8 contrast)
} //特效設定
//0:普通模式
//1,負片
//2,黑白
//3,偏紅色
//4,偏綠色
//5,偏藍色
//6,復古
void ov7725_special_effects(u8 eft)
} //設定影象輸出視窗
//width:輸出影象寬度,<=320
//height:輸出影象高度,<=240
//mode:0,qvga輸出模式;1,vga輸出模式
//qvga模式可視範圍廣但近物不是很清晰,vga模式可視範圍小近物清晰
void ov7725_window_set(u16 width,u16 height,u8 mode)
else
raw=sccb_rd_reg(hstart);
temp=raw+(sx>>2);//sx高8位存在hstart,低2位存在href[5:4]
sccb_wr_reg(hstart,temp);
sccb_wr_reg(hsize,width>>2);//width高8位存在hsize,低2位存在href[1:0]
raw=sccb_rd_reg(vstrt);
temp=raw+(sy>>1);//sy高8位存在vstrt,低1位存在href[6]
sccb_wr_reg(vstrt,temp);
sccb_wr_reg(vsize,height>>1);//height高8位存在vsize,低1位存在href[2]
raw=sccb_rd_reg(href);
temp=((sy&0x01)<<6)|((sx&0x03)<<4)|((height&0x01)<<2)|(width&0x03)|raw;
sccb_wr_reg(href,temp);
sccb_wr_reg(houtsize,width>>2);
sccb_wr_reg(voutsize,height>>1);
sccb_rd_reg(exhch);
temp = (raw|(width&0x03)|((height&0x01)<<2));
sccb_wr_reg(exhch,temp); }
u16 array[60] =;
void camera_refresh()
lcd_showstring(30,17,200,16,16,"ov7725 init ok");
delay_ms(500);
ov7725_light_mode(lightmode);
ov7725_color_saturation(saturation);
ov7725_contrast(contrast);
ov7725_special_effects(effect);
tim6_int_init(10000,7199); //10khz計數頻率,1秒鐘中斷
exti8_init(); //使能定時器捕獲
ov7725_window_set(320,240,0); //1為vga模式輸出
//ov7725_window_set(ov7725_window_width,ov7725_window_height,0);//0為qvga模式輸出
ov7725_cs=0;
lcd_display_dir(0);
while(1)
else
lcd->lcd_ram=color; }
}if(j == array[k]&&(k<=60))//init(k) = 0 -=
else if(k < 40)
else if(k < 60)
k++;
}
}
ov_sta=0; //開始下一次採集
ov_frame++;
// lcd_scan_dir(dft_scan_dir); //恢復預設掃瞄方向
k=0;
if(whitepoint<=13) //中間端未檢測到白色則停止
else
if(leftblackpoint <= 13 && rightblackpoint >13) //左端白色 右端黑色 則嚮往右
if(leftblackpoint > 13 && rightblackpoint <= 13) //右端白色 左端黑色 則嚮往左
} }
//return judgeflag;
// gpio_resetbits(gpiob,gpio_pin_5);//紅亮
// ov_sta=0; //清零幀中斷標記
// ov_frame++;
lcd_scan_dir(dft_scan_dir); //恢復預設掃瞄方向 }
最小值和第二小值
這個問題來自演算法導論的習題9.1 1.問題是這樣的 證明 在最壞情況下,利用n lgn 2次比較,即可找到n個元素中的第二小元素。證明 構造出這種比較方法就可以了。看見lgn就應該想到配對。實際上,將n個元素兩兩分組進行比較,選取每次比較中的較小元素,這樣一來,可以一直做下去直到得到最小元素,這需...
OpenCVForUnity二值化和灰度化
隨著csdn部落格系統公升級,嘗試使用md寫文章,感覺還不錯。繼續使用opencvforunity處理,今次的效果是灰度化和二值化,當所有功能實現後,可能會做出乙個unity版的美圖秀秀。什麼,沒看懂?那看一下這張圖吧,解釋了什麼叫做 有一張好圖,就可以什麼也不用解釋了 很明顯,灰度圖的取值範圍比二...
MATLAB一維插值和二維插值
插值問題描述 已知 乙個函式上的若干點,但函式具體表示式未知,現在要利用已知的若干點求在其他點處的函式值,這個過程就是插值的過程.1.一維插值 一維插值就是給出y f x 上的點 x1,y1 x2,y2 xn,yn 由此求出y f x 在點xa處的值ya的值.實現一維插值使用interp1命令,使用...