版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 PAGE44 / NUMPAGES49 大學(xué)經(jīng)濟(jì)技術(shù)學(xué)院 畢 業(yè) 論 文(設(shè)計(jì)) 論文題目 基于單片機(jī)的密碼鎖設(shè)計(jì)姓 名 學(xué)號 09531013 院 系 經(jīng)濟(jì)技術(shù)學(xué)院 專 業(yè) 電子信息工程 指導(dǎo)教師 陽 職 稱 副教授 中國二0一三年五月農(nóng)業(yè)大學(xué)經(jīng)濟(jì)技術(shù)學(xué)院學(xué)士學(xué)位論文(設(shè)計(jì))開題報(bào)告課題名稱基于單片機(jī)的密碼鎖設(shè)計(jì)課題來源導(dǎo)師指定學(xué)生專業(yè)電子信息工程學(xué)號09531013指導(dǎo)教師職稱副教授研究容本系統(tǒng)由STC89C52單片機(jī)系統(tǒng)(主要是STC89C52單片機(jī)最小系統(tǒng))、44矩陣鍵盤、LCD1602顯示和報(bào)警系統(tǒng)等組成,具有設(shè)置、修改六位用戶密碼、超次報(bào)警、超次鎖定、密碼錯(cuò)誤報(bào)警等功能(本設(shè)計(jì)由
2、P0口控制LCD顯示,密碼正確顯示OPEN! 密碼錯(cuò)誤顯示error!超過三次輸入錯(cuò)誤自動(dòng)鎖定。由P1口控制矩陣鍵盤含有0-9數(shù)字鍵和A-F功能鍵。)。除上述基本的密碼鎖功能外,依據(jù)實(shí)際的情況還可以添加遙控功能。研究計(jì)劃3月中3月底 調(diào)研、查資料。4月初4月中 確定系統(tǒng)架構(gòu)、分析并劃分各功能模塊的接口。4月底5月中 各功能模塊軟、硬件的設(shè)計(jì)與開發(fā)。5月下5月底 各功能模塊與整個(gè)系統(tǒng)的調(diào)試與運(yùn)行。撰寫畢業(yè)設(shè)計(jì)論文。特色與創(chuàng)新 1.按鍵設(shè)置6位密碼,輸入密碼若密碼正確,則鎖打開。顯示open!2.密碼可以自己修改(6位密碼),必須是鎖打開時(shí)才能改密。為防止誤操作,修改密碼得輸入兩次。3.若密碼輸入
3、錯(cuò)誤次數(shù)超過3次,蜂鳴器報(bào)警并且鎖定鍵盤。4.液晶屏亮度會隨光線自動(dòng)調(diào)整。計(jì)較方便,易懂指導(dǎo)教師意見同意開題。教研室意見 同意開題。學(xué)院意見同意開題。目 錄 TOC o 1-3 h z u HYPERLINK l _Toc263084063第一章 緒論1HYPERLINK l _Toc2630840641.1、課題背景和意義1HYPERLINK l _Toc2630840651.2、電子密碼鎖發(fā)展趨勢2HYPERLINK l _Toc263084066第二章 設(shè)計(jì)思想3HYPERLINK l _Toc263084069第三章 系統(tǒng)硬件設(shè)計(jì)43.1硬件支持4 3.1.1STC89C52RC 單片
4、機(jī)介紹43.1.2液晶顯示LCD1602的介紹5 3.1.3自鎖開關(guān)說明5 3.1.4上拉電阻介紹5 3.1.5三極管介紹6 3.1.6繼電器介紹8 3.1.7供電方式9 3.1.8輕觸按鍵93.2功能單元模塊設(shè)計(jì)103.2.1 開鎖機(jī)構(gòu)103.2.2 矩陣鍵盤設(shè)計(jì)電路113.2.3 聲音提示電路設(shè)計(jì)113.2.4 AT24C02掉電存儲單元的設(shè)計(jì)12HYPERLINK l _Toc263084082第四章 程序設(shè)計(jì)與系統(tǒng)仿真134.1 模塊介紹 134.1.1 主程序模塊 144.1.2 密碼比較判斷模塊154.1.3 鍵盤掃描模塊15 4.1.4 修改密碼模塊16 4.2 電子密碼鎖原理圖
5、184.2.1總店路圖18 4.2.2控制電路184.2.3實(shí)物圖194.2.4仿真圖19HYPERLINK l _Toc263084087第五章 系統(tǒng)功能19HYPERLINK l _Toc263084091第六章 設(shè)計(jì)總結(jié)19致20HYPERLINK l _Toc263084092參考文獻(xiàn)20HYPERLINK l _Toc263084094附錄 21a 電子密碼鎖元件清單21b 源程序22基于單片機(jī)的密碼鎖設(shè)計(jì)學(xué)生:宇,指導(dǎo)教師:陽(農(nóng)業(yè)大學(xué) 經(jīng)濟(jì)技術(shù)學(xué)院 09531013)摘 要:本設(shè)計(jì)提出了一種電子密碼鎖的設(shè)計(jì)方法。本系統(tǒng)由STC89C52單片機(jī)系統(tǒng)、44矩陣鍵盤、LCD1602顯示
6、和報(bào)警系統(tǒng)等組成,具有設(shè)置、修改六位用戶密碼、超次報(bào)警、超次鎖定、密碼錯(cuò)誤報(bào)警等功能。本系統(tǒng)成本低廉,功能實(shí)用。關(guān)鍵詞:單片機(jī),電子密碼鎖,44矩陣鍵盤AbstractThis paper presents a design method of the design of electronic password lock. The system consists of STC89C52 single-chip microcomputer system, 4 * 4 matrix keyboard, LCD1602 display and alarm system etc., has provi
7、ded six, modify user password, the alarm, super lock, error alarm passwords and other functions. This system has the advantages of low cost, practical function.Key words :AT89S51 ,Electronic password lock ,44 keyboard第一章 緒論1.1 課題背景和意義隨著電子技術(shù)和計(jì)算機(jī)技術(shù)的飛速發(fā)展,單片機(jī)性能不斷完善,性能價(jià)格比顯著提高,技術(shù)日趨完善。由于單片機(jī)具有體積小、重量輕、價(jià)格便宜、功
8、耗低、控制功能強(qiáng)與運(yùn)算速度快等特點(diǎn),因而在國民經(jīng)濟(jì)建設(shè)、軍事與家用電器等各個(gè)領(lǐng)域均得到了廣泛的應(yīng)用。本設(shè)計(jì)利用單片機(jī)與附加電子元器件實(shí)現(xiàn)數(shù)據(jù)采集和控制算法,來完成某一實(shí)際功能。隨著人們生活水平的提高和安全意識的加強(qiáng),對安全的要求也就越來越高。鎖自古以來就是把守護(hù)門的鐵將軍,人們對它要求甚高,既要安全可靠的防盜,又要使用方便,這也是制鎖者長期以來研制的主題。隨著電子技術(shù)的發(fā)展,各類電子產(chǎn)品應(yīng)運(yùn)而生,電子密碼鎖就是其中之一。電子鎖是通過鍵盤輸入一組密碼完成開鎖過程。研究這種鎖的初衷,就是為提高鎖的安全性。由于電子鎖的密鑰量(密碼量)極大,可以與機(jī)械鎖配合使用,并且可以避免因鑰匙被仿制而留下安全隱患
9、。電子鎖只需記住一組密碼,無需攜帶金屬鑰匙,免除了人們攜帶金屬鑰匙的煩惱,而被越來越多的人所欣賞。電子鎖的種類繁多,例如數(shù)碼鎖,指紋鎖,磁卡鎖,IC卡鎖,生物鎖等。但較實(shí)用的還是按鍵式電子密碼鎖。20世紀(jì)80年代后,隨著電子鎖專用集成電路的出現(xiàn),電子鎖的體積縮小,可靠性提高,成本較高,是適合使用在安全性要求較高的場合,且需要有電源提供能量,使用還局限在一定圍,難以普與,所以對它的研究一直沒有明顯進(jìn)展。目前,在西方發(fā)達(dá)國家,電子密碼鎖技術(shù)相對先進(jìn),種類齊全,電子密碼鎖已被廣泛應(yīng)用于智能門禁系統(tǒng)中,通過多種更加安全,更加可靠的技術(shù)實(shí)現(xiàn)大門的管理。國的不少企業(yè)也引進(jìn)了世界上先進(jìn)的技術(shù),發(fā)展前景非???/p>
10、觀。希望通過不斷的努力,使電子密碼鎖在我國也能得到廣泛應(yīng)用。1.2 電子密碼鎖發(fā)展趨勢電子密碼鎖應(yīng)用于金融業(yè),其根本的作用是“授權(quán)”,即被“授權(quán)”的人才可以存取錢、物。廣義上講,金融業(yè)的“授權(quán)”主要包括以下三種層次的容:1、授予保管權(quán),如使用保管箱、保險(xiǎn)箱和保險(xiǎn)柜;2、授予出入權(quán),如出入金庫、運(yùn)鈔車和保管室;3、授予流通權(quán),如自動(dòng)存取款。目前,金融行業(yè)電子密碼鎖的應(yīng)用主要集中在前兩個(gè)層面上。下面將介紹幾種在金融行業(yè)中使用較多的電子密碼鎖以與它們的技術(shù)發(fā)展方向。當(dāng)然,以上所說的授權(quán)技術(shù)再高超,都必須由精良的“鎖具”擔(dān)當(dāng)承載結(jié)構(gòu)部件,實(shí)現(xiàn)開啟、閉鎖的功能,而且承擔(dān)實(shí)體防護(hù)作用,抵抗住或盡量延遲破壞
11、行為,讓電子密碼鎖“軟、硬不吃”。一般情況下,鎖具防盜的關(guān)鍵是鎖身外殼、閉鎖的部件的強(qiáng)度、鎖止型式、配合間隙和布局。提高電子密碼鎖之防護(hù)能力的必然途徑是報(bào)警,在金融業(yè)的許多場所有人值守、有電視監(jiān)控,具有報(bào)警功能,可以綜合物理防和人力防兩種作用。報(bào)警的前提是具備探測功能,根據(jù)電子密碼鎖的使用場所和防護(hù)要求,可選擇多種多樣的探測手段。在中國的城市金融業(yè)中,實(shí)現(xiàn)聯(lián)網(wǎng)報(bào)警已經(jīng)成為對各金融網(wǎng)點(diǎn)的基本要求。根據(jù)國外的實(shí)踐經(jīng)驗(yàn),金融業(yè)實(shí)行安全防風(fēng)險(xiǎn)等級很有必要,即依據(jù)使用的防盜報(bào)警器材的性能、安裝布局和人員值守狀況等,可以評估被防護(hù)物或區(qū)域的防護(hù)能力,得出風(fēng)險(xiǎn)等級,其中,電子密碼鎖的性能至關(guān)重要。由于數(shù)字、
12、字符、圖形圖像、人體生物特征和時(shí)間等要素均可成為鑰匙的電子信息,組合使用這些信息能夠使電子密碼鎖獲得高度的性,如防森嚴(yán)的金庫,需要使用復(fù)合信息密碼的電子密碼鎖,這樣對盜賊而言是“道高一尺、魔高一丈”。組合使用信息也能夠使電子密碼鎖獲得無窮擴(kuò)展的可能,使產(chǎn)品多樣化,對用戶而言是“千挑百選、自得其所”。 單顯示 鍵盤 片 機(jī) 開鎖 圖1.1 總體框圖 工作過程按鍵設(shè)置6位密碼,輸入密碼,通過單片機(jī)判斷,若密碼正確,通過則鎖打開,顯示open!首次使用時(shí)輸入:131420,對密碼進(jìn)行初始化,當(dāng)顯示:initpassword,證明密碼初始化完成,此時(shí)的密碼為:000000。第二章 設(shè)計(jì)思想(1)本設(shè)計(jì)
13、為了防止密碼被竊取要求在輸入密碼時(shí)在LCD屏幕上顯示*號。(2)設(shè)計(jì)開鎖密碼位六位密碼的電子密碼鎖。(3)能夠LCD顯示在密碼正確時(shí)顯示open!,密碼錯(cuò)誤時(shí)顯示ERROR,輸入密碼時(shí)顯示initpassword。(4)實(shí)現(xiàn)輸入密碼錯(cuò)誤超過限定的三次電子密碼鎖定。(5)44的矩陣鍵盤其中包括0-9的數(shù)字鍵和A-D的功能鍵(6)本產(chǎn)品具備報(bào)警功能,當(dāng)輸入密碼錯(cuò)誤時(shí)蜂鳴器響并且LED燈亮。 (7)密碼可以由用戶自己修改設(shè)定(只支持6位密碼),修改密碼之前必須再次輸入密碼,在輸入新密碼時(shí)候需要二次確認(rèn),以防止誤操作第三章 系統(tǒng)的硬件設(shè)計(jì)3.1硬件支持3.1.1 STC89C52RC 單片機(jī)介紹STC
14、89C52是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C51為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線, HYPERLINK :/baike.baidu /view/1313309.htm t _blank 看門狗定時(shí)器,置8KB EEPROM,MAX810復(fù)位電路,三個(gè)16 位 HYPERLINK :/baike.baidu /view/281961.htm t _blank 定時(shí)器
15、/計(jì)數(shù)器,一個(gè)6向量2級中斷結(jié)構(gòu),全雙工串行口。另外 STC89X51 可降至0Hz 靜態(tài)邏輯操作,支持2種 HYPERLINK :/baike.baidu /view/37.htm t _blank 軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。最高運(yùn)作頻率35Mhz,6T/12T可選。圖3-1 STC89C52單片機(jī)引腳圖主要特性如下: (1) 增強(qiáng)型 8051 單片機(jī),6 時(shí)鐘/機(jī)器周期和 12 時(shí)鐘/機(jī)器周期可以任 意選擇,指令代碼完全兼容
16、傳統(tǒng) 8051. (2)工作電壓:5.5V3.3V(5V 單片機(jī))/3.8V2.0V(3V 單片機(jī)) (3) 工作頻率圍:040MHz,相當(dāng)于普通 8051 的 080MHz,實(shí)際工 作頻率可達(dá) 48MHz (4) 用戶應(yīng)用程序空間為 8K 字節(jié) (5) 片上集成 512 字節(jié) RAM (6) 通用 I/O 口 (32 個(gè)) 復(fù)位后為: , P1/P2/P3/P4 是準(zhǔn)雙向口/弱上拉, P0 口是漏極開路輸出,作為總線擴(kuò)展用時(shí),不用加上拉電阻,作為 I/O 口用時(shí),需加上拉電阻。 (7)ISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程) ,無需專用編程器,無 需專用仿真器,可通過串口(RxD/P3
17、.0,TxD/P3.1)直接下載用戶程 序,數(shù)秒即可完成一片(8)具有 EEPROM 功能 (9)具有看門狗功能 (10)共 3 個(gè) 16 位定時(shí)器/計(jì)數(shù)器。即定時(shí)器 T0、T1、T2(11)外部中斷 4 路,下降沿中斷或低電平觸發(fā)電路,Power Down 模式可 由外部中斷低電平觸發(fā)中斷方式喚醒 (12)通用異步串行口(UART) ,還可用定時(shí)器軟件實(shí)現(xiàn)多個(gè) UART (13) 工作溫度圍:-40+85(工業(yè)級)/075(商業(yè)級) (14) PDIP 封裝 3.1.2液晶顯示LCD1602的介紹(1)LM1602字符型模塊的性能重量輕:100g;體積小:N?Y未超過N次輸入密碼?密碼設(shè)置完
18、畢N設(shè)置新密碼Y按鍵N判斷按鍵值返回主界面NY設(shè)置解碼次數(shù)產(chǎn)生隨機(jī)密碼輸入密碼N=0 x84N=0 x82N=0 x11圖4-1 系統(tǒng)程序流程圖 4.1.1 主程序模塊主程序主要用于定義全局變量,給全局變量賦初值,初始化E2PROM,啟動(dòng)定時(shí)器以與 從AT24C02中讀取密碼,為整個(gè)程序提供數(shù)據(jù);檢測按鍵;調(diào)用顯示等功能。4.1.2 密碼比較判斷模塊該模塊的功能是將鍵盤輸入的密碼利用if語句與設(shè)定的密碼進(jìn)行逐個(gè)比較,若密碼完全正確則開鎖;若不正確,則開啟報(bào)警電路,復(fù)位后重新輸入密碼。其密碼輸入和比較判決流程圖下圖所示。輸入密碼核對鍵盤鎖定,開啟報(bào)警電路開鎖,燈亮,可密碼修改NY復(fù)位圖4-2 密
19、碼輸入和比較判決流程圖4.1.3 鍵盤掃描模塊 鍵盤使用矩陣式鍵盤,由行和列組成,CPU對所有鍵盤進(jìn)行監(jiān)視,從而實(shí)現(xiàn)逐列掃描鍵盤確定被按鍵的具體位置、判斷鍵盤上有無鍵按下、消除去抖動(dòng)、判斷閉合的鍵是否釋放等功能。如下圖所示,為鍵盤掃描流程圖 開始 延時(shí)去抖動(dòng)計(jì)算輸入鍵值鍵值送入單片機(jī)有按鍵輸入?有按鍵輸入?有按鍵輸入?返回NNYY圖4-3 鍵盤掃描流程圖4.1.4 修改密碼模塊在密碼輸入正確情況下,可以按下“重置密碼”對密碼進(jìn)行重新設(shè)置,每設(shè)定一位就將密碼送給AT24C02存儲起來,當(dāng)設(shè)置6位密碼完畢后,系統(tǒng)將自動(dòng)跳到程序開始,調(diào)用新設(shè)置的密碼。下圖為修改密碼流程圖。開始輸入原密碼密碼比較比較
20、正確?輸入新密碼再次輸入新密碼調(diào)用AT24C02中密碼比較正確修改成功返回菜單鍵盤鎖定,啟動(dòng)報(bào)警電路復(fù)位YN 圖4-4 修改密碼流程圖4.2電子密碼鎖原理圖 4.2.1 總電路圖 圖4-5 總電路圖 4.2.2控制電路圖4-6 控制電路圖4.2.3實(shí)物圖圖4-7實(shí)物圖 4.2.4仿真圖五 系統(tǒng)功能本設(shè)計(jì)中系統(tǒng)可實(shí)現(xiàn)功能如下:(1)對輸入的6位密碼進(jìn)行隱藏;(2)通過發(fā)光二極管和蜂鳴器,對解密正確或者錯(cuò)誤進(jìn)行聲光報(bào)警;(3)6位密碼修改;(4)在密碼遺失情況下,通過初始密碼進(jìn)行密碼再設(shè)置;(5)采用AT24C02外部存儲器,完成斷電密碼保護(hù)功能;六 設(shè)計(jì)總結(jié)從基本方案的制定,到硬件電路的選擇,再
21、到電路的焊接,最后進(jìn)行程序調(diào)試在此期間我們遇到很多困難,但經(jīng)過不懈努力,終于擊破了各個(gè)難點(diǎn),達(dá)到的所需要的效果。在這次設(shè)計(jì)中,我深刻認(rèn)識到自身的不足缺少實(shí)戰(zhàn)經(jīng)驗(yàn)。與此同時(shí),也因?yàn)檫@次設(shè)計(jì),我得到一定的鍛煉,體會到理論與實(shí)踐相結(jié)合的重要意義。由于本次設(shè)計(jì)時(shí)間有限,一些設(shè)想沒有完全實(shí)現(xiàn),比如說:電子密碼鎖的網(wǎng)絡(luò)通信擴(kuò)展,人機(jī)界面智能化等。期待以后有機(jī)會對以上設(shè)想進(jìn)行進(jìn)一步研究實(shí)踐。致非常感*老師,老師在我大學(xué)的最后學(xué)習(xí)階段畢業(yè)設(shè)計(jì)階段給自己的指導(dǎo),從最初的定題,到資料收集,到寫作、修改,到論文定稿,她們給了我耐心的指導(dǎo)和無私的幫助。為了指導(dǎo)我們的畢業(yè)論文,他甚至放棄了自己的休息時(shí)間,他的這種無私奉
22、獻(xiàn)的敬業(yè)精神令人欽佩,在此我向他表示我誠摯的意。同時(shí),感所有任課老師和所有同學(xué)在這四年來給自己的指導(dǎo)和幫助,是他們教會了我專業(yè)知識,教會了我如何學(xué)習(xí),教會了我如何做人。正是由于他們,我才能在各方面取得顯著的進(jìn)步,在此向他們表示我由衷的意,并祝所有的老師培養(yǎng)出越來越多的優(yōu)秀人才,桃滿天下參考文獻(xiàn)1 童詩白,華成英.模擬電子技術(shù)基礎(chǔ)M.:高等教育,2006.2江曉安,董秀峰,頌華.數(shù)字電子技術(shù)基礎(chǔ)M.:電子科技大學(xué),2008.3黃友銳.單片機(jī)原理與應(yīng)用M.:工業(yè)大學(xué)2006.4徐科軍.傳感器與檢測技術(shù)M.:電子工業(yè),2011.5力.C語言程序設(shè)計(jì)M.:中國農(nóng)業(yè),2008.6曉鴿,昂軍,胡仁喜.Pr
23、otel 99SE標(biāo)準(zhǔn)實(shí)例教程M.:機(jī)械工業(yè),2010.7金桂,向國梁.基于C語言STC89C52單片機(jī)電子密碼鎖的設(shè)計(jì)與仿真J.現(xiàn)代電子技術(shù),2010,19:176-182.8George Lee,Karina Ng,Edmond Kwang.Design of ring oscillator based voltage controlled oscillator. Project Final ReportR. 20059 T. C. Weigandt,B. Kim,and P. R. Gray.Analysis of Timing Jitter in CMOS Ring Oscillato
24、rs. IEEE International Symposium on Circuits and Systems. 1994附錄:a、電子密碼鎖元件清單 9*15萬用板 矩陣按鍵或16個(gè)小按鍵 1602液晶 16p插針*2 16p單排母座*2 光敏電阻 104可調(diào)電阻 2.2k電阻*2 1k電阻10k電阻*4 1.5k電阻103排阻9012*29013接線端子3p無源蜂鳴器40腳座89c5210uf電容30pf電容*2小按鍵自鎖開關(guān)8腳座24c0212m晶振Led(3MM紅色)繼電器電源接口導(dǎo)線若干焊錫若干usb電源線(電池盒+DC插頭)b、源程序#include #include#defin
25、e LCM_Data P0#define uchar unsigned char #define uint unsigned int#define w 6/定義密碼位數(shù)sbit lcd1602_rs=P27;sbit lcd1602_rw=P26;sbit lcd1602_en=P25;sbit Scl=P34;/24C02串行時(shí)鐘sbit Sda=P35;/24C02串行數(shù)據(jù)sbit ALAM = P21;/報(bào)警sbit KEY = P36;/開鎖sbit open_led=P22;/開鎖指示燈bit operation=0;/操作標(biāo)志位bit pass=0;/密碼正確標(biāo)志bit ReInp
26、utEn=0;/重置輸入充許標(biāo)志bit s3_keydown=0;/3秒按鍵標(biāo)志位bit key_disable=0;/鎖定鍵盤標(biāo)志unsigned char countt0,second;/t0中斷計(jì)數(shù)器,秒計(jì)數(shù)器void Delay5Ms(void);unsigned char code a=0 xFE,0 xFD,0 xFB,0 xF7; /控盤掃描控制表unsigned char code start_line= password: ;unsigned char code name = =Coded Lock=;/顯示名稱unsigned char code Correct = cor
27、rect ; /輸入正確unsigned char code Error = error ; /輸入錯(cuò)誤unsigned char code codepass= pass ; unsigned char code LockOpen= open ;/OPENunsigned char code SetNew = SetNewWordEnable;unsigned char code Input = input: ;/INPUTunsigned char code ResetOK = ResetPasswordOK ;unsigned char code initword= Init passwo
28、rd.;unsigned char code Er_try= error,try again!;unsigned char code again= input again ;unsigned char InputData6;/輸入密碼暫存區(qū)unsigned char CurrentPassword6=1,3,1,4,2,0; /當(dāng)前密碼值unsigned char TempPassword6;unsigned char N=0;/密碼輸入位數(shù)記數(shù)unsigned char ErrorCont;/錯(cuò)誤次數(shù)計(jì)數(shù)unsigned char CorrectCont;/正確輸入計(jì)數(shù)unsigned ch
29、ar ReInputCont; /重新輸入計(jì)數(shù)unsigned char code initpassword6=0,0,0,0,0,0;/=5ms延時(shí)=void Delay5Ms(void)unsigned int TempCyc = 5552;while(TempCyc-);/=400ms延時(shí)=void Delay400Ms(void) unsigned char TempCycA = 5; unsigned int TempCycB; while(TempCycA-) TempCycB=7269; while(TempCycB-); /=/=24C02=/=void mDelay(uint
30、 t) /延時(shí) uchar i; while(t-) for(i=0;i125;i+) ; void Nop(void) /空操作 _nop_(); _nop_(); _nop_(); _nop_();/*起始條件*/void Start(void) Sda=1; Scl=1; Nop(); Sda=0; Nop(); /*停止條件*/void Stop(void) Sda=0; Scl=1; Nop(); Sda=1; Nop();/*應(yīng)答位*/void Ack(void)Sda=0;Nop();Scl=1;Nop();Scl=0;/*反向應(yīng)答位*/void NoAck(void) Sda=
31、1; Nop(); Scl=1; Nop(); Scl=0; /*發(fā)送數(shù)據(jù)子程序,Data為要求發(fā)送的數(shù)據(jù)*/void Send(uchar Data) uchar BitCounter=8; uchar temp; do temp=Data; Scl=0; Nop(); if(temp&0 x80)=0 x80) Sda=1; else Sda=0; Scl=1; temp=Data1; Data=temp; BitCounter-; while(BitCounter); Scl=0;/*讀一字節(jié)的數(shù)據(jù),并返回該字節(jié)值*/uchar Read(void) uchar temp=0;uchar
32、 temp1=0;uchar BitCounter=8;Sda=1;doScl=0;Nop();Scl=1;Nop();if(Sda)temp=temp|0 x01;elsetemp=temp&0 xfe;if(BitCounter-1)temp1=temp1;temp=temp1;BitCounter-;while(BitCounter);return(temp);void WrToROM(uchar Data,uchar Address,uchar Num) uchar i; uchar *PData; PData=Data; for(i=0;iNum;i+) Start(); Send(
33、0 xa0); Ack(); Send(Address+i); Ack(); Send(*(PData+i); Ack(); Stop(); mDelay(20); void RdFromROM(uchar Data,uchar Address,uchar Num) uchar i; uchar *PData; PData=Data; for(i=0;i0;x-) for(y=110;y0;y-);/寫指令write_1602com(uchar )/*液晶寫入指令函數(shù)*lcd1602_rs=0;/數(shù)據(jù)/指令選擇置為指令lcd1602_rw=0; /讀寫選擇置為寫P0=;/送入數(shù)據(jù)delay(1
34、);lcd1602_en=1;/拉高使能端,為制造有效的下降沿做準(zhǔn)備delay(1);lcd1602_en=0;/en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令/寫數(shù)據(jù)write_1602dat(uchar dat)/*液晶寫入數(shù)據(jù)函數(shù)*lcd1602_rs=1;/數(shù)據(jù)/指令選擇置為數(shù)據(jù)lcd1602_rw=0; /讀寫選擇置為寫P0=dat;/送入數(shù)據(jù)delay(1);lcd1602_en=1; /en置高電平,為制造下降沿做準(zhǔn)備delay(1);lcd1602_en=0; /en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令/初始化void lcd_init(void)write_1602com(0 x38)
35、;/設(shè)置液晶工作模式,意思:16*2行顯示,5*7點(diǎn)陣,8位數(shù)據(jù)write_1602com(0 x0c);/開顯示不顯示光標(biāo)write_1602com(0 x06);/整屏不移動(dòng),光標(biāo)自動(dòng)右移write_1602com(0 x01);/清顯示/=/=/=將按鍵值編碼為數(shù)值=unsigned char coding(unsigned char m) unsigned char k;switch(m)case (0 x11): k=1;break;case (0 x21): k=2;break;case (0 x41): k=3;break;case (0 x81): k=A;break;case
36、 (0 x12): k=4;break;case (0 x22): k=5;break;case (0 x42): k=6;break;case (0 x82): k=B;break;case (0 x14): k=7;break;case (0 x24): k=8;break;case (0 x44): k=9;break;case (0 x84): k=C;break;case (0 x18): k=*;break;case (0 x28): k=0;break;case (0 x48): k=#;break;case (0 x88): k=D;break;return(k);/=按鍵檢測
37、并返回按鍵值=unsigned char keynum(void) unsigned char row,col,i; P1=0 xf0; if(P1&0 xf0)!=0 xf0) Delay5Ms(); Delay5Ms(); if(P1&0 xf0)!=0 xf0) row=P10 xf0; /確定行線i=0;P1=ai; /精確定位while(i4) if(P1&0 xf0)!=0 xf0) col=(P1&0 xff); /確定列線 break; /已定位后提前退出 else i+; P1=ai; else return 0;while(P1&0 xf0)!=0 xf0); return
38、 (row|col); /行線與列線組合后返回 else return 0; /無鍵按下時(shí)返回0/=一聲提示音,表示有效輸入=void OneAlam(void)ALAM=0;Delay5Ms(); ALAM=1;/=二聲提示音,表示操作成功=void TwoAlam(void)ALAM=0;Delay5Ms(); ALAM=1; Delay5Ms();ALAM=0;Delay5Ms(); ALAM=1;/=三聲提示音,表示錯(cuò)誤=void ThreeAlam(void)ALAM=0;Delay5Ms(); ALAM=1; Delay5Ms();ALAM=0;Delay5Ms(); ALAM=1
39、; Delay5Ms();ALAM=0;Delay5Ms(); ALAM=1;/=顯示輸入的N個(gè)數(shù)字,用H代替以便隱藏=void DisplayOne(void)/DisplayOneChar(9+N,1,*);write_1602com(yi+5+N);write_1602dat(*);/=顯示提示輸入=void DisplayChar(void)unsigned char i;if(pass=1)/DisplayListChar(0,1,LockOpen);write_1602com(er);for(i=0;i16;i+)write_1602dat(LockOpeni);elseif(N=
40、0)/DisplayListChar(0,1,Error);write_1602com(er);for(i=0;i16;i+)write_1602dat(Errori);else/DisplayListChar(0,1,start_line);write_1602com(er);for(i=0;i16;i+)write_1602dat(start_linei);void DisplayInput(void)unsigned char i;if(CorrectCont=1)/DisplayListChar(0,0,Input);write_1602com(er);for(i=0;i16;i+)w
41、rite_1602dat(Inputi);/=重置密碼=/=void ResetPassword(void)unsigned char i;unsigned char j;if(pass=0)pass=0;DisplayChar();ThreeAlam();else if(ReInputEn=1)if(N=6)ReInputCont+;if(ReInputCont=2)for(i=0;i6;)if(TempPasswordi=InputDatai)/將兩次輸入的新密碼作對比i+;else/DisplayListChar(0,1,Error);write_1602com(er);for(j=0;
42、j16;j+)write_1602dat(Errorj);ThreeAlam();/錯(cuò)誤提示pass=0;ReInputEn=0;/關(guān)閉重置功能,ReInputCont=0;DisplayChar();break; if(i=6)/DisplayListChar(0,1,ResetOK);write_1602com(er);for(j=0;j16;j+)write_1602dat(ResetOKj);TwoAlam();/操作成功提示 WrToROM(TempPassword,0,6);/將新密碼寫入24C02存儲ReInputEn=0;ReInputCont=0;CorrectCont=0;
43、elseOneAlam();/DisplayListChar(0, 1, again); /顯示再次輸入一次write_1602com(er);for(j=0;j16;j+)write_1602dat(againj);for(i=0;i6;i+)TempPasswordi=InputDatai;/將第一次輸入的數(shù)據(jù)暫存起來N=0;/輸入數(shù)據(jù)位數(shù)計(jì)數(shù)器清零 /=輸入密碼錯(cuò)誤超過三過,報(bào)警并鎖死鍵盤=void Alam_KeyUnable(void)P1=0 x00;ALAM=ALAM;Delay5Ms();/=取消所有操作=void Cancel(void)unsigned char i;uns
44、igned char j;/DisplayListChar(0, 1, start_line); write_1602com(er);for(j=0;j16;j+)write_1602dat(start_linej);TwoAlam();/提示音for(i=0;i6;i+)InputDatai=0;KEY=1;/關(guān)閉鎖ALAM=1;/報(bào)警關(guān)operation=0;/操作標(biāo)志位清零pass=0;/密碼正確標(biāo)志清零ReInputEn=0;/重置輸入充許標(biāo)志清零ErrorCont=0;/密碼錯(cuò)誤輸入次數(shù)清零CorrectCont=0;/密碼正確輸入次數(shù)清零ReInputCont=0;/重置密碼輸入次
45、數(shù)清零 open_led=1;s3_keydown=0;key_disable=0;N=0;/輸入位數(shù)計(jì)數(shù)器清零/=確認(rèn)鍵,并通過相應(yīng)標(biāo)志位執(zhí)行相應(yīng)功能=void Ensure(void)unsigned char i,j;RdFromROM(CurrentPassword,0,6); /從24C02里讀出存儲密碼 if(N=6) if(ReInputEn=0)/重置密碼功能未開啟for(i=0;i6;) if(CurrentPasswordi=InputDatai)i+;else ErrorCont+;if(ErrorCont=3)/錯(cuò)誤輸入計(jì)數(shù)達(dá)三次時(shí),報(bào)警并鎖定鍵盤write_1602c
46、om(er);for(i=0;i16;i+)write_1602dat(Errori);doAlam_KeyUnable();while(1);elseTR0=1;/開啟定時(shí)key_disable=1;/鎖定鍵盤pass=0;break;if(i=6)CorrectCont+;if(CorrectCont=1)/正確輸入計(jì)數(shù),當(dāng)只有一次正確輸入時(shí),開鎖,/DisplayListChar(0,1,LockOpen);write_1602com(er);for(j=0;j16;j+)write_1602dat(LockOpenj);TwoAlam();/操作成功提示音KEY=0;/開鎖pass=1
47、;/置正確標(biāo)志位TR0=1;/開啟定時(shí)open_led=0;/開鎖指示燈亮for(j=0;j6;j+)/將輸入清除InputDatai=0;else/當(dāng)兩次正確輸入時(shí),開啟重置密碼功能/DisplayListChar(0,1,SetNew);write_1602com(er);for(j=0;j16;j+)write_1602dat(SetNewj);TwoAlam(); /操作成功提示ReInputEn=1;/允許重置密碼輸入CorrectCont=0;/正確計(jì)數(shù)器清零 else/=當(dāng)?shù)谝淮问褂没蛲浢艽a時(shí)可以用131420對其密碼初始化=if(InputData0=1)&(InputDat
48、a1=3)&(InputData2=1)&(InputData3=4)&(InputData4=2)&(InputData5=0) WrToROM(initpassword,0,6); /強(qiáng)制將初始密碼寫入24C02存儲/DisplayListChar(0,1,initword);/顯示初始化密碼write_1602com(er);for(j=0;j16;j+)write_1602dat(initwordj);TwoAlam();Delay400Ms();TwoAlam();N=0;else/DisplayListChar(0,1,Error);write_1602com(er);for(j=
49、0;j16;j+)write_1602dat(Errorj); ThreeAlam();/錯(cuò)誤提示音pass=0;else/當(dāng)已經(jīng)開啟重置密碼功能時(shí),而按下開鎖鍵,/DisplayListChar(0,1,Er_try);write_1602com(er);for(j=0;j16;j+)write_1602dat(Er_tryj);ThreeAlam();else/DisplayListChar(0,1,Error);write_1602com(er);for(j=0;j16;j+)write_1602dat(Errorj); ThreeAlam();/錯(cuò)誤提示音pass=0;N=0;/將輸入
50、數(shù)據(jù)計(jì)數(shù)器清零,為下一次輸入作準(zhǔn)備 operation=1;/=主函數(shù)=void main(void) unsigned char KEY,NUM;unsigned char i,j; P1=0 xFF; TMOD=0 x11; TL0=0 xB0; TH0=0 x3C; EA=1; ET0=1; TR0=0; Delay400Ms(); /啟動(dòng)等待,等LCM講入工作狀態(tài) lcd_init(); /LCD初始化write_1602com(yi);/日歷顯示固定符號從第一行第0個(gè)位置之后開始顯示for(i=0;i16;i+)write_1602dat(namei);/向液晶屏寫日歷顯示的固定符號部分write_1602com(er);/時(shí)間顯示固定符號寫入位置,從第2個(gè)位置后開始顯示for(i=0;i16;i+)write_1602dat(start_linei);/寫顯示時(shí)間固定符號,兩個(gè)冒號write_1602com(er+9);/設(shè)置光標(biāo)位置write_1602com
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 滬科版八年級物理全一冊《第三章光的世界》單元檢測卷及答案
- 利用元數(shù)據(jù)促進(jìn)數(shù)據(jù)共享協(xié)作
- 蘇教版五年級下冊課內(nèi)閱讀25篇、及課外閱讀材料(含答案)
- 2024高中地理第四章區(qū)域經(jīng)濟(jì)發(fā)展章末整合學(xué)案新人教版必修3
- 2024高中生物第5章生態(tài)系統(tǒng)及其穩(wěn)定性第1節(jié)生態(tài)系統(tǒng)的結(jié)構(gòu)課堂演練含解析新人教版必修3
- 2024高中語文第二單元第7課陸文學(xué)自傳課時(shí)作業(yè)含解析粵教版選修唐宋散文蚜
- 2024高考地理一輪復(fù)習(xí)第十六章第1講資源的跨區(qū)域調(diào)配-以我國西氣東輸為例教案含解析新人教版
- 2024高考?xì)v史一輪復(fù)習(xí)方案專題九走向世界的資本主義市場第22講“蒸汽”的力量與走向整體的世界教學(xué)案+練習(xí)人民版
- 2024高考地理一輪復(fù)習(xí)第一部分自然地理-重在理解第二章地球上的大氣第6講冷熱不均引起大氣運(yùn)動(dòng)學(xué)案新人教版
- (3篇)2024年幼兒園園長年度考核表個(gè)人總結(jié)
- 廣東省廣州市黃埔區(qū)2023-2024學(xué)年第一學(xué)期黃埔廣附教育集團(tuán)七年級數(shù)學(xué)聯(lián)考
- 讀書分享讀書交流會《皮囊》課件
- 07MS101 市政給水管道工程及附屬設(shè)施
- DL∕T 559-2018 220kV~750kV電網(wǎng)繼電保護(hù)裝置運(yùn)行整定規(guī)程
- 店鋪(初級)營銷師認(rèn)證考試題庫附有答案
- 獸藥生產(chǎn)質(zhì)量管理規(guī)范教材教學(xué)課件
- 2024-2029全球及中國電動(dòng)拖拉機(jī)行業(yè)市場發(fā)展分析及前景趨勢與投資發(fā)展研究報(bào)告
- 顱腦損傷的高壓氧治療
- 電梯液晶屏廣告可行性方案
- 2023年上海市初中英語考綱詞匯
評論
0/150
提交評論