标题:
摄像头OV7620(stm32f407)源代码
[打印本页]
作者:
xiaoxian
时间:
2018-4-23 17:34
标题:
摄像头OV7620(stm32f407)源代码
废话少说,直接上代码
实验器材:
F407开发板
ATK_QR.lib功能:
1,支持QR二维码识别。(包括常见的UTF8编码格式和特殊的GBK编码格式)。
2,支持EAN码、39码、交叉25码、UPC码、128码等编码方式的条码识别。
3,支持UTF8-OEM转换输出(需要客户自己提供转换码表,OEM一般指GBK编码)。
4,内存占用:6K(算法内存)+ bmp_heigh* bmp_width(字节,8位灰度图像内存)。
硬件资源:
1,DS0、DS1
2,蜂鸣器
3,按键KEY0/KEY1/KEY2/KEY_UP
4,LCD模块
5,OV2640摄像头
6,外部SRAM
实验现象:
编译下载代码,LCD显示当前识别图像。将二维码、条形码图像放在摄像头面前(提示:可
以网上百度搜索二维码、一维码生成器生成各种格式的码制),手动旋转调节OV2640模块
镜头直至图像清晰,则系统会扫面图像并识别,如果识别到了则蜂鸣器会“滴”一声,并在
LCD显示识别结果及发送给串口。通过按钮(KEY2)结束识别。同时DS1闪烁表示OV2640图像帧
中断,DS0闪烁速度慢表示识别图像模式,闪烁快则表示已结束识别。
注意事项:
1,移植ATK_QR.lib需将堆栈(Stack_Size)设置为0X1000或以上,在startup_stm32f40_41xx.s中设置。
2,LCD识别结果可打开串口助手XCOM查看。
单片机源程序如下:
#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;
//采集完一帧标志
u8 Flag=0;
int main(void)
{
int i=0,j=0;
//设置系统中断优先级分组2
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
//初始化延时函数
delay_init(168);
//初始化串口波特率为115200
uart_init(115200);
//初始化LED
LED_Init();
//LCD初始化
LCD_Init();
//按键初始化
KEY_Init();
FSMC_SRAM_Init();
//初始化内部内存池
my_mem_init(SRAMIN);
//初始化外部内存池
my_mem_init(SRAMEX);
//初始化W25Q128
W25QXX_Init();
//设置字体为黑色
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*)"二维码识别实验",16,lcddev.width);
Show_Str(0,(lcddev.height+240)/2+4,240,16,(u8*)"识别结果:",16,1);
//初始化SCCB接口
SCCB_GPIO_Config();
//OV7620寄存器初始化
//复位
SCCB_Write_Reg(0x12,0xA4);
// //测试条纹
// SCCB_Write_Reg(0x12,0x26);
//设置输出分辨率240*240的八位灰度数据
SCCB_Write_Reg(0x17,0x43);
SCCB_Write_Reg(0x18,0xBB);
SCCB_Write_Reg(0x19,0x42);
SCCB_Write_Reg(0x1A,0xB9);
//10Khz计数,1秒钟中断一次
//TIM3_Int_Init(10000-1,8400-1);
//为灰度图像申请内存
Data=mymalloc(SRAMEX,57600);
//初始化DCMI
My_DCMI_Init();
//开启DMA
DCMI_DMA_Init((u32)Data,57600,DMA_MemoryDataSize_Byte,DMA_MemoryInc_Enable);
//设置显示窗口
LCD_Set_Window(0,0,640,480);
//开始传输
DCMI_Start();
//设置字体为红色
POINT_COLOR=RED;
while(1)
{
if(Flag)
{
//清除标志
Flag=0;
LED0=!LED0;
for(j=0;j<240;j++)
{
//设置光标
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();
}
}
}
复制代码
所有资料51hei提供下载:
摄像头OV7620(stm32f407)代码.rar
(1.11 MB, 下载次数: 126)
2018-4-23 18:06 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
461472634
时间:
2018-6-19 11:06
学习一下,感谢分享
作者:
nanvivi
时间:
2018-8-15 20:55
代码下载后编译有一个错误,
main.c(15): error: #5: cannot open source input file "atk_qrdecode.h": No such file or directory
把#include "atk_qrdecode.h"屏了之后好了。。。可以屏吗
作者:
HRC
时间:
2018-8-16 15:28
学习一下,感谢分享,很实用
作者:
hustye
时间:
2018-9-16 13:55
感谢分享,很实用
作者:
fan52
时间:
2019-8-16 17:16
能不能搞个图像显示的程序,能检测出人的外形
作者:
凉风习习
时间:
2020-1-14 15:20
学习一下,感谢分享
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1