0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文详解AS608指纹识别模块

CHANBAEK 来源:电子应用学习馆 作者:一只会飞的大鱼儿 2023-04-14 14:53 次阅读

一. 简介

AS608 指纹识别模块主要是指采用了杭州晟元芯片技术有限公司(Synochip)的 AS608 指纹识别芯片 而做成的指纹模块,模块厂商只是基于该芯片设计外围电路,集成一个可供2次开发的指纹模块; 所以,只要是基于AS608芯片的指纹模块,其控制电路及控制协议几乎是一样的,只是厂家和性能不同而已。

二. 硬件原理图介绍

1.硬件接口

AS608模块采用8pin的控制接口,供电电压为3.3V(不能使用5V供电),通信总线有两种,分别为串口通讯(TX、RX)和USB通讯(D+、D-); 采用串口通讯,编程相对简单,也是比较常用的一种,但是兼容性不好; 采用USB通讯,编程相对较难,但USB作为最常用的总线接口,有很好的兼容性。

2.控制电路图

51单片机为例,AS608模块touch引脚接到单片机的普通IO上,当有指纹按下,该引脚触发一个高电平信号; TX、RX引脚分别接到单片机的P30、P31串口引脚上。

注:AS608只能用+3.3V供电,不可用+5V供电。

三. 通讯协议格式

单片机要实现对AS608指纹模块的控制,就需要根据AS608芯片规定的通讯协议格式来发送和处理串口数据,整个模块各个功能的实现也是围绕该协议格式进行的。

控制指令有三类,指令包、数据包、结束包; 一般指令包是由单片机发送到模块上,模块接收到指令包后,返回对应的数据包;

  • 指令包主要包括:包头、芯片地址、包标识、包长度、控制参数和校验和;
  • 数据包主要包括:包头、芯片地址、包标识、包长度、数据和校验和 ;
  • 数据包与结束包的区别在于包标识,02H:数据包,且有后续包。 08H:最后一个数据包,即结束包。

四. 控制程序

以指纹密码锁为例,

1.常用控制指令

一般要实现一个指纹密码锁的功能,只需用到以下指令:

录入图像、生成特征、搜索指纹、自动验证指纹、自动注册模板、删除指纹。

2.录入指纹

首先要是实现开锁,需要在系统里面录入指纹信息,需要:

录入图像->生成特征->快速查找图像->自动注册模板

(1)录入图像指令

(2)生成特征指令

存入指纹图像,存入单片机给定的缓冲区号BufferID中;

(3)快速查找图像

生成图像后要验证是否有在Buffer里面;

(4)自动注册模板

最后将Buffer里面的图像存入Flash里面

(5)录入指纹程序

void addfinger()    //录入指纹
{
  uchar IDa1,IDa2,IDa3;     //指纹图像存放地址
  LcmClearTXT();
  PutStr(1,2,"请按手指");    
  SFG_getimage();
  while(querenma!=0)       //指令接收不成功,重新发送
  SFG_getimage();
  SFG_genchar(buffer1ID);
  while(querenma!=0)       //指令接收不成功,重新发送
  SFG_genchar(buffer1ID);
  UART_Init();
  SFG_fastsearch(buffer1ID);
  while(querenma==1)      //指令接收不成功,重新发送
  SFG_fastsearch(buffer1ID);
  SBUF = querenma;
  while(TI==0);
  TI=0;
  if(querenma==0)
  {
    LcmClearTXT();
    PutStr(1,1,"该指纹已存储");
    PutStr(3,0,"  按任意键继续"); 
      while(Keycan()==0);
  }
  else if(querenma==9)
    {
      LcmClearTXT();
      PutStr(1,1,"请再次按手指");
      SFG_enroll();
      while(querenma==2)
      SFG_enroll();
      LcmClearTXT();
      if(querenma==0)
      { 
        IDa1=PageID/100;IDa2=PageID/10%10;IDa3=PageID%10;
        PutStr(1,1,"指纹采集成功");
        PutStr(2,1,"编号为:");
        WriteCommand(0x8D); 
        WriteData(0x30+IDa1);WriteData(0x30+IDa2);WriteData(0x30+IDa3);
        }
      else if(querenma!=0)
        {
        PutStr(1,1,"指纹采集失败");
        PutStr(2,1,"请重新操作");
       }
    PutStr(3,0,"  按任意键继续"); 
      while(Keycan()==0);
       }
  LcmClearTXT();
}

