你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

分享红龙STM32F429+摄像头OV5642模块实现二维码识别

[复制链接]
20110610ligo 发布时间:2016-9-29 19:20
本帖最后由 20110610ligo 于 2016-9-29 19:28 编辑

可以进来看看?下面有我自己的例程下载。玩一玩

/**
  * @file    main.c
  * @author  WB R&D Team - openmcu666
  * @version V0.1
  * @date    2016.08.24
  * @brief   Main Program body
  */

#include "stm32f4xx.h"
#include "Gpio.h"
#include "usart.h"
#include "delay.h"
#include "stm32f429i_lcd.h"
#include "ov7670.h"
#include "ov2640.h"
#include "ov5642.h"
#include "mt9d111.h"
#include "CamConfig.h"
#include "sccb_bus.h"
#include "RTC.h"
#include "string.h"
#include "QR_Decoder.h"

//only for OV5642

/*****************************************************************************
**   Main Function  main()
******************************************************************************/
int main(void)
{
        uint16_t temper;
        char  qr_type_len=0;
  short qr_data_len=0;
  char qr_type_buf[10];
  char qr_data_buf[512];
  int addr=0;
  int i=0,j=0;
  char qr_num=0;
       
       
        USART1_Init();
        //LED_Init();
  Key_Init();
        BEEP_Init();
        printf("\r\n");
        printf("Hello Welcome.\r\n");
        printf("Thank You For Choosing Our Products.\r\n");
        printf("Thank You Very Much.\r\n");
        printf("This Example Camera.\r\n");
        printf("\r\n");
        printf("DCMI Initialization...\r\n");
        LCD_Init();
        LCD_LayerInit();
  LTDC_Cmd(ENABLE);
  LCD_SetLayer(LCD_BACKGROUND_LAYER);  
        LCD_SetTransparency(0xFF);
        LCD_Clear(BLACK);
        LCD_SetLayer(LCD_FOREGROUND_LAYER); //使用前景层
  LCD_SetTransparency(0xFF);          //设置透明度
  LCD_Clear_ARGB8888(0x40000000);

  LCD_SetTextColor_ARGB8888(0xFFFFFFFF);
  LCD_DrawFullRect_ARGB8888(Frame_Width,Frame_Width);                              //绘制透明框

  LCD_DrawBox_ARGB8888(Frame_Width,Frame_Line_Length,Frame_Line_Size,0xD05CBDE7);  //绘制扫描框
       
        printf("Ok,Let's Go...\r\n");
       
        temper = ov7670_check();         //Camera是否为OV7670
         
        if (temper == 0x7673)
        {
                printf("Cam ID : [0x%02x]\r\n",temper);
                if (ov7670_init())
                {
                        printf("Init OV7670 reg Fail...\r\n");
                  while (1)
                  {
                               
                  }
                }
                else
                {
                        printf("Init OV7670 reg OK...\r\n");
                        printf("Show Camer Data...\r\n");

                }               
               
        }
        else                                       
        {
    temper=ov2640_check();
          
                if(temper==0x2642)                        //OV2640
                {
                        if (ov2640_init())
                  {
                        printf("Init OV2640 reg Fail...\r\n");
                        while (1)
                        {}
                  }
                  else
                 {
                        printf("Cam ID : [0x%02x]\r\n",temper);
                        printf("Init OV2640 reg OK...\r\n");
                        printf("Show Camer Data...\r\n");

                 }

         }
                else                                        //ov5642 or mt9d111
    {
                        temper=ov5642_check();
                        printf("Cam ID : [0x%02x]\r\n",temper);
                  if (temper==0x5642)//mt9d111_init
                  {
                          ov5642_init();
                          printf("Init ov5642 reg OK...\r\n");
                          printf("Show Camer Data...\r\n");       
                  }
                 else
                 {
                          printf("Init ov5642 reg Fail...\r\n");                               
                                while (1){}
                 }
    }
        }
//        if(RTC_Config())                                                           //初始化RTC
//        {
//          printf("\r\nLSE start failed\r\n");
//        }
//        RTC_Set_WakeUp(RTC_WakeUpClock_CK_SPRE_16bits,0);                //配置WAKE UP中断,1秒钟中断一次,用于统计帧率
  systick_delay_ms(100);
        ov5642_auto_focus();
        cam_start();
       
        while (1)
  {
    qr_num = QR_decoder();
                 if(qr_num)
      {
         GPIO_SetBits(BEEP_GPIO_PORT,BEEP_GPIO_PIN);
                                 systick_delay_ms(100);
                                 GPIO_ResetBits(BEEP_GPIO_PORT,BEEP_GPIO_PIN);
         //解码的数据是按照识别条码的个数封装好的二维数组,这些数据需要
         //根据识别条码的个数,按组解包并通过串口发送到上位机串口终端
         for(i=0;i < qr_num;i++)
         {
           qr_type_len = decoded_buf[addr++];//获取解码类型长度

            for(j=0;j < qr_type_len;j++)
                 qr_type_buf[j]=decoded_buf[addr++];//解码类型

             qr_data_len  = decoded_buf[addr++]<<8; //解码数据的高8位
             qr_data_len |= decoded_buf[addr++];    //解码数据的低8位

             for(j=0;j < qr_data_len;j++)
                 qr_data_buf[j]=decoded_buf[addr++];//获取解码数据

             USART1_Send_Data((unsigned char *)qr_type_buf, qr_type_len);//串口发送解码类型
             USART1_Send_Data((unsigned char *)":", 1);           
             USART1_Send_Data((unsigned char *)qr_data_buf, qr_data_len);//串口发送解码数据
             USART1_Send_Data((unsigned char *)"\r\n", 2);
             addr =0;
          }

       }
  }
}


红龙429_Camera(OV5642)二维码识别(1).rar

下载

2 MB, 下载次数: 448

收藏 6 评论13 发布时间:2016-9-29 19:20

举报

13个回答
suoma 回答时间:2016-9-29 20:35:01
谢谢分享学习一下
zfz9232 回答时间:2016-9-29 22:06:12
哇塞,学习学习。
zhangdaijin 回答时间:2016-9-30 11:53:04
          谢谢
mark0668 回答时间:2016-9-30 11:56:46
谢谢分享学习了
20110610ligo 回答时间:2016-10-10 09:18:38

谢谢大侠的观望
20110610ligo 回答时间:2016-10-10 09:18:54
20110610ligo 回答时间:2016-10-10 09:19:16
zfz9232 发表于 2016-9-29 22:06
哇塞,学习学习。

多多看论坛
20110610ligo 回答时间:2016-10-10 09:19:35

有空可以关注我谢谢
zbber 回答时间:2016-10-10 15:56:45
哇塞,学习学习
12下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版