標(biāo)題:
攝像頭OV7620(stm32f407)源代碼
[打印本頁]
作者:
xiaoxian
時(shí)間:
2018-4-23 17:34
標(biāo)題:
攝像頭OV7620(stm32f407)源代碼
廢話少說,直接上代碼
實(shí)驗(yàn)器材:
F407開發(fā)板
ATK_QR.lib功能:
1,支持QR二維碼識(shí)別。(包括常見的UTF8編碼格式和特殊的GBK編碼格式)。
2,支持EAN碼、39碼、交叉25碼、UPC碼、128碼等編碼方式的條碼識(shí)別。
3,支持UTF8-OEM轉(zhuǎn)換輸出(需要客戶自己提供轉(zhuǎn)換碼表,OEM一般指GBK編碼)。
4,內(nèi)存占用:6K(算法內(nèi)存)+ bmp_heigh* bmp_width(字節(jié),8位灰度圖像內(nèi)存)。
硬件資源:
1,DS0、DS1
2,蜂鳴器
3,按鍵KEY0/KEY1/KEY2/KEY_UP
4,LCD模塊
5,OV2640攝像頭
6,外部SRAM
實(shí)驗(yàn)現(xiàn)象:
編譯下載代碼,LCD顯示當(dāng)前識(shí)別圖像。將二維碼、條形碼圖像放在攝像頭面前(提示:可
以網(wǎng)上百度搜索二維碼、一維碼生成器生成各種格式的碼制),手動(dòng)旋轉(zhuǎn)調(diào)節(jié)OV2640模塊
鏡頭直至圖像清晰,則系統(tǒng)會(huì)掃面圖像并識(shí)別,如果識(shí)別到了則蜂鳴器會(huì)“滴”一聲,并在
LCD顯示識(shí)別結(jié)果及發(fā)送給串口。通過按鈕(KEY2)結(jié)束識(shí)別。同時(shí)DS1閃爍表示OV2640圖像幀
中斷,DS0閃爍速度慢表示識(shí)別圖像模式,閃爍快則表示已結(jié)束識(shí)別。
注意事項(xiàng):
1,移植ATK_QR.lib需將堆棧(Stack_Size)設(shè)置為0X1000或以上,在startup_stm32f40_41xx.s中設(shè)置。
2,LCD識(shí)別結(jié)果可打開串口助手XCOM查看。
單片機(jī)源程序如下:
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "key.h"
#include "lcd.h"
#include "timer.h"
#include "dcmi.h"
#include "sccb.h"
#include "sram.h"
#include "malloc.h"
#include "w25qxx.h"
#include "fontupd.h"
#include "text.h"
#include "atk_qrdecode.h"
#include "string.h"
#include "ff.h"
//圖像
u8 * Data;
//采集完一幀標(biāo)志
u8 Flag=0;
int main(void)
{
int i=0,j=0;
//設(shè)置系統(tǒng)中斷優(yōu)先級(jí)分組2
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
//初始化延時(shí)函數(shù)
delay_init(168);
//初始化串口波特率為115200
uart_init(115200);
//初始化LED
LED_Init();
//LCD初始化
LCD_Init();
//按鍵初始化
KEY_Init();
FSMC_SRAM_Init();
//初始化內(nèi)部內(nèi)存池
my_mem_init(SRAMIN);
//初始化外部內(nèi)存池
my_mem_init(SRAMEX);
//初始化W25Q128
W25QXX_Init();
//設(shè)置字體為黑色
POINT_COLOR=BLACK;
//清屏
LCD_Clear(WHITE);
//檢查字庫
while(font_init())
{
LCD_ShowString(60,50,lcddev.width,16,16,(u8*)"Font Error!");
delay_ms(200);
//清除顯示
LCD_Fill(60,50,lcddev.width,66,WHITE);
delay_ms(200);
}
Show_Str_Mid(0,20,(u8*)"二維碼識(shí)別實(shí)驗(yàn)",16,lcddev.width);
Show_Str(0,(lcddev.height+240)/2+4,240,16,(u8*)"識(shí)別結(jié)果:",16,1);
//初始化SCCB接口
SCCB_GPIO_Config();
//OV7620寄存器初始化
//復(fù)位
SCCB_Write_Reg(0x12,0xA4);
// //測試條紋
// SCCB_Write_Reg(0x12,0x26);
//設(shè)置輸出分辨率240*240的八位灰度數(shù)據(jù)
SCCB_Write_Reg(0x17,0x43);
SCCB_Write_Reg(0x18,0xBB);
SCCB_Write_Reg(0x19,0x42);
SCCB_Write_Reg(0x1A,0xB9);
//10Khz計(jì)數(shù),1秒鐘中斷一次
//TIM3_Int_Init(10000-1,8400-1);
//為灰度圖像申請(qǐng)內(nèi)存
Data=mymalloc(SRAMEX,57600);
//初始化DCMI
My_DCMI_Init();
//開啟DMA
DCMI_DMA_Init((u32)Data,57600,DMA_MemoryDataSize_Byte,DMA_MemoryInc_Enable);
//設(shè)置顯示窗口
LCD_Set_Window(0,0,640,480);
//開始傳輸
DCMI_Start();
//設(shè)置字體為紅色
POINT_COLOR=RED;
while(1)
{
if(Flag)
{
//清除標(biāo)志
Flag=0;
LED0=!LED0;
for(j=0;j<240;j++)
{
//設(shè)置光標(biāo)
LCD_SetCursor(0,j+100);
//開始寫入GRAM
LCD_WriteRAM_Prepare();
for(i=0;i<240;i++)
{
if(Data[j*240+i]>140)
{
LCD->LCD_RAM=65535;
}
else
{
LCD->LCD_RAM=0;
}
}
}
//開啟傳輸
DCMI_Start();
}
}
}
復(fù)制代碼
所有資料51hei提供下載:
攝像頭OV7620(stm32f407)代碼.rar
(1.11 MB, 下載次數(shù): 126)
2018-4-23 18:06 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
461472634
時(shí)間:
2018-6-19 11:06
學(xué)習(xí)一下,感謝分享
作者:
nanvivi
時(shí)間:
2018-8-15 20:55
代碼下載后編譯有一個(gè)錯(cuò)誤,
main.c(15): error: #5: cannot open source input file "atk_qrdecode.h": No such file or directory
把#include "atk_qrdecode.h"屏了之后好了。。?梢云羻
作者:
HRC
時(shí)間:
2018-8-16 15:28
學(xué)習(xí)一下,感謝分享,很實(shí)用
作者:
hustye
時(shí)間:
2018-9-16 13:55
感謝分享,很實(shí)用
作者:
fan52
時(shí)間:
2019-8-16 17:16
能不能搞個(gè)圖像顯示的程序,能檢測出人的外形
作者:
涼風(fēng)習(xí)習(xí)
時(shí)間:
2020-1-14 15:20
學(xué)習(xí)一下,感謝分享
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1