基于單片機(jī)指識(shí)別系統(tǒng)設(shè)計(jì)_第1頁(yè)
基于單片機(jī)指識(shí)別系統(tǒng)設(shè)計(jì)_第2頁(yè)
基于單片機(jī)指識(shí)別系統(tǒng)設(shè)計(jì)_第3頁(yè)
基于單片機(jī)指識(shí)別系統(tǒng)設(shè)計(jì)_第4頁(yè)
基于單片機(jī)指識(shí)別系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩25頁(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、任務(wù)書(shū)課程設(shè)計(jì)題目:指紋識(shí)別功能簡(jiǎn)述:1)根據(jù)所學(xué)的知識(shí)和能力,設(shè)計(jì)程序可以實(shí)現(xiàn)根據(jù)指紋的大小、 形狀等特征,識(shí)別出不同的指紋。2)利用按鍵標(biāo)志當(dāng)前指紋識(shí)別的狀態(tài),例如錄入狀態(tài),識(shí)別狀態(tài) 清楚狀態(tài);利用液晶1602能夠顯示當(dāng)前指紋識(shí)別的狀態(tài)信息。3)利用繼電器,對(duì)當(dāng)前信息的判斷,例如提醒當(dāng)前指紋識(shí)別錯(cuò)誤 利用蜂鳴器和LED等提醒當(dāng)前指紋識(shí)別是否正確目錄第一章緒論1.1、 指紋識(shí)別中的基本概念 1.2、 紋識(shí)別的發(fā)展前景1.3、 指紋識(shí)別課題設(shè)計(jì)的內(nèi)容與意義 第二章方案選擇2.1 系統(tǒng)原理圖設(shè)計(jì)2.2 方案說(shuō)明2.3 方案比較2.4 方案選擇第三章硬件設(shè)計(jì)3. 1 AT89C5彈片機(jī)設(shè)計(jì)3.2

2、電源電路設(shè)計(jì)3.3 按鍵控制部分電路3.4 LED指示燈電路3.5 蜂鳴器電路3.6 指紋傳感器模塊第四章 軟件程序設(shè)計(jì) 4.1 程序流程圖4.2 程序第五章 調(diào)試5.1硬件調(diào)試隨著時(shí)代的發(fā)展,社會(huì)越來(lái)越需要高效、可靠的身份識(shí)別系統(tǒng)傳統(tǒng)的 個(gè)人身份鑒別手段如鑰匙、口令、密碼、身份證件,甚至 IC卡等識(shí) 別方式,由于它們具有可假冒、可偽造、可盜用、可破譯的弱點(diǎn),已 不能完全滿足現(xiàn)代社會(huì)經(jīng)濟(jì)活動(dòng)和社會(huì)安全防范的需要。隨著識(shí)別技術(shù)的不斷成熟和計(jì)算機(jī)技術(shù)的飛速發(fā)展,各種基于人體生理特征的身 份識(shí)別系統(tǒng)如:指紋、手掌、聲音、視網(wǎng)膜、瞳孔和面紋等識(shí)別技術(shù) 紛紛從實(shí)驗(yàn)室中走出來(lái)。目前,從實(shí)用的角度看,指紋識(shí)

3、別技術(shù)是優(yōu) 于其它生物識(shí)別技術(shù)的身份鑒別方法。本次設(shè)計(jì)我們利用指紋識(shí)別傳 感器進(jìn)行指紋采集與識(shí)別,在單片機(jī)中對(duì)指紋進(jìn)行處理,用按鍵標(biāo)志 當(dāng)前指紋識(shí)別的狀態(tài),錄入狀態(tài),識(shí)別狀態(tài),清除狀態(tài),用液晶1602能 夠顯示當(dāng)前指紋識(shí)別的狀態(tài)信息;用繼電器對(duì)當(dāng)前信息進(jìn)行判斷,例 如提醒當(dāng)前指紋識(shí)別錯(cuò)誤;利用蜂鳴器和LED等提醒當(dāng)前指紋識(shí)別是 否正確關(guān)鍵詞:指紋識(shí)別;單片機(jī);指紋識(shí)別傳感器;液晶1602;繼電器第一章緒論進(jìn)入21世紀(jì)后,由于國(guó)際反恐、互聯(lián)網(wǎng)應(yīng)用等因素的推動(dòng),在全球范圍內(nèi), 指紋識(shí)別技術(shù)得到了更加廣泛的應(yīng)用,指紋識(shí)別市場(chǎng)進(jìn)入高速發(fā)展階段。利用人 的生理特征,例如像指紋等來(lái)識(shí)別個(gè)人的身份,將成為今

4、后幾年IT產(chǎn)業(yè)的重要革新。指紋在所有的生物特征中,相對(duì)穩(wěn)定、不隨年齡而變化和采集較為便捷, 同時(shí)它的研究歷史最長(zhǎng)、相對(duì)更為成熟。與現(xiàn)有的智能卡、身份證號(hào)碼和密碼的 身份識(shí)別系統(tǒng)相比,指紋識(shí)別的性價(jià)比最高,也更適于應(yīng)用到大眾生活中。因此 指紋識(shí)別以其革命性的便捷和安全性成為一個(gè)理想的卓越的解決方案。1.1、 指紋識(shí)別中的基本概念指紋識(shí)別是成熟的生物識(shí)別(Biometric)技術(shù),由于人體的身體特征具有不可復(fù) 制的特點(diǎn),人們把目光轉(zhuǎn)向了生物識(shí)別技術(shù),希望可以籍此技術(shù)來(lái)應(yīng)付現(xiàn)行系統(tǒng) 安全所面臨的的挑戰(zhàn)。要把人體的特證用于身份識(shí)別,這些特征必須具有唯一性 和穩(wěn)定性。研究和經(jīng)驗(yàn)表明,人的指紋、掌紋、面孔

