首页-达尔闻    全部    毕业设计| 即学即用,分享搭建指纹识别系统全过程

毕业设计| 即学即用,分享搭建指纹识别系统全过程

指纹识别在门禁系统相关的毕设中经常出现,我们就找到了一篇详细的搭建指纹识别系统的文章分享给大家
收藏
  • 指纹识别在门禁系统相关的毕设中经常出现,我们就找到了一篇详细的搭建指纹识别系统的文章分享给大家。有兴趣想学习指纹识别的朋友可以尝试下,当然重点是帮没接触过指纹识别模块的同学踩一下坑。网上买回来的模块即插即用,不用半天就可以实现功能,也可以做一些自己感兴趣的智能家居小用品。

    第一步:准备模块和工具:

      1)开发板:STM32F103RCT6Mini开发板

      2)显示屏:某宝上购买的1.44寸TFT显示屏(这个显示屏看个人喜欢,可有可无,可以用自己已经有的显示屏作显示,没有的话就直接打印串口的方式看运行过程)

      3)指纹识别模块:某宝上购买的AS608指纹识别

      4)按键板:自己用面包板焊接的按键

    相关资料及下面的代码可以在“达尔闻说”微信回复:指纹识别,获取。

     

    第二步:接线

    1.44寸液晶屏电源接线:

    VCC——>接5V DC

    GND——> 接地

     

    液晶屏数据线接线:

    CS——>接 PC7 片选信号

    CLK——>接 PB13 SPI时钟信号

    SDI(DIN)——>接 PB15 SPI数据总线

     

    液晶屏控制线接线:

    LED——>接 PB9 背光控制线,高电平电亮

    RS——>接 PC6 寄存器选择信号 RS=0发送命令 RS = 1发送像素数据

    RST——>接 PB12 液晶屏复位信号线,低电平复位。

     

    指纹识别模块AS608接线:

    VCC——>接3.3V (切记不可以接5V,会烧坏)

    GND——>接地

    RX——>PB10

    TX——>PB11

     

    实物图:

     

    接线图:

    杜邦线接的有点乱,IO口的接线看个人喜好,除了RX和TX需要接开发板上的RX和TX之外,其他线可以随意更改,只需要修改对应的IO口初始化函数即可。

     

    第三步:移植代码和使用方法

    主函数:

    int main(void)
    {
       delay_init();              //延时函数初始化
      SystemInit();                //系统初始化
      Uart_Init(115200);           //打印串口初始化
      usart3_init(57600);          //指纹识别模块初始化
      KEY_Init();                  //按键初始化
      Lcd_Init();                  //LCD屏初始化
      LCD_LED_SET;                 //通过IO控制背光亮
       Redraw_Mainmenu();           //绘制主菜单(部分内容由于分辨率超出物理值可能无法显示)
     while(1)
       { 
         key_num = KEY_Scan();
           if(key_num == 1)
           {
            key_num = 0;
            Lcd_Clear(WHITE);
            Add_FR();
           }
           if(key_num == 3)
           {
            key_num = 0;
            Lcd_Clear(WHITE);
            Del_FR();
           }
           if(key_num == 5)
           {
            key_num=0;
            Lcd_Clear(WHITE);
            press_FR();
           }
         }
    }
     

     

    指纹添加函数Add_FR():

    void Add_FR(void)
    {
     u8 i, ensure, processnum = 0;
     u8 ID_NUM = 0;
    char str[20];
     
     while(1)
     {
       switch (processnum)
       {
       case 0:
         i++;
       Gui_DrawFont_GBK16(35,15,RED,WHITE,"请按手指");
       showimage(gImage_Finger65,33,40,97,104,65,65);    //指纹图片显示示例
         ensure = PS_GetImage();
         if(ensure == 0x00)
         {
           ensure = PS_GenChar(CharBuffer1); //生成特征
           if(ensure == 0x00)
           {
        Gui_DrawFont_GBK16(35,15,GREEN,WHITE,"指纹正常");
        delay_ms(1500);
             i = 0;
             processnum = 1;                 //跳到第二步
           }
           else ShowErrMessage(ensure); 
       }
         else
         {
          ShowErrMessage(ensure);
         }
         break;
       //省略的部分后面摆放到网盘,自己下载查看

     

    指纹删除函数Del_FR():

    while(key_num != 3)
     {
      key_num = KEY_Scan();
      if(key_num == 2)
      {
       key_num = 0;
       if(ID_NUM > 0)
        ID_NUM--;
      }
      if(key_num == 4)
      {
       key_num = 0;
       if(ID_NUM < 99)
        ID_NUM++;
      }
      if(key_num == 1)
       goto MENU ;             //返回主页面
      if(key_num == 5)
       {
       key_num = 0;
       ensure = PS_Empty();   //清空指纹库
       if(ensure == 0)
       {
            Lcd_Clear(WHITE);
        Gui_DrawFont_GBK16(10,15,GREEN,WHITE,"清空指纹库成功");
        printf("清空指纹库成功 \r\n");
       }
     

     

    指纹验证函数press_FR():

    void press_FR(void)
    {
    SearchResult seach;
    u8 ensure;
    char str[20];
    Gui_DrawFont_GBK16(35,15,RED,WHITE,"请按指");
    showimage(gImage_Finger65,33,40,97,104,65,65);    //指纹图片显示示例
    while(key_num != 1)
    key_num = KEY_Scan();
     ensure = PS_GetImage();
     if(ensure == 0x00)
      {
    printf("获取图像成功 \r\n");
       ensure = PS_GenChar(CharBuffer1);
       if(ensure == 0x00)
        {
     printf("生成特征成功 \r\n");
         ensure = PS_HighSpeedSearch(CharBuffer1, 0, 99, &seach);
         if(ensure == 0x00)
          {
      printf("验证成功 \r\n");
      Lcd_Clear(WHITE);
           Gui_DrawFont_GBK16(16,15,GREEN,WHITE,"指纹验证成功");
           sprintf(str, " 指纹ID:%d  ", seach.pageID);
           Gui_DrawFont_GBK16(16,35,RED,WHITE,(u8*)str);
           delay_ms(1500);
           delay_ms(1500);
      break;
         }
     

    只需要移植一个按键C文件、串口初始化C文件、AS608C文件,文件路径和对应函数添加好,编译下载即可运行,方便快捷。

     

    第四步:实验结果及注意事项

    注意事项:

    1、函数初始化切记不要漏掉

    2、按键质量差的消抖需要注意

    3、指纹识别模块电源不要接错,否则会烧坏。

     

    最后:心得总结

    模块还是很方便使用的,接线简单,在学校参加项目或者初学C语言的人都可以买来学习一下,兴趣之余可以创作一些类似智能的开关锁,指纹识别系统,签到系统等等,即学即用。

    显示函数和部分处理函数看个人需要,可以优化得更好,处理逻辑可以看需要更改合适自己要求的,函数都是封装好的,直接调用就好。有更好玩的模块欢迎一起探讨学习。

    本文为教而不善。”的原创文章,对本篇感兴趣的小伙伴可以关注他的博客,看原文:

    https://blog.csdn.net/weixin_45270358/article/details/111985252