微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于STM32单片机开发光学指纹识别模块(FPM10A)全教程

基于STM32单片机开发光学指纹识别模块(FPM10A)全教程

时间:11-20 来源:互联网 点击:
  1. 应答信息
  2. }
  3. }
  4. //将BUFFER1 跟 BUFFER2 中的特征码合并成指纹模版
  5. void FINGERPRINT_Cmd_Reg_Model(void)
  6. {
  7. unsigned char i;
  8. for(i=0;i<6;i++) //包头
  9. {
  10. USART1_SendByte(FP_Pack_Head[i]);
  11. }
  12. for(i=0;i<6;i++) //命令合并指纹模版
  13. {
  14. USART1_SendByte(FP_Reg_Model[i]);
  15. }
  16. for(i=0;i<12;i++)
  17. {
  18. dat[i]=USART1_ReceivByte();
  19. }
  20. }
  21. //存储模版到特定地址
  22. void FINGERPRINT_Cmd_Save_Finger( unsigned char ucH_Char, unsigned char ucL_Char)
  23. {
  24. unsigned long temp = 0;
  25. unsigned char i;
  26. FP_Save_Finger[5] = ucH_Char;
  27. FP_Save_Finger[6] = ucL_Char;
  28. for(i=0;i<7;i++) //计算校验和
  29. temp = temp + FP_Save_Finger[i];
  30. FP_Save_Finger[7]=(temp & 0x00FF00) >> 8; //存放校验数据
  31. FP_Save_Finger[8]= temp & 0x0000FF;
  32. for(i=0;i<6;i++)
  33. USART1_SendByte(FP_Pack_Head[i]); //发送包头
  34. for(i=0;i<9;i++)
  35. USART1_SendByte(FP_Save_Finger[i]); //发送命令 将图像转换成 特征码 存放在 CHAR_buffer1
  36. for(i=0;i<12;i++)
  37. dat[i]=USART1_ReceivByte();
  38. }
  39. //获得指纹模板数量
  40. void FINGERPRINT_Cmd_Get_Templete_Num(void)
  41. {
  42. unsigned int i;
  43. for(i=0;i<6;i++) //包头
  44. USART1_SendByte(FP_Pack_Head[i]);
  45. //发送命令 0x1d
  46. for(i=0;i<6;i++)
  47. USART1_SendByte(FP_Templete_Num[i]);
  48. for(i=0;i<12;i++)
  49. dat[i]=USART1_ReceivByte();
  50. }
  51. //搜索全部用户999枚
  52. void FINGERPRINT_Cmd_Search_Finger(void)
  53. {
  54. unsigned char i;
  55. //发送命令搜索指纹库
  56. for(i=0;i<6;i++)
  57. {
  58. USART1_SendByte(FP_Pack_Head[i]);
  59. }
  60. for(i=0;i<11;i++)
  61. {
  62. USART1_SendByte(FP_Search[i]);
  63. }
  64. for(i=0;i<16;i++)
  65. {
  66. dat[i]=USART1_ReceivByte();
  67. }
  68. }
  69. //搜索用户0~9枚
  70. void FINGERPRINT_Cmd_Search_Finger_Admin(void)
  71. {
  72. unsigned char i;
  73. for(i=0;i<6;i++) //发送命令搜索指纹库
  74. {
  75. USART1_SendByte(FP_Pack_Head[i]);
  76. }
  77. for(i=0;i<11;i++)
  78. {
  79. USART1_SendByte(FP_Search_0_9[i]);
  80. }
  81. for(i=0;i<12;i++)
  82. dat[i]=USART1_ReceivByte();
  83. }
  84. //添加一个新的指纹
  85. unsigned char FP_add_new_user(unsigned char ucH_user,unsigned char ucL_user)
  86. {
  87. do
  88. {
  89. FINGERPRINT_Cmd_Get_Img(); //获得指纹图像
  90. } while ( dat[9]!=0x0 ); //检测是否成功的按了指纹
  91. FINGERPRINT_Cmd_Img_To_Buffer1(); //将图像转换成特征码存放在Buffer1中
  92. do
  93. {
  94. FINGERPRINT_Cmd_Get_Img(); //获得指纹图像
  95. } while( dat[9]!=0x0 );
  96. FINGERPRINT_Cmd_Img_To_Buffer2(); //将图像转换成特征码存放在Buffer2中
  97. FINGERPRINT_Cmd_Reg_Model(); //转换成特征码
  98. FINGERPRINT_Cmd_Save_Finger(ucH_user,ucL_user);
  99. return 0;
  100. }

第2个 FPM10A.h

  1. #ifndef _FPM10A_H
  2. #define _FPM10A_H
  3. #include
  4. extern unsigned char dat[18];
  5. extern void FINGERPRINT_Cmd_Get_Img();
  6. extern void FINGERPRINT_Cmd_Img_To_Buffer1();
  7. extern void FINGERPRINT_Cmd_Img_To_Buffer2();
  8. extern void FINGERPRINT_Cmd_Reg_Model();
  9. extern void FINGERPRINT_Cmd_Delete_All_Model(void);
  10. extern void FINGERPRINT_Cmd_Search_Finger(void);
  11. extern void FINGERPRINT_Cmd_Get_Templete_Num(void);
  12. extern void FINGERPRINT_Cmd_Search_Finger_Admin(void);
  13. extern void FINGERPRINT_Cmd_Save_Finger( unsigned char ucH_Char, unsigned char ucL_Char);
  14. extern unsigned char FP_add_new_user(unsigned char ucH_user,unsigned char ucL_user);
  15. extern void USART1_SendByte(unsigned char temp);
  16. extern unsigned char USART1_ReceivByte();
  17. extern void Delay_ms1(uint32_t nCount);
  18. void Delay_nus1(uint32_t nCount)
  19. {
  20. uint32_t j;
  21. while(nCount--)
  22. {
  23. j=8;
  24. while(j--);
  25. }
  26. }
  27. void Delay_ms1(uint32_t nCount)
  28. {
  29. while(nCount--)
  30. Delay_nus1(1100);
  31. }
  32. unsigned char test_fig()//检测指纹模块录入指纹情况,返回00表示录入成功;02无手指;03录入失败
  33. {
  34. unsigned char fig_dat;
  35. FINGERPRINT_Cmd_Get_Img();
  36. Delay_ms1(20);
  37. fig_dat=dat[9];
  38. return(fig_dat);
  39. }
  40. #endif

有了这两个东西,加入到你的工程中,就可以直接调用啦!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top