5、、發(fā)音、虹膜、視網(wǎng)膜、骨 架等都具有唯一性和穩(wěn)定性的特征,即每個(gè)人的這些特征都與別人不同、且終生 不變,因此就可以據(jù)此識(shí)別出人的身份?;谶@些特征,人們發(fā)展了指紋識(shí)別、 面部識(shí)別、發(fā)音識(shí)別等多種生物識(shí)別技術(shù),目前許多技術(shù)都已經(jīng)成熟并得以應(yīng)用, 其中的指紋識(shí)別技術(shù)更是生物識(shí)別技術(shù)的熱點(diǎn)。1.2、 紋識(shí)別的發(fā)展前景指紋行業(yè)是一個(gè)新興的行業(yè),本身具有很高的科技含量,相對(duì)利潤(rùn)高發(fā)展前景廣 闊。經(jīng)專家預(yù)計(jì),指紋產(chǎn)品將是未來(lái)IT產(chǎn)業(yè)新的增長(zhǎng)點(diǎn):利潤(rùn)率最高、發(fā)展?jié)?力最大。于是,世界頂尖的指紋識(shí)別技術(shù)得到了全球范圍內(nèi)的高度重視,指紋識(shí)別技術(shù)的應(yīng)用如火如荼地迅速發(fā)展起來(lái)。目前,國(guó)內(nèi)已經(jīng)有不少企業(yè)在參與指紋識(shí)別

6、技術(shù)的開(kāi)發(fā)和應(yīng)用。指紋技術(shù)在現(xiàn)代生活和工作中的應(yīng)用已越來(lái)越普遍,例如:指紋考勤、指紋社保、指紋銀行、指紋商場(chǎng)、指紋接送幼兒等等生活和工作 的新現(xiàn)象已廣為人知,指紋技術(shù)正在日益刷新著我們的現(xiàn)代化生活方式。1.3、 指紋識(shí)別課題設(shè)計(jì)的內(nèi)容與意義指紋識(shí)別技術(shù)相對(duì)于其他識(shí)別方法有許多獨(dú)到之處,具有很高的實(shí)用性和可行 性。因此,指紋識(shí)別成為最流行、最方便、最可靠的身份認(rèn)證方式,己經(jīng)在社會(huì) 生活的諸多方面得到廣泛應(yīng)用。這是由于指紋是獨(dú)一無(wú)二的,兩人之間不存在著 相同的指紋,指紋是獨(dú)一無(wú)二的,兩人之間不存在著相同的指紋,同時(shí)指紋樣本 易于采集,難以偽造,便于開(kāi)發(fā),實(shí)用性強(qiáng),可以利用多個(gè)指紋構(gòu)成多重口令, 提

7、高系統(tǒng)的安全性。本文主要通過(guò)對(duì)MCS-51系列單片機(jī)的結(jié)構(gòu)和功能進(jìn)行分析,來(lái)研究基于單片機(jī) 指紋識(shí)別系統(tǒng)的內(nèi)部結(jié)構(gòu)特點(diǎn)和功能闡述以及工作原理,更好的了解了指紋識(shí)別系統(tǒng)的未來(lái)前景。第二章方案選擇2.1系統(tǒng)原理圖設(shè)計(jì)2.2方案說(shuō)明2.1.1 方案一:攝像頭采集、飛思卡爾單片機(jī)處理這種方案由指紋圖像采集、指紋圖像預(yù)處理、指紋特征提取、指紋特征匹配、特征數(shù)據(jù)庫(kù)等幾部分組成。指紋識(shí)別系統(tǒng)的原理框圖如圖1所示。圖2-1、指紋識(shí)別系統(tǒng)框圖該系統(tǒng)首先由數(shù)字?jǐn)z像頭ov6620采集指紋,并將指紋圖像轉(zhuǎn)化為數(shù)字圖像; 然后用16位的飛思卡爾X128單片機(jī)對(duì)指紋數(shù)字圖像進(jìn)行預(yù)處理,再通過(guò)圖像增 強(qiáng)、分割、平滑、細(xì)化等

8、處理過(guò)程得到便于指紋特征提取的數(shù)字圖像:接著提取 細(xì)化后的圖像細(xì)節(jié)特征點(diǎn);然后將指紋信息數(shù)據(jù)送入STC89C52單片機(jī)中,一塊 液晶1602與STC89C52單片機(jī)相連,液晶用于顯示當(dāng)前指紋采集系統(tǒng)的工作狀 態(tài)和經(jīng)對(duì)比后指紋采集的信息是否正確,用一個(gè)蜂鳴器和LED指示燈指示當(dāng)前采集的指紋信息正確。當(dāng)采集到的指紋信息正確,蜂鳴器發(fā)出響聲并且LED指示燈點(diǎn)亮。2.1.2 方案二 指紋識(shí)別傳感器代替第一種方案中的攝像頭和飛思卡爾單片機(jī),我們利用一個(gè)指紋識(shí)別傳感器來(lái)對(duì)指紋進(jìn)行采集,識(shí)別以及部分處理,然后將信息輸送到AT89C5彈片機(jī)中,利用按鍵控制當(dāng)前指紋識(shí)別的狀態(tài),用 LED燈進(jìn)行顯示,即錄入狀態(tài),

