久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 26119|回復: 28
打印 上一主題 下一主題
收起左側

基于stm32的二維碼識別源碼程序(含詳細注釋),二維碼硬解碼,非常詳細

  [復制鏈接]
跳轉到指定樓層
樓主
ID:283449 發表于 2018-7-29 20:32 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本設計基于STM32F429單片機配合OV5642 攝像頭實現二維碼識別的KEIL 程序,現上傳分享給大家。非常有工程參考價值。

單片機源程序如下:
  1. /**
  2.   * @file    main.c
  3.   * @author  WB R&D Team - openmcu666
  4.   * @version V0.1
  5.   * @date    2016.08.24
  6.   * @brief   Main Program body
  7.   */

  8. #include "stm32f4xx.h"
  9. #include "Gpio.h"
  10. #include "usart.h"
  11. #include "delay.h"
  12. #include "stm32f429i_lcd.h"
  13. #include "ov7670.h"
  14. #include "ov2640.h"
  15. #include "ov5642.h"
  16. #include "mt9d111.h"
  17. #include "CamConfig.h"
  18. #include "sccb_bus.h"
  19. #include "RTC.h"
  20. #include "string.h"
  21. #include "QR_Decoder.h"

  22. //only for OV5642

  23. /*****************************************************************************
  24. **   Main Function  main()
  25. ******************************************************************************/
  26. int main(void)
  27. {
  28.         uint16_t temper;
  29.         char  qr_type_len=0;
  30.   short qr_data_len=0;
  31.   char qr_type_buf[10];
  32.   char qr_data_buf[512];
  33.   int addr=0;
  34.   int i=0,j=0;
  35.   char qr_num=0;


  36.         USART1_Init();
  37.         //LED_Init();
  38.   Key_Init();
  39.         BEEP_Init();
  40.         printf("\r\n");
  41.         printf("Hello Welcome.\r\n");
  42.         printf("Thank You For Choosing Our Products.\r\n");
  43.         printf("Thank You Very Much.\r\n");
  44.         printf("This Example Camera.\r\n");
  45.         printf("\r\n");
  46.         printf("DCMI Initialization...\r\n");
  47.         LCD_Init();
  48.         LCD_LayerInit();
  49.   LTDC_Cmd(ENABLE);
  50.   LCD_SetLayer(LCD_BACKGROUND_LAYER);  
  51.         LCD_SetTransparency(0xFF);
  52.         LCD_Clear(BLACK);
  53.         LCD_SetLayer(LCD_FOREGROUND_LAYER); //使用前景層
  54.   LCD_SetTransparency(0xFF);          //設置透明度
  55.   LCD_Clear_ARGB8888(0x40000000);

  56.   LCD_SetTextColor_ARGB8888(0xFFFFFFFF);
  57.   LCD_DrawFullRect_ARGB8888(Frame_Width,Frame_Width);                              //繪制透明框

  58.   LCD_DrawBox_ARGB8888(Frame_Width,Frame_Line_Length,Frame_Line_Size,0xD05CBDE7);  //繪制掃描框

  59.         printf("Ok,Let's Go...\r\n");

  60.         temper = ov7670_check();         //Camera是否為OV7670

  61.         if (temper == 0x7673)
  62.         {
  63.                 printf("Cam ID : [0x%02x]\r\n",temper);
  64.                 if (ov7670_init())
  65.                 {
  66.                         printf("Init OV7670 reg Fail...\r\n");
  67.                   while (1)
  68.                   {

  69.                   }
  70.                 }
  71.                 else
  72.                 {
  73.                         printf("Init OV7670 reg OK...\r\n");
  74.                         printf("Show Camer Data...\r\n");

  75.                 }               

  76.         }
  77.         else                                       
  78.         {
  79.     temper=ov2640_check();

  80.                 if(temper==0x2642)                        //OV2640
  81.                 {
  82.                         if (ov2640_init())
  83.                   {
  84.                         printf("Init OV2640 reg Fail...\r\n");
  85.                         while (1)
  86.                         {}
  87.                   }
  88.                   else
  89.                  {
  90.                         printf("Cam ID : [0x%02x]\r\n",temper);
  91.                         printf("Init OV2640 reg OK...\r\n");
  92.                         printf("Show Camer Data...\r\n");

  93.                  }

  94.          }
  95.                 else                                        //ov5642 or mt9d111
  96.     {
  97.                         temper=ov5642_check();
  98.                         printf("Cam ID : [0x%02x]\r\n",temper);
  99.                   if (temper==0x5642)//mt9d111_init
  100.                   {
  101.                           ov5642_init();
  102.                           printf("Init ov5642 reg OK...\r\n");
  103.                           printf("Show Camer Data...\r\n");        
  104.                   }
  105.                  else
  106.                  {
  107.                           printf("Init ov5642 reg Fail...\r\n");                                
  108.                                 while (1){}
  109.                  }
  110.     }
  111.         }
  112. //        if(RTC_Config())                                                           //初始化RTC
  113. //        {
  114. //          printf("\r\nLSE start failed\r\n");
  115. //        }
  116. //        RTC_Set_WakeUp(RTC_WakeUpClock_CK_SPRE_16bits,0);                //配置WAKE UP中斷,1秒鐘中斷一次,用于統計幀率
  117.   systick_delay_ms(100);
  118.         ov5642_auto_focus();
  119.         cam_start();

  120.         while (1)
  121.   {
  122.     qr_num = QR_decoder();
  123.                  if(qr_num)
  124.       {
  125.          GPIO_SetBits(BEEP_GPIO_PORT,BEEP_GPIO_PIN);
  126.                                  systick_delay_ms(100);
  127.                                  GPIO_ResetBits(BEEP_GPIO_PORT,BEEP_GPIO_PIN);
  128.          //解碼的數據是按照識別條碼的個數封裝好的二維數組,這些數據需要
  129.          //根據識別條碼的個數,按組解包并通過串口發送到上位機串口終端
  130.          for(i=0;i < qr_num;i++)
  131.          {
  132.            qr_type_len = decoded_buf[i][addr++];//獲取解碼類型長度

  133.             for(j=0;j < qr_type_len;j++)
  134.                  qr_type_buf[j]=decoded_buf[i][addr++];//解碼類型

  135.              qr_data_len  = decoded_buf[i][addr++]<<8; //解碼數據的高8位
  136.              qr_data_len |= decoded_buf[i][addr++];    //解碼數據的低8位

  137.              for(j=0;j < qr_data_len;j++)
  138.                  qr_data_buf[j]=decoded_buf[i][addr++];//獲取解碼數據

  139.              USART1_Send_Data((unsigned char *)qr_type_buf, qr_type_len);//串口發送解碼類型
  140.              USART1_Send_Data((unsigned char *)":", 1);           
  141.              USART1_Send_Data((unsigned char *)qr_data_buf, qr_data_len);//串口發送解碼數據
  142.              USART1_Send_Data((unsigned char *)"\r\n", 2);
  143.              addr =0;
  144.           }

  145.        }
  146.   }
  147. }
