完整版指紋識(shí)別模塊單片機(jī)程序_第1頁(yè)
完整版指紋識(shí)別模塊單片機(jī)程序_第2頁(yè)
完整版指紋識(shí)別模塊單片機(jī)程序_第3頁(yè)
完整版指紋識(shí)別模塊單片機(jī)程序_第4頁(yè)
完整版指紋識(shí)別模塊單片機(jī)程序_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、#include #include #define TRUE 1unsigned char SaveNumber=0,searchnum=0; unsigned int SearchNumber=0;unsigned int clk0=0;sbit relay =P1A4; / 繼電器引腳sbit buzzer=P1A5; II 蜂鳴器引腳sbit red=卩2人7;錄入模式指示燈在板子靠近單片機(jī)處sbit gree n=卩2人0;識(shí)別模式指示燈在板子遠(yuǎn)離單片機(jī)處sbit k仁卩3人3; II模式識(shí)別sbit k2=P3A4; II 錄入一次指紋sbit k3=P3A2; II清除所有指紋(1

2、0個(gè)指紋清除)變量定義:unsigned char code tab10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;II 表:共陽(yáng)數(shù) 碼管 0-9數(shù)碼管引腳定義:sbit SMG_g = P3;II定義數(shù)碼管陽(yáng)級(jí)控制腳(個(gè)位)II由于程序中定時(shí)器被用我們用一位數(shù)碼管顯示且為靜太顯示所以推薦大家用1602或者12864 液晶bit changeflag=0,modeflag=0,clearallflag=0;II默認(rèn)為識(shí)別模式,如果為每錄入一次 SaveNumber+1 為錄入指紋模式 ,IIIIIIIIIIIIIIIIIIIIIIIII

3、IIIIIIIIIIIII 常用指令定義 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIVerify Password :驗(yàn)證設(shè)備握手口令unsignedcharcodeVPWD16=16,0X010x01,0,7,0x13,0x00,0x00,0x00,0x00,0x00,0x1b;II 回送 12 個(gè),0Xff,0xff,0xff,0xff,II設(shè)置設(shè)備握手口令unsignedcharcodeSTWD16=16,0X010x01,0,7,0x12,0x00,0x00,0x00,0x00,0x00,0x1a; II回送 12 個(gè)code,0Xff,0xff,0xff,0xff

4、,/GetImage :探測(cè)手指并從傳感器上讀入圖像unsigned char code GIMG14=12, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,3,1,0x00,0x05;/ 回 送12 個(gè)/Gen Templet1:根據(jù)原始圖像生成指紋特征 1unsigned char code GENT114=13,0X01 ,0Xff,0xff,0xff,0xff,0x01,0,4,2,1,0x00,0x08;/ 回 送12 個(gè)/Gen Templet2:根據(jù)原始圖像生成指紋特征 2unsigned char code GENT214=13,0X01 ,0Xff,0

5、xff,0xff,0xff,0x01,0,4,2,2,0x00,0x09;/回送12 個(gè)/Search Finger :以 CharBufferA 或 CharBufferB 中的特征文件搜索整個(gè)或部分指紋庫(kù) unsigned char code SEAT18=17, 0X01 ,0Xff,0xff,0xff,0xff, 0x01,0,8, 4,1,0,0, 0,0x65,0x00,0x73; / 回送 16 個(gè)/Merge Templet; 將 CharBufferA 與 CharBufferB 中的特征文件合并生成模板,結(jié)果存于 ModelBuffer 。unsigned char cod

6、e MERG14=12,0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,3,5 , 0x00,0x09;/ 回送 12 個(gè)/Store Templet :將 ModelBuffer 中的文件儲(chǔ)存到 flash 指紋庫(kù)中unsigned char code STOR16=15, 0X01 ,0Xff,0xff,0xff,0xff, 0x01,0,6,6,2, 0x00,0x00,0x00,0x0f; / 回送 12 個(gè)/Read Noteunsigned char code RDNT14=13,0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,4,0x1

7、9,0, 0x00,0x1e;/Clear Noteunsigned char code DENT46=45,0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,36,0x18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x00,0x3d;/DEL one templetunsigned char code DELE_one16=16, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,7,0x0c,0x00,0x00,0,1, 0x00,0x15;/DEL temp

8、let;清空指紋庫(kù)unsigned char code DELE_all12=12,0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,3,0x0d,0x00,0x11;/ 宏定義 /#define FALSE 0#define TURE 1/狀態(tài)定義表#define on 1#define off 0#define MAX_NUMBER 63#define _Nop() _nop_()*1/ 宏定義 結(jié)束 /unsigned charFifoNumber=0;unsigned charFIFOMAX_NUMBER+1=0;毫秒延時(shí)程序 */void delay1ms(uns