9、識(shí)別狀 態(tài)清除狀態(tài);利用液晶1602能夠顯示當(dāng)前指紋識(shí)別的狀態(tài)信息,即錄入指紋的編 號(hào)以及當(dāng)前指紋;利用繼電器,對(duì)當(dāng)前信息的判斷,例如提醒當(dāng)前指紋識(shí)別錯(cuò)誤 利用蜂鳴器提醒當(dāng)前指紋識(shí)別是否正確,如果指紋錄入正確,蜂鳴器發(fā)出響聲。1.3 方案比較1)復(fù)雜性:方案一采取用數(shù)字?jǐn)z像頭 ov6620采集指紋圖像,然后用16位 的飛思卡爾X128單片機(jī)進(jìn)行圖像處理,還要進(jìn)行圖像增強(qiáng)、分割、平滑、細(xì)化 等處理過(guò)程才能得到便于指紋特征提取的數(shù)字圖像;而這些過(guò)程在方案二中只用 一個(gè)指紋傳感器模塊就可以代替,所以方案二設(shè)計(jì)簡(jiǎn)單。2)準(zhǔn)確性:方案一中所采集的攝像頭分辨率有限,所以采集的指紋信息有一定的誤差,方案二中

10、指紋傳感器模塊是利用集成的光學(xué)頭進(jìn)行處理的,比較精確。3)局限性:由于方案一中使用的飛思卡爾單片機(jī)處理程序比較復(fù)雜,超出 了我們的學(xué)習(xí)范圍,而方案二傳感器就使程序簡(jiǎn)單化了。1.4 方案選擇鑒于各種原因,我們最終選擇第二種方案,使用指紋傳感器模塊來(lái)設(shè)計(jì)系統(tǒng)。第三章硬件設(shè)計(jì)3. 1 AT89C5彈片機(jī)設(shè)計(jì)3.1 .1 主要性能有12k字節(jié)Flash閃速存儲(chǔ)器,1024字節(jié)內(nèi)部RAM 32個(gè)I/O 口線,兩個(gè)16位定時(shí)/計(jì)數(shù)器,5個(gè)中斷向量,一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。3.2 .2引腳結(jié)構(gòu)圖(如圖3-1)U1XTAL2RSTPSENALE EAP1.0/T2P1.1/T2EXP1.2

11、P1.3P1.4P1.5P1.6P1.7P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INTTP3.4/T0P3.5/T1P3.6/WRP3.7/RD393633一32一21222324252627281 01 11 21 31 41 51 61 7圖3-1AT89C52管腳圖AT89C523.3 .3 一些端口的介紹:P30 口:

12、 RXD(串行輸入口)P31 口: TXD (用行輸出口)XTAL1:振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。XTAL2振蕩器反相放大器的輸出端。3.4 .4單片機(jī)最小系統(tǒng)1)外部晶振的設(shè)計(jì)STC89C52勺內(nèi)部有一個(gè)用于構(gòu)成振蕩器白高增益反相放大器,通過(guò) XTAL1 ATAL2外部接上一片作為反饋元件的晶體,與 C1和C2構(gòu)成了并聯(lián)諧振電路,使 其構(gòu)成自激振蕩器,電容的值具有微調(diào)的作用,我們?nèi)?30PF,具體的接法如圖 3-2外部晶振電路。C122pFC2X112M圖3-3復(fù)位電路22pF圖3-2外部晶振電路STC89C52勺工作頻率范圍在0-24MHZ。我們選用的是11.0592MHZ

13、的晶振, 振蕩周期約為1us機(jī)器周期約為0.1us,所以這個(gè)晶振可以滿足這個(gè)系統(tǒng)的要求。 并且晶振不能離單片機(jī)太遠(yuǎn),不然使用外部晶振進(jìn)行軟件調(diào)試時(shí)就會(huì)發(fā)現(xiàn)找不到 信號(hào)。2)復(fù)位電路的設(shè)計(jì)MCS51單片機(jī)通常采用上電自動(dòng)復(fù)位和按鈕復(fù)位兩種方式,本系統(tǒng)采用簡(jiǎn)單 的自動(dòng)復(fù)位電路如圖2-2所示。單片機(jī)在上電瞬間,RC電路充電,RST弓I腳端出 現(xiàn)正脈沖,只要RS礎(chǔ)保持兩個(gè)機(jī)器周期以上的高電平,就能使單片機(jī)有效復(fù)位。 其中電容選10uF、電容選10K。3.2電源電路設(shè)計(jì)本系統(tǒng)采用的5V電源主要采用兩種方法,第一是直接用 9V電池然后通過(guò)一 個(gè)變壓電路,利用7805將轉(zhuǎn)化成5V供單片機(jī)和液晶顯示部分使用;

