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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7713|回復(fù): 6
收起左側(cè)

基于STM32+FPM10A指紋識別的設(shè)計(源碼+原理圖+視頻)

[復(fù)制鏈接]
ID:282645 發(fā)表于 2018-2-6 16:41 | 顯示全部樓層 |閱讀模式
文件包括:源程序、原理圖、模塊資料、演示視頻。

視頻:


FPM10A資料:
為滿足不同客戶需求,模塊系統(tǒng)提供了大量資源提供給用戶系統(tǒng)使用。
4.1 用戶記事本
模塊在FLASH中開辟了一個512字節(jié)(16頁╳32 字節(jié))的存儲區(qū)域開放給上位機使用,作為用戶記事本。用戶可將自己需要斷電保護的數(shù)據(jù)存儲(參見WriteNotepad指令)在該空間指定的頁面或讀出(參見ReadNotepad指令)指定頁的內(nèi)容。
注意寫記事本某一頁的時候,該頁32 字節(jié)的內(nèi)容被整體寫入,原來的內(nèi)容被覆蓋。
4.2 緩沖區(qū)
模塊 RAM內(nèi)設(shè)有一個圖像緩沖區(qū)ImageBuffer與二個512 bytes 大小的特征文件緩沖區(qū)CharBuffer1和CharBuffer2。用戶可以通過指令讀寫任意一個緩沖區(qū)。 圖像緩沖區(qū)和兩個特征文件緩沖區(qū)中的內(nèi)容在模塊斷電時不保存。
4.2.1 圖像緩沖區(qū)
圖像緩沖區(qū) ImageBuffer 用于存放圖像數(shù)據(jù)和模塊內(nèi)部圖像處理使用。上傳/下載圖象時,圖像格式為256╳288像素。
通過 UART口上傳或下載圖像時為了加快速度,只用到像素字節(jié)的高四位,即采用16級灰度,每字節(jié)表示兩個像素(高四位為一個像素,低四位為同一行下一相鄰列的一個像素,即將兩個像素合成一個字節(jié)傳送)。由于圖象為 16個灰度等級,上傳到PC進行顯示時(對應(yīng) BMP格式),應(yīng)將灰度等級進行擴展(擴展為256級灰度,即 8bit位圖格式)。 通過 USB口傳送則是整8位像素,即 256灰度等級。
4.2.2 特征文件緩沖區(qū)
特征文件緩沖區(qū)CharBuffer1或 CharBuffer2既可以用于存放普通特征文件也可以用于存放模板特征文件。
4.3 指紋庫
模塊在FLASH中開辟了一段存儲區(qū)域作為指紋模板存放區(qū),即俗稱的指紋庫。指紋庫中的數(shù)據(jù)是斷電保護的。
指紋模板按照序號存放,若指紋庫容量為N,則指紋模板在指紋庫中的序號定義為:0、1、2------N-2、N-1。用戶只能根據(jù)序號訪問指紋庫內(nèi)容。
4.4 系統(tǒng)配置參數(shù)
為方便用戶使用,模塊開放部分系統(tǒng)參數(shù),允許用戶通過指令,單個修改指定(通過參數(shù)序號)的參數(shù)數(shù)值。參見設(shè)置模塊系統(tǒng)基本參數(shù)指令 SetSysPara 和讀系統(tǒng)參數(shù)指令ReadSysPara。
上位機發(fā)修改系統(tǒng)參數(shù)指令時,模塊先按照原配置進行應(yīng)答,應(yīng)答之后修改系統(tǒng)設(shè)置,并將配置記錄于FLASH,系統(tǒng)下次上電后,將按照新的配置工作。
4.4.1 波特率控制(參數(shù)序號:4)
  該參數(shù)控制模塊與上位機通過UART 通訊時的通訊波特率, 若參數(shù)值為N(N取值范圍圍1~12),對應(yīng)波特率為(9600╳N)bps。
該參數(shù)控制指紋比對和搜索時比對閥值,分為 5級,取值范圍為:1、2、3、4、5。 安全等級為1時認假率最高, 拒認率最低。安全等級為5時認假率最低, 拒認率最高。  
4.4.3 數(shù)據(jù)包長度(參數(shù)序號:6)
該參數(shù)控制模塊與上位機通訊時,每次傳送時允許數(shù)據(jù)中包內(nèi)容的最大長度,取值范圍為:0、1、2、3,對應(yīng)長度(字節(jié)數(shù))分別為:32、64、128、256。   

