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

分享红龙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扩展软件包
关注我们
st-img 微信公众号
st-img 手机版