14、其二是用 220V通過(guò)變壓器等將其轉(zhuǎn)化成5V。兩種方法都可以,但是由于第一種方法便于攜帶、而且成本相對(duì)較低所以我們選 用第一種方案。圖3-4電源電路3.5 按鍵控制部分電路1)消除抖動(dòng)按鍵的閉合與否反應(yīng)在電壓上就是呈現(xiàn)出高電平或低電平,如果高電平表示 斷開(kāi),那么低電平則表示閉合,通過(guò)電平的高低狀態(tài)的檢測(cè)可確認(rèn)鍵按下與否。 為了確保CPU寸一次按鍵動(dòng)作只確認(rèn)一次,并且防止干擾信號(hào)的影響,必需加入 消除電平抖動(dòng)的措施,下圖3-5為按鍵抖動(dòng)示意圖:熊耳礴版價(jià)網(wǎng),fM圖3-5按鍵閉合及斷開(kāi)前后的電壓消除抖動(dòng)通常有硬、軟硬兩種方法,硬件消除抖動(dòng)可采取雙穩(wěn)態(tài)電路或?yàn)V波消抖 電路;軟件消抖是在第一次檢測(cè)到有

15、鍵按下時(shí),執(zhí)行一段延時(shí)程序再確認(rèn)該鍵是 否仍閉合,如果還是閉合狀態(tài)則確認(rèn)該鍵按下, 從而消除抖動(dòng)和干擾影響。當(dāng)按 鍵較多時(shí),我們多采用硬件件消抖法。本系統(tǒng)中按鍵少直接采用直接接入的方式。 2)按鍵接口設(shè)計(jì)按鍵接口設(shè)計(jì)有兩種方法,獨(dú)立式按鍵和矩陣式鍵盤。獨(dú)立式按鍵各鍵相獨(dú) 立,每個(gè)按鍵各接入一根輸入線,只要檢測(cè)輸入線的電平就可以識(shí)別按鍵狀態(tài)。 這種方法電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單,但每個(gè)按鍵需占用一根輸入口。由于該設(shè)計(jì)方案IO資源浪費(fèi)大。故此方法只適用于按鍵少或其他控制功能很簡(jiǎn)單的場(chǎng) 合。由于本設(shè)計(jì)中的按鍵只有3個(gè),考慮系統(tǒng)可靠性和鍵盤設(shè)計(jì)的簡(jiǎn)單所以采用 獨(dú)立式按鍵。本系統(tǒng)的按鍵電路如圖 3-6所

16、示:圖3-6獨(dú)立按鍵電路按鍵按下是呈低電平,我們采用軟件消抖來(lái)減少對(duì)的單片機(jī)影響3.6 LED指示燈電路圖3-7 LED燈指示電路當(dāng)k2鍵按下時(shí),錄入模式指示燈red亮;當(dāng)k1鍵按下時(shí),識(shí)別模式指示燈green 亮。3.7 蜂鳴器電路蜂鳴器圖3-8蜂鳴器電路3.8 指紋傳感器模塊1)指紋模塊電路如下所示:vcc圖3-9指紋識(shí)別模塊指紋模塊里面主要是 DSP芯片,型號(hào)為PS1802加上外面的CMOS5片,CMOS 芯片主要是對(duì)指紋進(jìn)行“照相”,生成指紋特征,如圖3-8所示就是一個(gè)指紋模 板,錄入兩次這樣的指紋特征就能生成一個(gè)指紋模板。具體的工作過(guò)程是:掃描指紋(錄入圖像)、生成特征、合成模板(建

17、立一個(gè)指 紋庫(kù)文件,成功錄入一個(gè)指紋)。圖3-10指紋模板指紋模板就是“照一次相”,指紋模塊里面的CMOS5片采集一次指紋信息,然后 進(jìn)行模糊處理生成0和1兩種記錄信息,存入指紋模塊的FLASH5片里面。當(dāng)切換到識(shí)別模式的時(shí)候,指紋模塊就會(huì)先讓CMOS5片采集一次指紋,然后和FLASH5片的數(shù)據(jù)進(jìn)行對(duì)比??词遣皇谴嬖?,如果存在就能返回是幾號(hào)指紋。這樣我們就能通過(guò)單片機(jī)或者電腦進(jìn)行指紋識(shí)別與登記了。2)指紋傳感器模塊實(shí)物圖指紋模塊型號(hào)是:FM-18Q此模塊上里面包含了 :1、光學(xué)頭2、通信連接線3、DSPE片(在模塊里面)4、穩(wěn)壓芯片5、FLASHED 6、CMS焚感器(在模塊里面)等部件組成。

18、圖3-11指紋傳感器模塊實(shí)物圖第四章軟件程序設(shè)計(jì)該設(shè)計(jì)主要通過(guò)設(shè)定的3個(gè)按鍵來(lái)實(shí)現(xiàn)一定的功能,3個(gè)按鍵分別為模式切換(識(shí) 別模式和錄入指紋模式)、指紋錄入、刪除所有指紋。4. 1程序流程圖4.1 .1程序主流程圖(1)指紋錄入:先進(jìn)行錄入模式,然后按一下錄入指紋,燈會(huì)閃爍,錄入成功 一次,蜂鳴器響一次,這時(shí)候拿開(kāi)手指,1秒放入同一個(gè)手指,會(huì)再錄入一次, 如果兩次都成功,就成功錄入了一個(gè)指紋。蜂鳴器會(huì)響兩次,同時(shí)顯示錄入指紋 成功。如果不成功就會(huì)顯示錄入失敗。錄入完成后,可以進(jìn)入識(shí)別模式,或者接 著錄入下一個(gè)指紋。錄入完成,按一次指紋轉(zhuǎn)換,進(jìn)入指紋識(shí)別開(kāi)鎖模式。單片機(jī)主程序流程設(shè)計(jì):4.2 系統(tǒng)

