指紋識(shí)別模塊單片機(jī)程序(共14頁(yè))_第1頁(yè)
指紋識(shí)別模塊單片機(jī)程序(共14頁(yè))_第2頁(yè)
指紋識(shí)別模塊單片機(jī)程序(共14頁(yè))_第3頁(yè)
指紋識(shí)別模塊單片機(jī)程序(共14頁(yè))_第4頁(yè)
指紋識(shí)別模塊單片機(jī)程序(共14頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩9頁(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、精選優(yōu)質(zhì)文檔-傾情為你奉上#include #include #define TRUE 1unsigned char SaveNumber=0,searchnum=0;unsigned int SearchNumber=0;unsigned int clk0=0;sbit relay =P14; /繼電器引腳sbit buzzer=P15; /蜂鳴器引腳sbit red= P27;/錄入模式指示燈 在板子靠近單片機(jī)處sbit green= P20;/識(shí)別模式指示燈 在板子遠(yuǎn)離單片機(jī)處sbit k1=P33; /模式識(shí)別sbit k2=P34; /錄入一次指紋sbit k3=P32; /清除所有

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

3、d :驗(yàn)證設(shè)備握手口令unsigned char code VPWD16=16,0X01 ,0Xff,0xff,0xff,0xff, 0x01,0,7,0x13,0x00,0x00,0x00,0x00,0x00,0x1b; /回送12個(gè)/設(shè)置設(shè)備握手口令unsigned char code STWD16=16,0X01 ,0Xff,0xff,0xff,0xff, 0x01,0,7,0x12,0x00,0x00,0x00,0x00,0x00,0x1a; /回送12個(gè)/GetImage :探測(cè)手指并從傳感器上讀入圖像unsigned char code GIMG14=12, 0X01 ,0Xff,

4、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,0xff,0xff,0xff,0x01,0,4,2,2,0x00,0x09; /回送12個(gè)/Search Finger :以CharBufferA或

5、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 code MERG14=12, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,3,5 , 0x00,0x09;/回送12個(gè)/Store Templet :

6、將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,0x19, 0, 0x00,0x1e;/Clear Noteunsigned char code DENT46=45,0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,36

7、,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 templet ;清空指紋庫(kù)unsigned char code DELE_all12=12,0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,3, 0x0d,0x00

8、,0x11;/常用指令定義-結(jié)束/宏定義/#define FALSE 0#define TURE 1/狀態(tài)定義表#define on 1#define off 0#define MAX_NUMBER 63 #define _Nop() _nop_()/宏定義-結(jié)束/unsigned char FifoNumber=0; unsigned char FIFOMAX_NUMBER+1=0;/*1毫秒延時(shí)程序*/void delay1ms(unsigned int t)unsigned int i,j;for(i=0;it;i+) for(j=0;j=6)checksum=FIFOcount+che

9、cksum; /計(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 - FIFOcount;if(checksum != (FIFOcount&0xff) result=FALSE; /校驗(yàn)失敗,置結(jié)果標(biāo)志為0else result=TURE;flag=0;break; /do的內(nèi)容-結(jié)束/ while (clk0 = MaxTime) & (count =2)/如果不成功,再驗(yàn)證一次,如果兩次不成功,返回失敗 r

10、eturn(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(BUFID=1) if(Command(GENT1,60) & (FifoNumber=11) & (FIFO9=0x00) return 1; else retur

11、n 0; else if(BUFID=2) if(Command(GENT2,60) & (FifoNumber=11) & (FIFO9=0x00) return 1; else return 0; else return 0; return 0; bit Searchfinger(void)/搜索指紋(發(fā)送搜索命令、以及根據(jù)返回值確定是否存在) if(Command(SEAT,60) & (FifoNumber=15) & (FIFO9=0x00) ) SearchNumber=FIFO10*0x100+FIFO11;/搜索到的頁(yè)碼/MatchScore=FIFO12*0x100+FIFO

12、13 可以在此計(jì)算得分,從而進(jìn)行安全級(jí)別設(shè)定,本程序忽略 return 1; else return 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 SearchNumber; else return 255;/表示搜索到的指紋不正確 i+; return 0;bit savefing

13、ure(unsigned char ID)/保存指紋 unsigned char i=0; /現(xiàn)在開(kāi)始進(jìn)行存儲(chǔ)指紋模板的操作 for (i=0;i=40)/如果采集了40次,還不成功,直接采集失敗,直接退出enroll函數(shù)返回0 return(0); delay1ms(2000);/延時(shí)2S開(kāi)始采集下一個(gè)特征/開(kāi)始采集第二個(gè)特征 while(1) temp=ImgProcess(2); /生成特征2 if (temp=1)/生成特征文件2成功 if ( (Command(MERG,40)& (FifoNumber=11) & (FIFO9=0x00)=1 ) /合并成功返回1 buzzer=0

14、; delay1ms(100); buzzer=1; delay1ms(100); buzzer=0; delay1ms(100);/響兩聲,表示生成一個(gè)模板成功 buzzer=1; return(1);else return(0); else if (temp=1)/采集指紋沒(méi)有成功 count+;if (count=25) return(0); void main(void)/主函數(shù)unsigned char i=0;ET0=1; /定時(shí)器0開(kāi)中斷TL0=0x97; /17ms的初值TH0=0xBD; /串口初始化 SCON=0x50; /UART方式1:8位UART; REN=1:允許接

15、收 PCON=0x00; /SMOD=0:波特率不加倍 TMOD=0x21; /T1方式2,用于UART波特率 TH1=0xFD; TL1=0xFD; /UART波特率設(shè)置:9600 TR1=1; TR0=1;/ 開(kāi)定時(shí)器0IT0=0;/中斷0低電平中斷IT1=1;/中斷1低電平中斷EX0=1;/開(kāi)中斷0EX1=1;/開(kāi)中斷1 EA=1;SMG_g = 0;P0 = tab0;/顯示0for(i=0;i6;i+)/開(kāi)始握手6次,如果沒(méi)有一次成功,表示模塊通信不正常。只要成功就跳出此循環(huán)if(VefPSW()=1)/與模塊握手通過(guò),綠燈亮起。進(jìn)入識(shí)別模式 green=0;buzzer=0; de

16、lay1ms(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個(gè)指紋模板成功 if(savefingure(SaveNumber+1)=1)/保存也成功 SaveNumber+;/加一次P0=tabSaveNumber;delay1ms(200);P0

17、=0xFF;/來(lái)一次顯示,閃爍一次delay1ms(200);P0=tabSaveNumber; elsebuzzer=0; for(i=0;i=1&searchnum=162)/只能存入162個(gè)指紋 P0=tabsearchnum;/顯示搜索到的指紋模塊 /蜂鳴器響一聲 /繼電器打開(kāi)約3秒鐘 relay=0; buzzer=0; delay1ms(100); buzzer=1; delay1ms(3000); relay=1; if(searchnum=255)/不正確的指紋 蜂鳴器響三聲 P0=tab0;/顯示0 buzzer=0;delay1ms(100); buzzer=1;delay

18、1ms(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=tab0;/表示沒(méi)有指紋錄入buzzer=0;delay1ms(800);buzzer=1;SaveNumber=0;if(changeflag=1) changeflag=0;if(modeflag=0) /識(shí)別模式 green=0;red=1;P0=tab0;/顯示當(dāng)前有幾個(gè) 指紋 else /錄入模式 red=0;green=1;P0=tab0;/顯示0 /while(1)結(jié)束/void Timer0(void) interrupt 1/定時(shí)器0中斷函數(shù) TL0=0x97;TH0=0xBD;clk0+; /延時(shí)17msvoid int0(void) interrupt 0/中

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論