一. 簡(jiǎn)介
AS608 指紋識(shí)別模塊主要是指采用了杭州晟元芯片技術(shù)有限公司(Synochip)的 AS608 指紋識(shí)別芯片 而做成的指紋模塊,模塊廠商只是基于該芯片設(shè)計(jì)外圍電路,集成一個(gè)可供2次開(kāi)發(fā)的指紋模塊; 所以,只要是基于AS608芯片的指紋模塊,其控制電路及控制協(xié)議幾乎是一樣的,只是廠家和性能不同而已。
二. 硬件原理圖介紹
1.硬件接口
AS608模塊采用8pin的控制接口,供電電壓為3.3V(不能使用5V供電),通信總線有兩種,分別為串口通訊(TX、RX)和USB通訊(D+、D-); 采用串口通訊,編程相對(duì)簡(jiǎn)單,也是比較常用的一種,但是兼容性不好; 采用USB通訊,編程相對(duì)較難,但USB作為最常用的總線接口,有很好的兼容性。
2.控制電路圖
以51單片機(jī)為例,AS608模塊touch引腳接到單片機(jī)的普通IO上,當(dāng)有指紋按下,該引腳觸發(fā)一個(gè)高電平信號(hào); TX、RX引腳分別接到單片機(jī)的P30、P31串口引腳上。
注:AS608只能用+3.3V供電,不可用+5V供電。
三. 通訊協(xié)議格式
單片機(jī)要實(shí)現(xiàn)對(duì)AS608指紋模塊的控制,就需要根據(jù)AS608芯片規(guī)定的通訊協(xié)議格式來(lái)發(fā)送和處理串口數(shù)據(jù),整個(gè)模塊各個(gè)功能的實(shí)現(xiàn)也是圍繞該協(xié)議格式進(jìn)行的。
控制指令有三類(lèi),指令包、數(shù)據(jù)包、結(jié)束包; 一般指令包是由單片機(jī)發(fā)送到模塊上,模塊接收到指令包后,返回對(duì)應(yīng)的數(shù)據(jù)包;
- 指令包主要包括:包頭、芯片地址、包標(biāo)識(shí)、包長(zhǎng)度、控制參數(shù)和校驗(yàn)和;
- 數(shù)據(jù)包主要包括:包頭、芯片地址、包標(biāo)識(shí)、包長(zhǎng)度、數(shù)據(jù)和校驗(yàn)和 ;
- 數(shù)據(jù)包與結(jié)束包的區(qū)別在于包標(biāo)識(shí),02H:數(shù)據(jù)包,且有后續(xù)包。 08H:最后一個(gè)數(shù)據(jù)包,即結(jié)束包。
四. 控制程序
以指紋密碼鎖為例,
1.常用控制指令
一般要實(shí)現(xiàn)一個(gè)指紋密碼鎖的功能,只需用到以下指令:
錄入圖像、生成特征、搜索指紋、自動(dòng)驗(yàn)證指紋、自動(dòng)注冊(cè)模板、刪除指紋。
2.錄入指紋
首先要是實(shí)現(xiàn)開(kāi)鎖,需要在系統(tǒng)里面錄入指紋信息,需要:
錄入圖像->生成特征->快速查找圖像->自動(dòng)注冊(cè)模板
(1)錄入圖像指令
(2)生成特征指令
存入指紋圖像,存入單片機(jī)給定的緩沖區(qū)號(hào)BufferID中;
(3)快速查找圖像
生成圖像后要驗(yàn)證是否有在Buffer里面;
(4)自動(dòng)注冊(cè)模板
最后將Buffer里面的圖像存入Flash里面
(5)錄入指紋程序
void addfinger() //錄入指紋
{
uchar IDa1,IDa2,IDa3; //指紋圖像存放地址
LcmClearTXT();
PutStr(1,2,"請(qǐng)按手指");
SFG_getimage();
while(querenma!=0) //指令接收不成功,重新發(fā)送
SFG_getimage();
SFG_genchar(buffer1ID);
while(querenma!=0) //指令接收不成功,重新發(fā)送
SFG_genchar(buffer1ID);
UART_Init();
SFG_fastsearch(buffer1ID);
while(querenma==1) //指令接收不成功,重新發(fā)送
SFG_fastsearch(buffer1ID);
SBUF = querenma;
while(TI==0);
TI=0;
if(querenma==0)
{
LcmClearTXT();
PutStr(1,1,"該指紋已存儲(chǔ)");
PutStr(3,0," 按任意鍵繼續(xù)");
while(Keycan()==0);
}
else if(querenma==9)
{
LcmClearTXT();
PutStr(1,1,"請(qǐng)?jiān)俅伟词种?);
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,"編號(hào)為:");
WriteCommand(0x8D);
WriteData(0x30+IDa1);WriteData(0x30+IDa2);WriteData(0x30+IDa3);
}
else if(querenma!=0)
{
PutStr(1,1,"指紋采集失敗");
PutStr(2,1,"請(qǐng)重新操作");
}
PutStr(3,0," 按任意鍵繼續(xù)");
while(Keycan()==0);
}
LcmClearTXT();
}
2.自動(dòng)驗(yàn)證指紋
錄入指紋后,就可以匹配本人的指紋實(shí)現(xiàn)開(kāi)鎖,只需要發(fā)送自動(dòng)驗(yàn)證指紋指令,返回的確認(rèn)碼為0x00,即為匹配成功,不為0x00即匹配失敗;
(1)錄入指紋指令
(2)自動(dòng)驗(yàn)證指紋程序
void shuazhiwen() //驗(yàn)證用戶(hù)的指紋
{
uchar IDs1,IDs2,IDs3;
LcmClearTXT();
PutStr(1,1,"請(qǐng)按手指開(kāi)鎖");
SFG_identify();
while(querenma==2)
SFG_identify();
if(querenma==0)
{
LcmClearTXT();
PutStr(1,2,"門(mén)已打開(kāi)");
IDs1=PageID/100;
IDs2=PageID/10%10;
IDs3=PageID%10;
PutStr(2,1,"編號(hào)為:");
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,"沒(méi)搜索到指紋");
PutStr(2,1,"請(qǐng)重新按手指");
}
else
{
LcmClearTXT();
PutStr(1,1,"接收包出錯(cuò)");
}
delay(2000);
// while(Keycan()==0);
}
3.刪除指紋
管理員如果需要?jiǎng)h除系統(tǒng)中錄入的指定指紋信息,需要寫(xiě)入刪除所要?jiǎng)h除指紋的ID號(hào),然后發(fā)送刪除指紋指令即可刪除相應(yīng)的指紋。
(1)刪除指紋指令
(2)刪除指紋程序
void deletfinger()
{
uchar i,j=0;
LcmClearTXT();
PutStr(1,0,"輸入刪去的指紋號(hào)");
for(i=0;i<5;i++)dz[i]=0;
Key=Keycan();
while(Key!=queren) //按鍵錄入用戶(hù)需要?jiǎng)h除的指紋號(hào)
{
Key=Keycan();
KeyDeal(Key);
delay(30); //按鍵有抖動(dòng)@@@
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,"刪去指紋號(hào)成功!");
}
else
{
LcmClearTXT();
PutStr(1,0,"刪去指紋號(hào)失敗!");
}
PutStr(2,0," 按任意鍵繼續(xù)");
while(Keycan()==0);
LcmClearTXT();
}
只要實(shí)現(xiàn)以上幾個(gè)指令,就可以實(shí)現(xiàn)一個(gè)指紋密碼鎖的基本功能了。
-
原理圖
+關(guān)注
關(guān)注
1321文章
6393瀏覽量
238519 -
單片機(jī)
+關(guān)注
關(guān)注
6061文章
44846瀏覽量
645457 -
接口
+關(guān)注
關(guān)注
33文章
8904瀏覽量
153068 -
usb
+關(guān)注
關(guān)注
60文章
8073瀏覽量
270103 -
指紋識(shí)別模塊
+關(guān)注
關(guān)注
0文章
6瀏覽量
1400
發(fā)布評(píng)論請(qǐng)先 登錄
AS608指紋識(shí)別模塊
AS608指紋考勤系統(tǒng)上位機(jī)工作統(tǒng)計(jì)
怎樣去開(kāi)發(fā)一種AS608指紋模塊
求一種指紋識(shí)別方案
基于STC89C52單片機(jī)的指紋識(shí)別設(shè)計(jì)資料分享
怎樣去設(shè)計(jì)一種基于stm32VE的AS608指紋解鎖模塊呢
如何去實(shí)現(xiàn)基于AS608指紋+STM32串口通信的指紋錄入設(shè)計(jì)呢
ATK-AS608指紋識(shí)別模塊用戶(hù)手冊(cè)資料免費(fèi)下載

ATK-AS608指紋識(shí)別模塊測(cè)試實(shí)驗(yàn)的程序和工程文件免費(fèi)下載
基于51單片機(jī)AS608指紋自動(dòng)識(shí)別電路設(shè)計(jì)(畢業(yè)設(shè)計(jì))

ATK-AS608 指紋識(shí)別模塊常見(jiàn)問(wèn)題和疑問(wèn)

評(píng)論