19、關(guān)鍵代碼引腳使用:sbit relay =P1A4; /sbit buzzer=P1A5; / sbit red= P2A7;/ sbit green= P2A0;/繼電器引腳蜂鳴器引腳錄入模式指示燈在板子靠近單片機(jī)處識(shí)別模式指示燈在板子遠(yuǎn)離單片機(jī)處sbit k2=P3A4; 錄入一次指紋sbit k1=P3A3; 模式識(shí)別轉(zhuǎn)換sbit k3=P3A2; 清除所有指紋(10個(gè)指紋清除)部分主函數(shù)代碼:void main(void)/ 主函數(shù)unsigned char i=0;ET0=1; /定時(shí)器0開(kāi)中斷TL0=0x97; 17ms 的初值TH0=0xBD;delay1ms(5);LcdRw=

20、0; /只對(duì)液晶進(jìn)行寫(xiě)操作,不進(jìn)行讀操作delay1ms(5);LCD_Initial();/液晶初始化delay1ms(5);GotoXY(0,0);/x,yPrint(Identify);/用口初始化SCON=0x50; /UART 方式 1:8 位 UART; REN=1:允許接收PCON=0x00; /SMOD=0:波特率不加倍TMOD=0x21; /T1 方式2,用于UAR誠(chéng)特率 TH1=0xFD;TL1=0xFD; /UART波特率設(shè)置:9600TR1=1;TR0=1;/ 開(kāi)定時(shí)器0IT0=0;/中斷0低電平中斷IT1=1;/中斷1低電平中斷EX0=1;/開(kāi)中斷0 EX1=1;/開(kāi)

21、中斷1 EA=1;mode();/看當(dāng)前是什么模式for(i=0;i<6;i+)/ 開(kāi)始握手6次,如果沒(méi)有一次成功,表示模塊通信不正 常。只要成功就跳出此循環(huán)if(VefPSW()/與模塊握手通過(guò),綠燈亮起。進(jìn)入識(shí)別模式green=0; /讀一次 buzzer=0;shownum(0);delay1ms(300);buzzer=1; break; else red=1; green=1; break;while(1)if(k2=0)/ 錄入一個(gè)指紋delay1ms(10);if(k2=0) 如果仍為低電平,表示按鍵有效while(k2=0);/等待松手if(VefPSW()=1&

22、&modeflag=1&&SaveNumber<10)/ 與 模塊握手通過(guò)一if(enroll()=1)/ 采集兩次,生成1個(gè)指紋模板成功也成功if(savefingure(SaveNumber+1)=1)/ 保存 SaveNumber+;/ 力口一次 shownum(SaveNumber); else buzzer=0; for(i=0;i<8;i+) delay1ms(100); red=red; red=0; buzzer=1; if(modeflag=0)/為識(shí)別模式searchnum=search();if(searchnum>=1&

23、&searchnum<=162)/ 最多是 162 個(gè)指紋shownum(searchnum);/ 蜂鳴器響一聲r(shí)elay=0;buzzer=0;delay1ms(100);buzzer=1;for(i=0;i<20;i+)delay1ms(150);relay=1;if(searchnum=255)不正確的指紋 蜂鳴器響三聲shownum(0);buzzer=0;delay1ms(100); buzzer=1;delay1ms(100);buzzer=0;delay1ms(100); buzzer=1;delay1ms(100);buzzer=0;delay1ms(100

24、); buzzer=1;delay1ms(100);if(clearallflag=1)clearallflag=0;Clear_All();red=0; /紅色燈亮green=1;/蜂鳴器長(zhǎng)響一次,表示清除所有指紋結(jié)束modeflag=1;/進(jìn)入錄入指紋模式GotoXY(0,0);/x,yPrint(Input);shownum(0);buzzer=0;delay1ms(800);buzzer=1;SaveNumber=0;if(changeflag=1)mode();/ 顯示當(dāng)前模式changeflag=0;/while(1)結(jié)束 /void intO(void) interrupt 0/

25、 中斷 0,消除所有指紋if(k3=0) /清除所有指紋delay1ms(10);if(k3=0)/如果仍為低電平,表示按鍵有效while(k3=0);/等待松手clearallflag=1;changeflag=1;void TimerO(void) interrupt 1 定時(shí)器 0 中斷函數(shù) TL0=0x97;TH0=0xBD;clk0+; / 延時(shí) 17msvoid int1(void) interrupt 2/ 中斷 1,模式轉(zhuǎn)換if(k1=0) 模式轉(zhuǎn)換其中用modeflag來(lái)標(biāo)志,默認(rèn)從第1個(gè)指紋開(kāi)始錄delay1ms(10);if(k1=0)/如果仍為低電平,表示按鍵有效whi

26、le(k1=0);/ 等待松手modeflag=modeflag;/0表示錄入指紋1表示識(shí)別指紋changeflag=1;/模式發(fā)生了轉(zhuǎn)換 第五章調(diào)試完成了硬件的設(shè)計(jì)、制作和軟件編程之后,要使系統(tǒng)能夠按設(shè)計(jì)正常運(yùn)行,必須 進(jìn)行硬件調(diào)試和軟件調(diào)試。5.1硬件調(diào)試硬件調(diào)試的主要任務(wù)是排除硬件故障,其中包括設(shè)計(jì)錯(cuò)誤和工藝性故障。(1)在電路的電源焊接一個(gè)電源指示燈,判斷電路中通電是否正常。(2)將電路中的電源線布置在通用板的四周,這樣使用電源很方便,減少干擾, 同時(shí)可以減少短路故障發(fā)生的可能。(3)元器件合理布局,且盡量減少占用板子的面積,力爭(zhēng)做到節(jié)儉。特別是單片機(jī)的晶振盡量靠近單片機(jī),減少干擾。(

27、4)液晶的焊接注意方向,且調(diào)節(jié)背光的電位器不可以少。5.2軟件調(diào)試軟件調(diào)試的任務(wù)是利用開(kāi)發(fā)工具進(jìn)行在線仿真調(diào)試,發(fā)現(xiàn)和糾正程序錯(cuò)誤,同時(shí)也能發(fā)現(xiàn)硬件故障。程序的調(diào)試應(yīng)一個(gè)模塊一個(gè)模塊地進(jìn)行, 首先單獨(dú)調(diào)試各功能子程序,檢驗(yàn)程序 是否能夠?qū)崿F(xiàn)預(yù)期的功能,接口電路的控制是否正常等;最后逐步將各子程序連 接起來(lái)總調(diào)。聯(lián)調(diào)需要注意的是,各程序模塊間能否正確傳遞參數(shù), 特別要注意 各子程序的現(xiàn)場(chǎng)保護(hù)與恢復(fù)。本設(shè)計(jì)主要有:指紋識(shí)別傳感器圖像采集模塊0單片機(jī)圖像處理(3按鍵模塊和指示燈模塊指紋液晶顯示和蜂鳴器、繼電器模塊不斷地對(duì)單片機(jī)下程序,觀看調(diào)試結(jié)果。參考文獻(xiàn)1河橋,段清明,邱春玲.單片機(jī)原理及應(yīng)用.北

28、京:中國(guó)鐵道出版社,2007.12 2馮星奎,李林艷,顏?zhàn)嫒?一種新的指紋圖像細(xì)化算法.中國(guó)圖像圖形學(xué)報(bào), 1999, 4(10)835-838.3呂鳳軍.數(shù)字圖象處理編程入門一一做一個(gè)自己的Photoshop.北京:清華大學(xué)出版社,1999.4劉文星,王雄沂,母國(guó)光.紋線跟蹤及其在細(xì)化指紋后處理中的應(yīng)用.光電子傲光,2002, 13 (2) : 184-187.5劉家鋒,唐降龍,趙泉.一個(gè)基于特征點(diǎn)匹配的聯(lián)機(jī)指紋鑒別系統(tǒng).哈爾濱工 業(yè)大學(xué)學(xué)報(bào),2002.34 (1) : 132-1366 簡(jiǎn)兵,莊鎮(zhèn)泉等.基于脊線跟蹤的指紋圖細(xì)節(jié)提取算法.電路與系統(tǒng)學(xué)報(bào),20017劉旭,田捷.自動(dòng)指紋識(shí)別算法