9、igned int t) unsigned int i,j;for(i=0;it;i+) for(j=0;j=6) checksum=FIFOcount+checksum; / 計(jì)算校驗(yàn)和 if(count=8) package=FIFO7*0X100+FIFO8; / 計(jì) 算 包 長(zhǎng)stop= TURE; if(stop) if(count=package+8) checksum=checksum-FIFOcount-1 -if(checksum != (FIFOcount&0xff) result=FALSE; / 校驗(yàn)失敗 ,置結(jié)果標(biāo)志為0elseresult=TURE;flag=0;

10、break;/do 的內(nèi)容 結(jié)束 /while (clk0 = MaxTime) & (count =2)/ 如果不成功,再驗(yàn)證一次,如果兩次不成功,返回失敗return(0);void Clear_All(void) / 清空指紋庫(kù)delay1ms(200);Command(DELE_all,50); / 清空指紋庫(kù)unsigned char ImgProcess(unsigned char BUFID) / 發(fā)獲取圖像并生成特征文件, 存入 BUFID 中/輸入?yún)?shù)為緩沖區(qū)號(hào)if(Command(GIMG ,89) & (FifoNumber=11) & (FIFO9=0x00)if(BU

11、FID=1)if(Command(GENT1,60) & (FifoNumber=11) & (FIFO9=0x00)return 1;elsereturn 0;else if(BUFID=2)if(Command(GENT2,60) & (FifoNumber=11) & (FIFO9=0x00)return 1;elsereturn 0;elsereturn 0;return 0;bit Searchfinger(void)/ 搜索指紋 (發(fā)送搜索命令、以及根據(jù)返回值確定是否存在)if(Command(SEAT,60) & (FifoNumber=15) & (FIFO9=0x00) )S

12、earchNumber=FIFO10*0x100+FIFO11;/ 搜索到的頁(yè)碼 /MatchScore=FIFO12*0x100+FIFO13 可以在此計(jì)算得分, 從而進(jìn)行安全級(jí)別 設(shè)定,本程序忽略return 1;elsereturn 0;unsigned char search(void)/ 搜索指紋unsigned char SearchBuf=0,i=0;while (i20)if (ImgProcess(1)=1)/ 首先讀入一次指紋SearchBuf=Searchfinger();/ 進(jìn)行指紋比對(duì),如果搜索到,返回搜索到的指紋序 號(hào)if(SearchBuf=1)return Se

13、archNumber;elsereturn 255;/ 表示搜索到的指紋不正確i+;return 0;bit savefingure(unsigned char ID)/ 保存指紋unsigned char i=0;/現(xiàn)在開始進(jìn)行存儲(chǔ)指紋模板的操作for (i=0;i=40)/ 如果采集了 40 次,還不成功,直接采集失敗,直接退出 enroll 函數(shù)返回 0return(0);delay1ms(2000);/ 延時(shí) 2S 開始采集下一個(gè)特征/開始采集第二個(gè)特征while(1)temp=ImgProcess(2); / 生成特征 2if (temp=1)/ 生成特征文件 2 成功if ( (C

14、ommand(MERG ,40)& (FifoNumber=11) & (FIFO9=0x00)=1)/合并成功返回 1buzzer=0;delay1ms(100);buzzer=1;delay1ms(100);buzzer=0;delay1ms(100); /響兩聲,表示生成一個(gè)模板成功buzzer=1;return(1);elsereturn(0);elseif (temp=1)/ 采集指紋沒有成功count+;if (count=25)return(0);void main(void)/ 主函數(shù)unsigned char i=0;ET0=1;/ 定時(shí)器 0 開中斷TL0=0x97; /1

15、7ms 的初值 TH0=0xBD;/串口初始化SCON=0x50; /UART 方式 1:8 位 UART; REN=1: 允許接收PCON=0x00; /SMOD=0: 波特率不加倍TMOD=0x21; /T1 方式 2,用于 UART 波特率TH1=0xFD;TL1=0xFD; /UART 波特率設(shè)置 :9600TR1=1;TR0=1;/ 開定時(shí)器 0IT0=0;/ 中斷 0 低電平中斷IT1=1;/ 中斷 1 低電平中斷EX0=1;/ 開中斷 0EX1=1;/ 開中斷 1EA=1;SMG_g = 0;P0 = tab0;/ 顯示 0for(i=0;i6;i+)/ 開始握手 6 次, 如果

16、沒有一次成功, 表示模塊通信不正常。 只要成功就 跳出此循環(huán)if(VefPSW()=1)/ 與模塊握手通過(guò),綠燈亮起。進(jìn)入識(shí)別模式green=0; buzzer=0;delay1ms(300); buzzer=1;green=1;red=0;break; / 成功就退出這個(gè)循環(huán)while(1)if(k2=0)/ 錄入一個(gè)指紋 delay1ms(10); if(k2=0)/ 如果仍為低電平,表示按鍵有效while(k2=0);/ 等待松手 if(VefPSW()=1&modeflag=1&SaveNumber10)/ 與 模 塊 握 手 通過(guò) if(enroll()=1)/ 采集兩次,生成 1

17、個(gè)指紋模板成功 if(savefingure(SaveNumber+1)=1)/ 保存也成功SaveNumber+;/ 加一次 P0=tabSaveNumber;delay1ms(200);PO=OxFF;來(lái)一次顯示,閃爍一次delay1ms(200);P0=tabSaveNumber;elsebuzzer=0; for(i=0;i=1&searchnum=162)/ 只能存入 162 個(gè)指紋PO=tabsearch nu m;顯示搜索到的指紋模塊/蜂鳴器響一聲/繼電器打開約 3 秒鐘relay=O;buzzer=0;delay1ms(100);buzzer=1;delay1ms(3000);

18、relay=1;if(searchnum=255)/ 不正確的指紋 蜂鳴器響三聲P0=tab0;/ 顯示 0buzzer=0;delay1ms(100); buzzer=1;delay1ms(100);buzzer=0;delay1ms(100); buzzer=1;delay1ms(100);buzzer=0;delay1ms(100); buzzer=1;delay1ms(100); if(modeflag=1)/ 錄入模式green=1;red=0;if(clearallflag=1)clearallflag=0;Clear_All();red=0;/紅色燈亮green=1;/蜂鳴器長(zhǎng)響一次,表示清除所有指紋結(jié)束modeflag=1;/ 進(jìn)入錄入指紋模式P0=tab

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論