2.自动验证指纹

录入指纹后,就可以匹配本人的指纹实现开锁,只需要发送自动验证指纹指令,返回的确认码为0x00,即为匹配成功,不为0x00即匹配失败;

(1)录入指纹指令

(2)自动验证指纹程序

void shuazhiwen()     //验证用户的指纹
{
    uchar IDs1,IDs2,IDs3;   
  LcmClearTXT();
  PutStr(1,1,"请按手指开锁");      
  SFG_identify();
  while(querenma==2)
  SFG_identify(); 
  if(querenma==0)
   {
    LcmClearTXT();
    PutStr(1,2,"门已打开"); 
    IDs1=PageID/100;
    IDs2=PageID/10%10;
    IDs3=PageID%10;
    PutStr(2,1,"编号为:");
    WriteCommand(0x8D);    //指定第三行显示位置
    WriteData(0x30+IDs1);
    WriteData(0x30+IDs2);
    WriteData(0x30+IDs3);
    jidianqi=0;
    delay(2500); 
    jidianqi=1;  
  }
     else if(querenma==9)
     {
      LcmClearTXT();
      PutStr(1,1,"没搜索到指纹");
      PutStr(2,1,"请重新按手指");
    }
       else 
    {
      LcmClearTXT();
      PutStr(1,1,"接收包出错");
    }
    delay(2000);
   //   while(Keycan()==0);
}

3.删除指纹

管理员如果需要删除系统中录入的指定指纹信息,需要写入删除所要删除指纹的ID号,然后发送删除指纹指令即可删除相应的指纹。

(1)删除指纹指令

(2)删除指纹程序

void deletfinger()
{
  uchar i,j=0;
  LcmClearTXT();
  PutStr(1,0,"输入删去的指纹号");
  for(i=0;i<5;i++)dz[i]=0;  
     Key=Keycan();
     while(Key!=queren)      //按键录入用户需要删除的指纹号
     {
       Key=Keycan();
       KeyDeal(Key);
       delay(30);                                      //按键有抖动@@@
       if(Key==0)K=10;
       if((K>=0)&&(K<=9))
       {
        dz[j]=K;
      if(j<3)
      {  
        WriteCommand(0x88+j);    //指定第三行显示位置
        WriteData(0x30+dz[j]);  
      }
        ++j;
      if(j==4)
        j=3;                           //@@#yinhuang
       }   //显示LCD12864并行显示 
     if(K==34)    //按了删除键
      {
        if(j==0)
      {
        WriteCommand(0x88);    //指定第三行显示位置
        WriteData(0x20);
      }
      else
      {
        --j;
        WriteCommand(0x88+j);      //指定第三行显示位置
        WriteData(0x20);
      }
    }
  }
  if(j>=2)
  PageID=dz[2]+dz[1]*10+dz[0]*100;
  if(j==1)
  PageID=dz[1]+dz[0]*10;
  if(j==0)
  PageID=dz[0];
  SFG_deletchar(PageID);
  if(querenma==0)
  {
    LcmClearTXT();
    PutStr(1,1,"删去指纹号成功!"); 
  }
  else
  {
    LcmClearTXT();
    PutStr(1,0,"删去指纹号失败!");  
  }
  PutStr(2,0,"  按任意键继续"); 
  while(Keycan()==0);
  LcmClearTXT();
}

只要实现以上几个指令,就可以实现一个指纹密码锁的基本功能了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 原理图
    +关注

    关注

    1268

    文章

    6180

    浏览量

    225675
  • 单片机
    +关注

    关注

    6001

    文章

    43973

    浏览量

    620834
  • 接口
    +关注

    关注

    33

    文章

    7639

    浏览量

    148485
  • usb
    usb
    +关注

    关注

    59

    文章

    7432

    浏览量

    258161
  • 指纹识别模块

    关注

    0

    文章

    6

    浏览量

    1188