29、在嵌入式系統(tǒng)的實(shí)現(xiàn)J.計(jì)算機(jī)工程與應(yīng)用,2002.8周毅,等著.基于SPI協(xié)議的實(shí)現(xiàn),計(jì)算機(jī)仿真.2003.9竇振中.單片機(jī)外圍器件實(shí)用手冊(cè)(存儲(chǔ)器分冊(cè)).北京:北京航空航天大學(xué)出版社,20O010李華.MCS-51系列單片機(jī)實(shí)用接口技術(shù).北京:北京航空航天大學(xué)出版社, 199811張培仁,孫占輝,張村峰.基于 c語(yǔ)言編程MCS- 51單片機(jī)原理與應(yīng)用 M.北京:清華大學(xué)出版社,2003.附件2程序清單#include <reg52.h>#include <intrins.h>#include"lcd1602.h”sbit relay =P1A4; /sbit

30、 buzzer=P1A5; / sbit red= P2A7;/ sbit green= P2A0;/sbit k2=P3A4sbit k1=P3A3sbit k3=P3A2/繼電器引腳蜂鳴器引腳錄入模式指示燈在板子靠近單片機(jī)處識(shí)別模式指示燈在板子遠(yuǎn)離單片機(jī)處錄入一次指紋模式識(shí)別轉(zhuǎn)換消除所有指紋(10個(gè)指紋清除)#define Max_User 10#define error 2unsigned charSaveNumber=0,searchnum=0;unsigned intSearchNumber=0;unsigned int clk0=0;unsigned char str3=0,

31、9;0','0'unsigned char code Identify16="Lock: Idenfity"unsigned char code Input16 ="Lock: Input "bit modeflag=0,clearallflag=0,changeflag=0;/默認(rèn)為識(shí)別模式/常用指令定義 /Verify Password :驗(yàn)證設(shè)備握手口令unsigned char code VPWD16=16,0X01 ,0Xff,0xff,0xff,0xff,0x01,0,7,0x13,0x00,0x00,0x00,0x0