復制代碼


STM32二維碼識別源碼資料.rar

1.14 MB, 下載次數: 724, 下載積分: 黑幣 -5

基于stm32的二維碼解碼識別源碼

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏23 分享淘帖 頂2 踩
回復

使用道具 舉報

沙發
ID:364328 發表于 2018-7-30 11:14 | 只看該作者
請問一下識別二維碼是識別出啥啊,還有F103能做不
回復

使用道具 舉報

板凳
ID:166329 發表于 2018-8-21 09:28 | 只看該作者
最近在學習這個
回復

使用道具 舉報

地板
ID:388329 發表于 2018-9-2 22:18 | 只看該作者
有意思的程序
回復

使用道具 舉報

5#
ID:392843 發表于 2018-9-3 10:26 | 只看該作者
實用!正在找這資料。
回復

使用道具 舉報

6#
ID:86450 發表于 2018-9-3 16:36 | 只看該作者
最近在學習這個
回復

使用道具 舉報

7#
ID:377348 發表于 2018-10-16 17:04 | 只看該作者
為啥我打不開
回復

使用道具 舉報

8#
ID:433680 發表于 2018-12-11 12:25 | 只看該作者
這個不錯,正在找這資料。感謝樓主分享
回復

使用道具 舉報

9#
ID:515384 發表于 2019-4-20 22:08 | 只看該作者
F103,ov7725可以用嗎
回復

使用道具 舉報

10#
ID:373 發表于 2019-5-20 15:49 | 只看該作者
看能不能移植到其他單片機系統中去
回復

使用道具 舉報