收藏 人收藏

    评论

    相关推荐

    AS608指纹识别模块

    请问AS608指纹识别模块,在断电之后还保持着之前录入的指纹吗?下次通电是不是不需要再次录入指纹
    发表于 04-13 17:01

    AS608模块通过USB转串口线与电脑通讯出现以下错误提示是怎么回事?

    看了《ATK-AS608指纹识别模块用户手册 》中关于上位机测试有关说明:***************以下为原文****************2.5 上位机测试2.5.1 串口模式第
    发表于 09-27 00:33

    请问有As608指纹模块基于51单片机的驱动程序代码吗?

    求各位大神分享As608指纹模块基于51单片机或者stm32战舰f1的驱动程序代码。谢谢您了
    发表于 03-06 04:35

    AS608指纹考勤系统上位机工作统计

    `1、特性参数ATK-AS608 指纹识别模块是 ALIENTEK 推出的款高性能的光学指纹识别模块
    发表于 03-06 12:21

    怎样去开发AS608指纹模块

    AS608指纹模块于51单片机的二次开发前言提要、初识AS608:二、设计1.思路2.上原理图:3.程序设计中需要注意的几个点:串口:总结
    发表于 07-13 07:32

    指纹识别方案

    简单了解下指纹识别吧。1、51单片机AS608指纹识别解决方案本设计是基于STC89C52单片机的指纹识别设计,采用AS608
    发表于 07-21 09:08

    基于STC89C52单片机的指纹识别设计资料分享

    本设计是基于STC89C52单片机的指纹识别设计,采用AS608指纹模块做为传感器,LCD1602显示屏显示信息。具有指纹添加,
    发表于 11-10 06:51

    指纹识别系统是由哪些电路组成的

    指纹识别系统一、电路设计此电路由最小系统板、LCD1602液晶模块AS608指纹模块组成。二、运行效果三、主代码#include "sys
    发表于 11-25 06:31

    ATK-AS608指纹识别模块的相关资料推荐

    指纹识别模块ATK-AS608 指纹识别模块是 ALIENTEK 推出的款高性能的光学
    发表于 01-26 06:50

    怎样去设计种基于stm32VE的AS608指纹解锁模块

    基于stm32VE的AS608指纹解锁模块是怎样工作的?怎样去设计种基于stm32VE的AS608指纹
    发表于 02-14 07:58

    如何去实现基于AS608指纹+STM32串口通信的指纹录入设计呢

    AS608指纹识别模块是什么?如何去实现基于AS608指纹+STM32串口通信的指纹录入设计呢?
    发表于 02-18 06:37

    请问怎样将as608指纹采集模块指纹图像传到电脑里面?

    请问怎样将as608指纹采集模块指纹图像传到电脑里面?
    发表于 06-05 15:08

    AS608指纹识别模块简介

    AS608 指纹识别模块主要是指采用了杭州晟元芯片技术有限公司(Synochip)的 AS608 指纹识别芯片 而做成的
    的头像 发表于 06-21 15:08 1767次阅读
    <b class='flag-5'>AS608</b><b class='flag-5'>指纹识别</b><b class='flag-5'>模块</b>简介

    AS608指纹模块使用说明

    AS608是一款集成了指纹图像采集和指纹比对算法的指纹识别模块。它采用了高质量的光学传感器,能够实时采集人体
    的头像 发表于 08-24 12:21 1871次阅读
    <b class='flag-5'>AS608</b><b class='flag-5'>指纹</b><b class='flag-5'>模块</b>使用说明

    基于CW32的AS608指纹模块的应用

    AS608是一款集成了指纹图像采集和指纹比对算法的指纹识别模块
    的头像 发表于 08-28 11:30 945次阅读
    基于CW32的<b class='flag-5'>AS608</b><b class='flag-5'>指纹</b><b class='flag-5'>模块</b>的应用