單片機源程序如下:
  1. #include "sys.h"
  2. #include "usart.h"               
  3. #include "delay.h"        
  4. #include "key.h"
  5. #include "lcd1602.h"
  6. #include "fpmxx.h"


  7. unsigned char LCD_ID_11[16] = {"    Huan Ying   "};
  8. unsigned char LCD_ID_22[16] = {"     Shi Bai    "};
  9. unsigned char LCD_ID_33[16] = {"  Qing Shi Yong "};


  10. void FPMXX_Check_Module()
  11. {
  12.          unsigned int i=0;
  13.          FPMXX_Cmd_Check();

  14.    for(i=0;i<12;i++)
  15.          {
  16.            FPMXX_RECEICE_BUFFER[i] = UART_Receive_Byte();//UART Receive a byteg
  17.    }

  18.          if(FPMXX_RECEICE_BUFFER[8]==0x03)
  19.          {
  20.                  for(i=0;i<556;i++)
  21.                  {
  22.                          switch(i)
  23.                          {
  24.                                  case 37:FPMXX_RECEICE_BUFFER[1] = UART_Receive_Byte();break;
  25.                                  case 38:FPMXX_RECEICE_BUFFER[2] = UART_Receive_Byte();break;
  26.                                  case 39:FPMXX_RECEICE_BUFFER[3] = UART_Receive_Byte();break;
  27.                                  case 40:FPMXX_RECEICE_BUFFER[4] = UART_Receive_Byte();break;
  28.                                  case 41:FPMXX_RECEICE_BUFFER[5] = UART_Receive_Byte();break;
  29.                                  default:FPMXX_RECEICE_BUFFER[0] = UART_Receive_Byte();
  30.                          }
  31.                  }
  32.                  
  33.                  //判斷指紋模塊型號
  34.                  if(FPMXX_RECEICE_BUFFER[1] == 0x46 && +
  35.                           FPMXX_RECEICE_BUFFER[2] == 0x50 && +
  36.                                 FPMXX_RECEICE_BUFFER[3] == 0x4D && +
  37.                                 FPMXX_RECEICE_BUFFER[4] == 0x31 && +
  38.                                 FPMXX_RECEICE_BUFFER[5] == 0x30)
  39.                  {
  40.                          L1602_string(1,1,LCD_ID_11);
  41.                          while(1)
  42.                          {
  43.                                  if(KEY0 == 0)
  44.                                  {
  45.                                          Delay_Ms(10);
  46.                                          while(KEY0 == 0);
  47.                                          Delay_Ms(100);
  48.                                          break;
  49.                                  }
  50.                                  Delay_Ms(100);
  51.                          }
  52.                  }
  53.          }
  54. }

  55.                                        
  56. int main(void)
  57. {                                                               
  58.           Stm32_Clock_Init(9);//系統(tǒng)時鐘設(shè)置
  59.         delay_init(72);                //延時初始化
  60.         uart_init(72,57600); //串口1初始化         
  61.         
  62.     KEY_Init();
  63.         L1602_init();
  64.         Delay_Ms(20);
  65.         USART1->DR=0X00;
  66.         while((USART1->SR&0X40)==0);//等待發(fā)送結(jié)束
  67.         Delay_Ms(20);
  68.         L1602_string(1,1,LCD_ID_22);
  69.         FPMXX_Check_Module();
  70.         while(1)
  71.         {
  72.         L1602_string(1,1,LCD_ID_11);
  73.                 L1602_string(2,1,LCD_ID_33);
  74.                 //添加指紋
  75.                 if(KEY0 == 0)
  76.                 {
  77.                         Delay_Ms(10);
  78.                         while(KEY0==0); //等待松開按鍵
  79.                         Delay_Ms(100);
  80.                         FPMXX_Add_Fingerprint();
  81.                 }
  82.                 //添加指紋
  83.                
  84.                 //搜索指紋
  85.                 if(KEY1 == 0)
  86.                 {
  87.                         Delay_Ms(10);
  88.                         while(KEY1==0); //等待松開按鍵
  89.                         Delay_Ms(100);
  90.                         FPMXX_Find_Fingerprint();
  91.                 }
  92.                 //搜索指紋        

  93.                 //清空指紋
  94.                 if(KEY2 == 0)
  95.                 {
  96.                         Delay_Ms(10);
  97.                         while(KEY2==0); //等待松開按鍵
  98.                         Delay_Ms(100);
  99.                         FPMXX_Delete_All_Fingerprint();
  100.                 }
  101.                 //清空指紋
  102. ……………………

  103. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
0.png

所有資料51hei提供下載:
STM32指紋識別.zip (835.46 KB, 下載次數(shù): 175)


評分

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

查看全部評分

回復(fù)

使用道具 舉報

ID:293376 發(fā)表于 2018-3-17 23:13 | 顯示全部樓層
帥氣!!!
回復(fù)

使用道具 舉報

ID:246091 發(fā)表于 2018-3-19 09:14 來自觸屏版 | 顯示全部樓層
厲害了
回復(fù)

使用道具 舉報

ID:489621 發(fā)表于 2019-3-20 13:10 | 顯示全部樓層
親 ,你們的資料我在做 時候遇到了問題
回復(fù)

使用道具 舉報

ID:561394 發(fā)表于 2019-6-12 23:45 | 顯示全部樓層
親 不會做啊
回復(fù)

使用道具 舉報

ID:516571 發(fā)表于 2019-6-13 10:30 | 顯示全部樓層
可以可以,值得學(xué)習(xí)下
回復(fù)

使用道具 舉報

ID:293128 發(fā)表于 2019-6-13 10:41 | 顯示全部樓層
厲害了
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 毛片在线免费播放 | 一区二区欧美日韩 | 在线国产小视频 | 日本精品视频在线 | 久久视频在线免费观看 | 亚洲在线一区二区 | 久久久青草 | 午夜伦理福利 | 自拍视频网 | 久久久国产视频 | 成人午夜在线视频 | 色噜噜狠狠一区二区三区果冻 | 国产一区在线视频 | 在线免费观看av网站 | 老女人毛片 | 一区二区在线看 | 亚洲欧美在线视频 | 免费在线小视频 | 国产精品久久久久永久免费看 | 成人av在线网站 | 福利视频导航大全 | 91视频一区二区三区 | 免费三片在线观看网站v888 | 天天色影院 | 丁香av| h片免费看 | 最新日韩av| 中文精品一区 | 成年人视频网站 | 久久国产一区二区三区 | 五月天开心网 | 超碰在线观看97 | 国产高清av | 青久久 | 亚洲精品www久久久久久广东 | 免费看黄色av | 神马福利视频 | 好吊妞这里只有精品 | 国产精品免费一区 | 国产精品123区 | 黄视频在线播放 |