32、0,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,0xff,0xff,0xff,0x01,0,3,1,0x00,0x05;/ 回送 12/Gen Templet1:根據(jù)原始圖像生成指紋特征1unsignedcharcodeGENT114=13,

33、0X01 ,0Xff,0xff,0xff,0xff,0x01,0,4,2,1,0x00,0x08;/回送12 /Gen Templet2:根據(jù)原始圖像生成指紋特征2unsignedcharcodeGENT214=13,0X01 ,0Xff,0xff,0xff,0xff,0x01,0,4,2,2,0x00,0x09; / 送12個(gè)/Search Finger:以 CharBufferA 或 CharBufferB 中的特征文件搜索整個(gè)或部分指紋庫(kù)unsigned char code SEAT18=17, 0,8, 4,1,0,0, 0,0x65, 0x00,0x73;/Merge Templet

34、 ; 將 CharBufferA 模板,結(jié)果存于ModelBuffer。0X01 ,0Xff,0xff,0xff,0xff, 0x01, /回送16個(gè)與CharBufferB中的特征文件合并生成unsigned char code 0,3,5,0x00,0x09;/ /Store TempletMERG14=12,0X01 ,0Xff,0xff,0xff,0xff, 0x01,回送12個(gè):將ModelBuffer中的文件儲(chǔ)存到flash 指紋庫(kù)中0x01,0x01,0x01,unsigned char code STOR16=15,0X01 ,0Xff,0xff,0xff,0xff,0,6,6

35、,2,0x00,0x00,0x00,0x0f; /回送 12 個(gè)/Read Noteunsigned char code RDNT14=13,0X01 ,0Xff,0xff,0xff,0xff, 0,4,0x19, 0, 0x00,0x1e;/Clear Noteunsigned char code DENT46=45,0X01 ,0Xff,0xff,0xff,0xff, 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

36、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,0x11;/常用指令定義結(jié)束 /宏定義 /#define FALSE 0#define TURE 1 /狀態(tài)定義表#define on1#define off0 #define MAX_NUMBER 63#def

37、ine _Nop() _nop_()/ 宏定義結(jié)束/unsigned charFifoNumber=0;xdata unsigned char FIFOMAX_NUMBER+1=0;/*1 毫秒延時(shí)程序 */void delay1ms(unsigned int t)unsigned int i,j;for(i=0;i<t;i+)for(j=0;j<120;j+);void TxdByte(unsigned char dat)/用口發(fā)送信息,通過(guò)查詢方式發(fā)送一個(gè)字符TI = 0;/ 讓 TI =0SBUF = dat; /讀入數(shù)據(jù)while(!TI);/等待發(fā)送完畢TI = 0;/

38、清零bit Command(unsigned char *p,unsigned char MaxTime) / 命令解析,給模塊 發(fā)送一個(gè)命令unsignedcharcount=0,tmpdat=0,temp=0,i=0,package=0,flag=0,checksum=0;bit result=0, start=0,stop=0;TxdByte(0xef);/ 數(shù)據(jù)包包頭識(shí)別碼TxdByte(0x01);/ 數(shù)據(jù)包包頭識(shí)別碼i=*p;/數(shù)組的第“ 0”個(gè)元素、里面存放了本數(shù)組的長(zhǎng)度,把這個(gè)長(zhǎng)度給變量i ,方便進(jìn)行操作p+;p+;for (count=i-1; count!=1;count-

39、) /Sent command Stringtemp=*p+;/取第個(gè)“1”個(gè)元素的內(nèi)容,然后發(fā)送TxdByte(temp);/ 將數(shù)據(jù)發(fā)送出去result=TURE;/發(fā)送完成,結(jié)果為真(真為1)FifoNumber=0;for (count=MAX_NUMBER+1; count!=0; count-)/ 清空所有 FIFO口 數(shù)組里 面的內(nèi)容,寫(xiě)入0X00FIFOcount-1=0x00;if (result)result=FALSE;start =FALSE;stop =FALSE;count=0;clk0=0;/清零CL0計(jì)數(shù)do /do 的內(nèi)容 / restart。:if (RI=

40、1)/如果接收到數(shù)據(jù)tmpdat=SBUF;/先把接收至U的數(shù)據(jù)放至U tmpdat中RI=0;if (tmpdat=0xef)&&(start=FALSE)這個(gè)數(shù)據(jù)為第一個(gè)傳回來(lái)的數(shù)據(jù),也就是“指令應(yīng)答”的第一個(gè)字節(jié)count=0;FIFO0=tmpdat;/ 讀入第一個(gè)應(yīng)答字節(jié)(0XEF),存 在第“0”個(gè)元素中flag=1;gotorestart。;/可以用中斷方式進(jìn)行if(flag=1)/第一個(gè)字節(jié)已經(jīng)回來(lái),所以 flag=1成立if(tmpdat!=0x01) / 接收數(shù)據(jù)錯(cuò)誤,將重新從緩 沖區(qū)接收數(shù)據(jù)flag=0;/ 接收應(yīng)答失敗 result=FALSE;star