11#
ID:565449 發表于 2019-7-1 18:07 | 只看該作者
qwthh 發表于 2018-7-30 11:14
請問一下識別二維碼是識別出啥啊,還有F103能做不

請問你做出來了嗎
回復

使用道具 舉報

12#
ID:481408 發表于 2019-8-27 10:57 | 只看該作者
好東西啊
回復

使用道具 舉報

13#
ID:580667 發表于 2019-9-18 17:04 | 只看該作者
學習一下
回復

使用道具 舉報

14#
ID:166442 發表于 2019-11-1 11:46 | 只看該作者
qrcode是庫形式
回復

使用道具 舉報

15#
ID:473410 發表于 2019-11-3 17:08 | 只看該作者
littleboy233 發表于 2019-4-20 22:08
F103,ov7725可以用嗎

F103帶不動攝像頭
回復

使用道具 舉報

16#
ID:473410 發表于 2019-11-3 17:08 | 只看該作者
qwthh 發表于 2018-7-30 11:14
請問一下識別二維碼是識別出啥啊,還有F103能做不

F103帶不動攝像頭
回復

使用道具 舉報

17#
ID:392673 發表于 2019-11-18 16:14 | 只看該作者
有原理圖嗎
回復

使用道具 舉報

18#
ID:578659 發表于 2019-11-30 10:59 | 只看該作者
學習支持
回復

使用道具 舉報

19#
ID:600674 發表于 2019-12-15 14:40 | 只看該作者
非常棒,非常感謝!
回復

使用道具 舉報

20#
ID:658347 發表于 2019-12-21 21:49 | 只看該作者
真不錯,下載下來看看
回復

使用道具 舉報

21#
ID:41233 發表于 2020-2-27 14:21 | 只看該作者
看看庫的使用
回復

使用道具 舉報

22#
ID:715359 發表于 2020-3-25 12:31 | 只看該作者
你好,請問可以麻煩再詳細解析一下嗎?
回復

使用道具 舉報

23#
ID:553985 發表于 2020-5-15 16:07 | 只看該作者
編譯都過不去,缺少文件啊
回復

使用道具 舉報

24#
ID:378085 發表于 2020-5-18 18:24 | 只看該作者
感謝樓主分享 研究一下
回復

使用道具 舉報

25#
ID:427723 發表于 2020-11-16 15:59 | 只看該作者
stm32f407+ov2640能否借鑒移植,調用解碼庫,謝謝
回復

使用道具 舉報

26#
ID:441129 發表于 2021-7-14 09:57 | 只看該作者
請問一下識別二維碼是識別出啥啊,還有F103能做不
回復

使用道具 舉報

27#
ID:992285 發表于 2023-9-21 14:43 | 只看該作者
感謝分享,最近研究這個,準備用是他們2f407,謝謝!
回復

使用道具 舉報

28#
ID:248837 發表于 2024-10-21 12:50 | 只看該作者
最近正在看這個,請問樓主用的的decode庫是哪個庫?是zbar嗎?
回復

使用道具 舉報

29#
ID:228360 發表于 2024-10-22 14:45 | 只看該作者
謝謝樓主分享,感謝了!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 五月婷婷亚洲 | 99精品久久久 | 黄色毛片一级 | 99视频在线免费观看 | 成人不卡 | 成人在线观看免费爱爱 | 伊人精品视频 | 精品亚洲一区二区 | 99亚洲精品| 一区二区日韩 | 国产中文字幕网 | 国产成人免费视频 | 男人天堂色 | 2022国产精品 | 99成人 | 九色国产 | 精品少妇一区二区三区在线播放 | 久久av一区二区三区 | 成人午夜视频在线观看 | 久草视频观看 | 国产精品视频一区二区三 | 狠狠干狠狠操 | 久久久久久久av麻豆果冻 | 久久亚洲欧美日韩精品专区 | 岛国毛片在线观看 | 黄a免费看| 999国产精品视频 | 午夜精品久久久久久久久久久久久 | 欧美日韩精品一区 | 国产一区电影 | 国产 欧美 日韩 一区 | 亚洲精品中文字幕在线 | 一区二区三区回区在观看免费视频 | 国产视频一区二区在线观看 | 久久久久亚洲 | 国产亚洲网站 | 欧美亚洲第一区 | 欧美精品在线一区 | 伊人精品 | 欧美激情网站 | 久久一区二区免费视频 |