搜索
查看: 9825|回复: 13

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

[复制链接]

该用户从未签到

21

主题

51

帖子

0

蝴蝶豆

中级会员

最后登录
2017-4-22
发表于 2016-9-29 19:20:51 | 显示全部楼层 |阅读模式
本帖最后由 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, 下载次数: 456, 下载积分: ST金币 -1

回复

使用道具 举报

该用户从未签到

37

主题

1121

帖子

0

蝴蝶豆

论坛元老

最后登录
2020-7-22
发表于 2016-9-29 20:35:01 | 显示全部楼层
谢谢分享学习一下
回复 支持 反对

使用道具 举报

该用户从未签到

15

主题

160

帖子

5

蝴蝶豆

高级会员

最后登录
2019-9-19
发表于 2016-9-29 22:06:12 | 显示全部楼层
哇塞,学习学习。
回复 支持 反对

使用道具 举报

该用户从未签到

31

主题

1982

帖子

0

蝴蝶豆

论坛元老

最后登录
2023-8-16
发表于 2016-9-30 11:53:04 | 显示全部楼层
          谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

47

主题

1257

帖子

5

蝴蝶豆

论坛元老

最后登录
2021-5-1
发表于 2016-9-30 11:56:46 | 显示全部楼层
谢谢分享学习了
回复 支持 反对

使用道具 举报

该用户从未签到

21

主题

51

帖子

0

蝴蝶豆

中级会员

最后登录
2017-4-22
 楼主| 发表于 2016-10-10 09:18:38 | 显示全部楼层

谢谢大侠的观望
回复 支持 反对

使用道具 举报

该用户从未签到

21

主题

51

帖子

0

蝴蝶豆

中级会员

最后登录
2017-4-22
 楼主| 发表于 2016-10-10 09:18:54 | 显示全部楼层
回复 支持 反对

使用道具 举报

该用户从未签到

21

主题

51

帖子

0

蝴蝶豆

中级会员

最后登录
2017-4-22
 楼主| 发表于 2016-10-10 09:19:16 | 显示全部楼层
zfz9232 发表于 2016-9-29 22:06
哇塞,学习学习。

多多看论坛
回复 支持 反对

使用道具 举报

该用户从未签到

21

主题

51

帖子

0

蝴蝶豆

中级会员

最后登录
2017-4-22
 楼主| 发表于 2016-10-10 09:19:35 | 显示全部楼层

有空可以关注我谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

1104

帖子

0

蝴蝶豆

金牌会员

最后登录
2019-3-29
发表于 2016-10-10 15:56:45 | 显示全部楼层
哇塞,学习学习
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-5-14 16:55 , Processed in 1.205200 second(s), 42 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表