41、t =FALSE;stop=FALSE;count=0;goto restart。;/如果成功接收到0xef01 ,可以開(kāi)始接收數(shù)據(jù)flag=2;/flag=2; 表示應(yīng)答成功,可以開(kāi)始接收數(shù) 據(jù)了count+;/ 現(xiàn)在 count=1;FIFOcount=tmpdat; 讀入第二個(gè)應(yīng)答字節(jié)(0X01),存在第“1”個(gè)元素中start=TURE; /應(yīng)答成功可以開(kāi)始接收數(shù)據(jù) gotorestart。;if(flag=2)&&(start=TURE)/flag=2;可以開(kāi)始接收數(shù)據(jù)了表示應(yīng)答成功,count+; / 數(shù)據(jù)元素下標(biāo)+FIFOcount=tmpdat;存入數(shù)據(jù)if(c

42、ount>=6)checksum=FIFOcount+checksum; / 計(jì)算 校驗(yàn)和包長(zhǎng)度標(biāo)志為0if(count=8)package=FIFO7*0X100+FIFO8; / 計(jì)算stop= TURE;if(stop)if(count=package+8)checksum=checksum-FIFOcount-1;if(checksum!=FIFOcount&0xff) result=FALSE; /校驗(yàn)失敗,置結(jié)果elseresult=TURE;flag=0;break;/do的內(nèi)容 結(jié)束/while (clk0<=MaxTime)&&(count

43、<=MAX_NUMBER)&&Changeflag=0);/由定時(shí)器以及最大接收數(shù)據(jù)來(lái)控制,保證不會(huì)粒匕一直循環(huán)FifoNumber=count;/保存接收到的數(shù)據(jù)個(gè)數(shù)return (result);bit VefPSW(void)/驗(yàn)證設(shè)備握手口令,成功返回1unsigned char count=0;while (1)if(Command(VPWD,20) && (FifoNumber=11) && (FIFO9=0x00) return(1);count+;if (count>=2)/如果不成功,再驗(yàn)證一次,如果兩次不成功,返回

44、失敗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(BUFID=1)if(Command(GENT1,60) &&(FifoNumber=11) &&

45、(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 SearcMinger(void)/搜索指紋(發(fā)送搜索命令、以及根據(jù)返回值確定是否存在)if( Command(SEAT,60) && (FifoNumber=15) && (FIFO9=0x00) ) / 搜 索到指紋S

46、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 (i<20) if (ImgProcess(1)=1)/首先讀入一次指紋SearchBuf=Searchfinger();/進(jìn)行指紋比對(duì),如果搜索到,返回搜索到的指紋序號(hào)if(SearchBuf=1) return Se

47、archNumber; elsereturn 255;/表示搜索到的指紋不正確 i+; return 0;bit savefingure(unsigned char ID)/保存指紋unsigned char i=0;/現(xiàn)在開(kāi)始進(jìn)行存儲(chǔ)指紋模板的操作for (i=0;i<16;i+)保存指紋信息FIFOi=STORi;FIFO12=ID;/把指紋模板存放的 PAGE_I電就是FLASH勺位置FIFO14=FIFO14+ID;/ 校驗(yàn)和if (Command(FIFO,70)=1)不成功返回0/此處進(jìn)行存放指紋模板的命return(1); elsereturn(0); /不成功返回0uns

48、igned char enroll(void) /采集兩次指紋,生成1個(gè) 指紋模板unsigned char temp=0,count=0;while(1) temp=ImgProcess(1);/ 生成特征 1 if (temp=1)/生成特征文件成功 break; elseif (temp=0)/ 采集指紋沒(méi)有成功 count+;if (count>=40)/如果采集了 40次,還不成功,直接采集失敗, 直接退出enroll函數(shù)返回0return(0); /采集第一個(gè)特征成功count=0;buzzer=0;delay1ms(100);buzzer=1;delay1ms(2000);

49、延時(shí)2s開(kāi)始采集下一個(gè)特征/開(kāi)始采集第二個(gè)特征while(1) temp=ImgProcess(2); / 生成特征 2if (temp=1)/生成特征文件2成功if (Command(MERG,40)&& (FifoNumber=11) &&(FIFO9=0x00)=0 ) /合并不成功返回0,成功返回1return 0;else/特征文件合并生成模板,結(jié)果存于 ModelBufferbuzzer=0;delay1ms(100);buzzer=1;delay1ms(100);buzzer=0;delay1ms(100);/響兩聲,表示生成一個(gè)模板成功buzze

50、r=1;return 1; elseif (temp=1)/ 采集指紋沒(méi)有成功count+;if (count>=25)return。; void shownum(unsigned char dat) unsigned char numdat=0; numdat=dat;GotoXY(0,1);/x,y Print("Finger:");GotoXY(0,8);/x,y str0=0x30+numdat/10; str1=0x30+numdat%10;Print(str);void mode(void)if(modeflag=0)GotoXY(0,0);/x,y Pr

51、int(Identify); green=0;red=1; else GotoXY(0,0);/x,y Print(Input);red=0; green=1; shownum(0); void main(void)/ 主函數(shù) unsigned char i=0;ET0=1;/ 定時(shí)器0開(kāi)中斷TL0=0x97; /17ms 的初值 TH0=0xBD;delay1ms(5);LcdRw=0; /只對(duì)液晶進(jìn)行寫(xiě)操作,不進(jìn)行讀操作delay1ms(5);LCD_Initial();/液晶初始化delay1ms(5);GotoXY(0,0);/x,y Print(Identify);/用口初始化SCON=0x50; /UART 方式 1:8 位 UART; REN=1:允許接收 PCON=0x00; /SMOD=0:波特率不加倍 T

溫馨提示

  • 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)論