|
廢話少說,直接上代碼
實(shí)驗(yàn)器材:
F407開發(fā)板
ATK_QR.lib功能:
1,支持QR二維碼識別。(包括常見的UTF8編碼格式和特殊的GBK編碼格式)。
2,支持EAN碼、39碼、交叉25碼、UPC碼、128碼等編碼方式的條碼識別。
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)前識別圖像。將二維碼、條形碼圖像放在攝像頭面前(提示:可
以網(wǎng)上百度搜索二維碼、一維碼生成器生成各種格式的碼制),手動旋轉(zhuǎn)調(diào)節(jié)OV2640模塊
鏡頭直至圖像清晰,則系統(tǒng)會掃面圖像并識別,如果識別到了則蜂鳴器會“滴”一聲,并在
LCD顯示識別結(jié)果及發(fā)送給串口。通過按鈕(KEY2)結(jié)束識別。同時DS1閃爍表示OV2640圖像幀
中斷,DS0閃爍速度慢表示識別圖像模式,閃爍快則表示已結(jié)束識別。
注意事項(xiàng):
1,移植ATK_QR.lib需將堆棧(Stack_Size)設(shè)置為0X1000或以上,在startup_stm32f40_41xx.s中設(shè)置。
2,LCD識別結(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)先級分組2
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
- //初始化延時函數(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í)驗(yàn)",16,lcddev.width);
- Show_Str(0,(lcddev.height+240)/2+4,240,16,(u8*)"識別結(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計數(shù),1秒鐘中斷一次
- //TIM3_Int_Init(10000-1,8400-1);
-
- //為灰度圖像申請內(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
|
評分
-
查看全部評分
|