新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于單片機的表具數(shù)字圖像采集系統(tǒng)設計

基于單片機的表具數(shù)字圖像采集系統(tǒng)設計

—— 推動實現(xiàn)智能建筑
作者: 時間:2010-10-23 來源:電子產(chǎn)品世界 收藏

  系統(tǒng)存儲器接口

本文引用地址:http://butianyuan.cn/article/113798.htm

  CMOS圖像傳感器OV7670支持整幀圖像讀取模式,VGA圖像速率最高達30幀/s,為了實現(xiàn)OV7670與之間傳輸速率匹配,首先將內(nèi)部時鐘與時鐘同步,然后通過設置OV7670內(nèi)部寄存器對系統(tǒng)內(nèi)部時鐘速率分頻來降低圖像數(shù)據(jù)速率,使OV7670采集圖像數(shù)據(jù)的速度滿足的要求。由于表具數(shù)字圖像數(shù)據(jù)量比較大,而AT89LV51 單片機,其內(nèi)部只有128byte隨機存儲器,要完成對表具數(shù)字圖像的采集、存儲和處理是遠遠不夠的,所以在硬件電路上擴展了外部數(shù)據(jù)存儲器,通過數(shù)據(jù)存儲器的存儲空間和存儲速度,在OV7670和單片機之間建立起數(shù)據(jù)傳送中樞,實現(xiàn)表具數(shù)字圖像的采集、存儲和處理,其硬件連接電路如圖3所示,BS62LV256存儲器地址低8位通過鎖存器與單片機P0口連接,同時P0口也是圖像數(shù)據(jù)輸出口,存儲器地址高7位以及存儲器片選端與單片機P2口連接,單片機通過控制片外數(shù)據(jù)存儲器讀寫控制端完成數(shù)據(jù)的存儲[3]。

  系統(tǒng)軟件設計

  在本系統(tǒng)設計中,通過圖像傳感器OV7670攝像頭的SCCB總線接口配置攝像頭,通過控制攝像頭的場同步信號(VSYNC),行同步信號(HREF)以及像素時鐘信號(PCLK)開中斷,開始表具圖像數(shù)據(jù)采集,將這些數(shù)據(jù)傳送到外部數(shù)據(jù)存儲器中,當一幀完成后,關閉所有中斷,等待采集下一幀圖像。

  本系統(tǒng)采用查詢VSYNC的下降沿表示一幀圖像的開始,水平同步信號HREF高時開始有效數(shù)據(jù)采集。在水平同步信號HREF高電平期間,PCLK上升沿的到來表示像素數(shù)據(jù)的產(chǎn)生,PCLK每來一個上升沿系統(tǒng)就傳輸一位像素數(shù)據(jù)[4~5]。OV7670同步信號時序如圖4所示。

  單片機通過控制圖像傳感器OV7670攝像頭的SCCB總線接口配置攝像頭,本系統(tǒng)設置OV7670為黑白工作模式,分辨率為80×60,控制OV7670以一幀圖像讀取模式,采用此模式傳輸時,以像素時鐘信號(PCLK)為頻率自動傳輸完一幀圖像后停止。在軟件設計開始,將圖像存儲設置成外部數(shù)據(jù)存儲方式,此時OV7670數(shù)據(jù)總線為三態(tài),準備發(fā)送數(shù)據(jù)。

  當圖像采集開始按鍵按下時,開中斷準備進入數(shù)據(jù)采集,單片機監(jiān)測場同步信號(VSYNC)的變化,其為高時OV7670 數(shù)據(jù)準備完畢,變低時開始發(fā)送。HREF為水平同步信號,以其上升沿開始,輸出有效數(shù)據(jù)。PCLK為像素同步信號,下降沿更新數(shù)據(jù),上升沿為數(shù)據(jù)穩(wěn)定期。用來存儲圖像的外部數(shù)據(jù)存儲器的使能信號CE和寫信號WE及讀信號RE以及地址信號ADDRESS都是由單片機來產(chǎn)生。

  由于在數(shù)據(jù)輸出時,PCLK上升沿信號穩(wěn)定,而數(shù)據(jù)存儲器是在WR上升沿將數(shù)據(jù)寫入,因此可以在場同步信號(VSYNC)有效后(VSYNC=0) 采用像素時鐘信號(PCLK)作為寫信號WE。同時設計一個計數(shù)器中斷,在場同步信號(VSYNC)有效后,以行同步信號(HREF)的下降沿為觸發(fā)沿對一幀圖像每一行計數(shù),并取其輸出作為數(shù)據(jù)存儲器的地址信號ADDRESS。這樣在HREF的下降沿更新地址信號,接著在行同步信號(HREF)和像素時鐘信號(PCLK)上升沿存儲數(shù)據(jù)。

  系統(tǒng)圖像傳感器OV7670的初始化主要包括配置各種寄存器,利用單片機I/O口產(chǎn)生I2C總線信號,實現(xiàn)對OV7670各種寄存器的設置以及對圖像傳感器的行場同步信號,開窗及掃描格式的確定[6]??梢苑謩e設置輸出格式,縮放/DCW使能,像素時鐘分頻,水平、垂直采樣,輸出順序等。

  由于AT89LV51工作在11.0592MHz,而OV7670的工作時鐘頻率為10~24MHz,所以需要對0V7670的輸入時鐘進行分頻來降低OV7670的工作頻率,進而降低像素時鐘,這通過設置0V7670時鐘速率控制寄存器(CLKRC)為0xBF,設置通用寄存器7為0x12,用以控制采集圖像輸出格式為QVGA圖像大小為320×240;設置SCALING_DCWCTR寄存器為0x33,用以控制輸出圖像數(shù)據(jù)水平、垂直4抽樣;設置通用寄存器3為0x0c,用以控制縮放/DCW使能,設置通用寄存器14為0x13,用以控制像素時鐘4分頻,設置TSLB寄存器為 0x01,用以控制當分辨率改變時,傳感器自動設置窗口。設置具體的程序如下:

  #include “sccb.h”

  void initial_OV7670(void)

  {

  write_addSCCB(0x11,0xbf);

  //系統(tǒng)時鐘64分頻

  write_addSCCB(0x3e,0x13);

  //PCLK 4分頻

  write_addSCCB(0x12,0x10);

  //輸出格式QVGA

  write_addSCCB(0x72,0x33);

  //水平,垂直4抽樣

  write_addSCCB(0x0c,0x0c);

  //縮放/DCW使能

  write_addSCCB(0x3a,0x01);

  //當分辨率改變時,

  傳感器立即自動設置窗口

  }

c語言相關文章:c語言教程


存儲器相關文章:存儲器原理


攝像頭相關文章:攝像頭原理
數(shù)字濾波器相關文章:數(shù)字濾波器原理


評論


相關推薦

技術專區(qū)

關閉