基于單片機的電子密碼鎖設(shè)計_第1頁
基于單片機的電子密碼鎖設(shè)計_第2頁
基于單片機的電子密碼鎖設(shè)計_第3頁
基于單片機的電子密碼鎖設(shè)計_第4頁
基于單片機的電子密碼鎖設(shè)計_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

課程設(shè)計課程名稱:專業(yè)課程設(shè)計設(shè)計課題:密碼鎖的設(shè)計指導(dǎo)教師:王忠專業(yè):電子信息工程班級:1282051姓名:江娟娟學(xué)號:128205101二O一五年七月二日電子信息工程專業(yè)課程設(shè)計題單班級1282051學(xué)生江娟娟課程名稱專業(yè)課程設(shè)計課題密碼鎖的設(shè)計設(shè)計要求設(shè)計一個數(shù)字式密碼鎖密碼由4-6位數(shù)字組成密碼相符開鎖,三次不符報警時間可以任意修改密碼可以更新課題發(fā)給日期2023.06.08課程設(shè)計完成日期2023.07.03指導(dǎo)教師王忠評語:評分:摘要在日常的生活和工作中,住宅與部門的平安防范、單位的文件檔案、財務(wù)報表以及一些個人資料的保存多以加鎖的方法來解決。假設(shè)使用傳統(tǒng)的機械式鑰匙開鎖,人們常需攜帶多把鑰匙,使用極不方便,且鑰匙喪失后平安性即大打折扣。隨著科學(xué)技術(shù)的不斷開展,人們對日常生活中的平安保險器件的要求越來越高。為滿足人們對鎖的使用要求,增加其平安性,用密碼代替鑰匙的密碼鎖應(yīng)運而生。密碼鎖具有平安性高、本錢低、功耗低、易操作、記住密碼即可開鎖等優(yōu)點。本系統(tǒng)以STC89C51單片機最小系統(tǒng)為核心,結(jié)合矩陣鍵盤、數(shù)碼管顯示和報警系統(tǒng)組成。系統(tǒng)能完成鎖閉狀態(tài)顯示、密碼輸入錯誤超次〔大于三次〕異常,系統(tǒng)鎖定聲光告警、初始化設(shè)置用戶密碼等根本的密碼鎖的功能。除上述根本的密碼鎖功能外,依據(jù)實際的情況還可以重置密碼?!娟P(guān)鍵字】:電子密碼鎖STC89C51LCD128644×4矩陣鍵盤目錄第一章緒論11.1課題背景和意義11.2電子密碼鎖開展趨勢2第二章總體設(shè)計方案確實定32.1電子密碼鎖設(shè)計的具體要求32.2總體設(shè)計方案選定3第三章系統(tǒng)硬件設(shè)計53.1單片機AT89C51簡介53.1.1主要特性53.1.2引腳功能說明63.3液晶顯示FYD12864的介紹83.3.1根本特性8方框圖8模塊接口說明93.4硬件電路的設(shè)計113.4.1最小系統(tǒng)的設(shè)計103.4.2芯片擦除133.4.3開鎖機構(gòu)143.4.4鍵盤設(shè)計14顯示電路設(shè)計163.5電路設(shè)計總圖16第四章程序設(shè)計184.1主程序模塊194.2鍵盤掃描及識別子程序194.3系統(tǒng)模塊密碼設(shè)置子程序204.4系統(tǒng)調(diào)試21設(shè)計總結(jié)24參考文獻(xiàn)26附錄Ⅰ電子密碼鎖整體設(shè)計圖27附錄II電子密碼鎖整體PCB設(shè)計圖28附錄III電子密碼鎖程序源代碼29第一章緒論1.1課題背景和意義隨著電子技術(shù)和計算機技術(shù)的飛速開展,單片機性能不斷完善,性能價格比顯著提高,技術(shù)日趨完善。由于單片機具有體積小、重量輕、價格廉價、功耗低、控制功能強及運算速度快等特點,因而在國民經(jīng)濟建設(shè)、軍事及家用電器等各個領(lǐng)域均得到了廣泛的應(yīng)用。本設(shè)計利用單片機及附加電子元器件實現(xiàn)數(shù)據(jù)采集和控制算法,來完成某一實際功能,檢驗并提高同學(xué)對整體電路設(shè)計和把握能力,了解單片機系統(tǒng)設(shè)計流程,以及電路板的實際制作和調(diào)試能力。同時也加強對數(shù)字電路、單片機和微機原理等課程知識的實際應(yīng)用能力,也為同類產(chǎn)品的進(jìn)一步開展奠定理論和實踐根底。隨著人們生活水平的提高和平安意識的加強,對平安的要求也就越來越高。鎖自古以來就是把守護門的鐵將軍,人們對它要求甚高,既要平安可靠的防盜,又要使用方便,這也是制鎖者長期以來研制的主題。隨著電子技術(shù)的開展,各類電子產(chǎn)品應(yīng)運而生,電子密碼鎖就是其中之一。據(jù)有關(guān)資料介紹,電子密碼鎖的研究從20世紀(jì)30年代就開始了,在一些特殊場所早就有所應(yīng)用。這種鎖是通過鍵盤輸入一組密碼完成開鎖過程。研究這種鎖的初衷,就是為提高鎖的平安性。由于電子鎖的密鑰量〔密碼量〕極大,可以與機械鎖配合使用,并且可以防止因鑰匙被仿制而留下平安隱患。電子鎖只需記住一組密碼,無需攜帶金屬鑰匙,免除了人們攜帶金屬鑰匙的煩惱,而被越來越多的人所欣賞。電子鎖的種類繁多,例如數(shù)碼鎖,指紋鎖,磁卡鎖,IC卡鎖,生物鎖等。但較實用的還是按鍵式電子密碼鎖。20世紀(jì)80年代后,隨著電子鎖專用集成電路的出現(xiàn),電子鎖的體積縮小,可靠性提高,本錢較高,是適合使用在平安性要求較高的場合,且需要有電源提供能量,使用還局限在一定范圍,難以普及,所以對它的研究一直沒有明顯進(jìn)展。目前,在西方興旺國家,電子密碼鎖技術(shù)相對先進(jìn),種類齊全,電子密碼鎖已被廣泛應(yīng)用于智能門禁系統(tǒng)中,通過多種更加平安,更加可靠的技術(shù)實現(xiàn)大門的管理。在我國電子鎖整體水平尚處于國際上70年代左右,電子密碼鎖的本錢還很高,市場上仍以按鍵電子鎖為主,按鍵式和卡片鑰匙式電子鎖已引進(jìn)國際先進(jìn)水平,現(xiàn)國內(nèi)有幾個廠生產(chǎn)供給市場。但國內(nèi)自行研制開發(fā)的電子鎖,其市場結(jié)構(gòu)尚未形成,應(yīng)用還不廣泛。國內(nèi)的不少企業(yè)也引進(jìn)了世界上先進(jìn)的技術(shù),開展前景非??捎^。希望通過不斷的努力,使電子密碼鎖在我國也能得到廣泛應(yīng)用1.2電子密碼鎖開展趨勢電子密碼鎖應(yīng)用于金融業(yè),其根本的作用是“授權(quán)〞,即被“授權(quán)〞的人才可以存取錢、物。廣義上講,金融業(yè)的“授權(quán)〞主要包括以下三種層次的內(nèi)容:1、授予保管權(quán),如使用保管箱、保險箱和保險柜;2、授予出入權(quán),如出入金庫、運鈔車和保管室;3、授予流通權(quán),如自動存取款。目前,金融行業(yè)電子密碼鎖的應(yīng)用主要集中在前兩個層面上。下面將介紹幾種在金融行業(yè)中使用較多的電子密碼鎖以及它們的技術(shù)開展方向。當(dāng)然,以上所說的授權(quán)技術(shù)再高超,都必須由精良的“鎖具〞擔(dān)當(dāng)承載結(jié)構(gòu)部件,實現(xiàn)開啟、閉鎖的功能,而且承當(dāng)實體防護作用,抵抗住或盡量延遲破壞行為,讓電子密碼鎖“軟、硬不吃〞。一般情況下,鎖具防盜的關(guān)鍵是鎖身外殼、閉鎖的部件的強度、鎖止型式、配合間隙和布局。提高電子密碼鎖之防護能力的必然途徑是報警,在金融業(yè)的許多場所有人值守、有電視監(jiān)控,具有報警功能,可以綜合物理防范和人力防范兩種作用。報警的前提是具備探測功能,根據(jù)電子密碼鎖的使用場所和防護要求,可選擇多種多樣的探測手段。在中國的城市金融業(yè)中,實現(xiàn)聯(lián)網(wǎng)報警已經(jīng)成為對各金融網(wǎng)點的根本要求。根據(jù)國內(nèi)外的實踐經(jīng)驗,金融業(yè)實行平安防范風(fēng)險等級很有必要,即依據(jù)使用的防盜報警器材的性能、安裝布局和人員值守狀況等,可以評估被防護物或區(qū)域的防護能力,得出風(fēng)險等級,其中,電子密碼鎖的性能至關(guān)重要。由于數(shù)字、字符、圖形圖像、人體生物特征和時間等要素均可成為鑰匙的電子信息,組合使用這些信息能夠使電子密碼鎖獲得高度的保密性,如防范森嚴(yán)的金庫,需要使用復(fù)合信息密碼的電子密碼鎖,這樣對盜賊而言是比擬困難的。組合使用信息也能夠使電子密碼鎖獲得無窮擴展的可能,使產(chǎn)品多樣化,對用戶而言是非常實用的一款產(chǎn)品。第二章總體設(shè)計方案確實定2.1電子密碼鎖設(shè)計的具體要求〔1〕本設(shè)計為了防止密碼被竊取要求在輸入密碼時在LCD屏幕上顯示*號。〔2〕設(shè)計開鎖密碼位六位密碼的電子密碼鎖?!?〕能夠在LCD顯示密碼正確時顯示密碼正確,密碼錯誤時顯示密碼錯誤,輸入密碼時顯示進(jìn)入界面?!?〕實現(xiàn)輸入密碼錯誤超過限定的三次電子密碼鎖定?!?〕4×4的矩陣鍵盤其中包括0-9的數(shù)字鍵和A-F的功能鍵〔6〕本產(chǎn)品具備報警功能,當(dāng)輸入密碼錯誤時蜂鳴器響并且LED燈亮。〔7〕密碼可以由用戶自己修改設(shè)定〔只支持6位密碼〕,修改密碼之前必須再次輸入密碼,在輸入新密碼時候需要二次確認(rèn),以防止誤操作。2.2總體設(shè)計方案選定方案一:采用數(shù)字電路控制。用以74LS112雙JK觸發(fā)器構(gòu)成的數(shù)字邏輯電路作為密碼鎖的核心控制,共設(shè)了9個用戶輸入鍵,其中只有4個是有效的密碼按鍵,其它的都是干擾按鍵,假設(shè)按下干擾鍵,鍵盤輸入電路自動清零,原先輸入的密碼無效,需要重新輸入;如果用戶輸入密碼的時間超過10秒〔一般情況下,用戶不會超過10秒,假設(shè)用戶覺得不便,還可以修改〕電路將報警20秒,假設(shè)電路連續(xù)報警三次,電路將鎖定鍵盤2分鐘,防止他人的非法操作。采用數(shù)字電路設(shè)計的方案好處就是設(shè)計簡單但控制的準(zhǔn)確性和靈活性差。故不采用。方案二:采用一種是用以AT89S51為核心的單片機控制方案。選用單片機AT89S51作為本設(shè)計的核心元件,利用單片機靈活的編程設(shè)計和豐富的IO端口,及其控制的準(zhǔn)確性,實現(xiàn)根本的密碼鎖功能。在單片機的外圍電路外接輸入鍵盤用于密碼的輸入和一些功能的控制,外接LCD1602顯示器用于顯示作用。其原理如下列圖2.1所示:返回單片機微控制器輸入密碼返回單片機微控制器輸入密碼電磁鎖密碼正確?電磁鎖密碼正確?N開鎖驅(qū)動電路Y開鎖驅(qū)動電路圖2.1單片機控制密碼鎖原理圖可以看出方案二控制靈活準(zhǔn)確性好且保密性強還具有擴展功能,根據(jù)現(xiàn)實生活的需要此次設(shè)計采用此方案第三章系統(tǒng)硬件設(shè)計3.1單片機AT89C51簡介AT89C51是美國ATMEL公司生產(chǎn)的低功耗,高性能CMOS8位單片機,片內(nèi)含4kbytes的可系統(tǒng)編程的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)8051指令系統(tǒng)及引腳。它集Flash程序存儲器,既可在線編程〔ISP〕也可用傳統(tǒng)方法進(jìn)行編程及通用8位微處理器于單片芯片中,ATMEL公司的功能強大,低價位AT89S51單片機可為您提供許多高性價比的應(yīng)用場合,可靈活應(yīng)用于各種控制領(lǐng)域。3.1.1主要特性①與MCS-51兼容②?4K字節(jié)可編程閃爍存儲器③?壽命:1000寫/擦循環(huán)④?數(shù)據(jù)保存時間:10年⑤?全靜態(tài)工作:0Hz-24Hz⑥三級程序存儲器鎖定⑦128*8位內(nèi)部RAM⑧32可編程I/O線⑨兩個16位定時器/計數(shù)器⑩?5個中斷源?可編程串行通道?低功耗的閑置和掉電模式??片內(nèi)振蕩器和時鐘電路3.1.2引腳功能說明圖3.1單片機引腳圖Vcc:電源電壓GND:接地P0口:P0口是一組8位漏極開路型雙向I/0口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時,每位能驅(qū)動8個TTL邏輯門電路,對端口寫“1〞可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址〔低8位〕和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。在F1ash編程時,P0口接收指令字節(jié),而在程序校驗時,輸出指令字節(jié),校驗時,要求外接上拉電阻。P1口:Pl是一個帶內(nèi)部上拉電阻的8位雙向I/O口,Pl的輸出緩沖級可驅(qū)動〔吸收或輸出電流〕4個TTL邏輯門電路。對端口寫“l(fā)〞,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流〔IIL〕,F(xiàn)lash編程和程序校驗期間,Pl接收低8位地址。P2口:P2是一個帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級可驅(qū)動〔吸收或輸出電流〕4個TTL邏輯門電路。對端口寫“1〞,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流〔IIL〕,在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器〔例如執(zhí)行MOVX@DPTR指令〕時,P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器〔如執(zhí)行MOVX@Ri指令〕時,P2口線上的內(nèi)容〔也即特殊功能存放器〔SFR〕區(qū)中P2存放器的內(nèi)容〕,在整個訪問期間不改變。Flash編程或校驗時,P2亦接收高位地址和其它控制信號。P3口:P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/0口。P3口輸出緩沖級可驅(qū)動〔吸收或輸出電流〕4個TTL邏輯門電路。P3口除了作為一般的I/0口線外,更重要的用途是它的第二功能,如下表所示:P3口還接收一些用于Flash閃速存儲器編程和程序校驗的控制信號RST:復(fù)位輸入。當(dāng)振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將使單片機復(fù)位。WDT溢出將使該引腳輸出高電平,設(shè)置SFRAUXR的DISRT0位〔地址8EH〕可翻開或關(guān)閉該功能。DISRT0位缺省為RESET輸出高電平翻開狀態(tài)。ALE/PROG:當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE〔地址鎖存允許〕輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部存儲器,ALE仍以時鐘振蕩頻率的1/6輸出固定的正脈沖信號,因此它可對外輸出時鐘或用于定時目的。PSEN:程序儲存允許〔PSEN〕輸出是外部程序存儲器的讀選通信號,當(dāng)AT89S51由外部程序存儲器取指令〔或數(shù)據(jù)〕時,每個機器周期兩次PSEN有效,即輸出兩個脈沖。當(dāng)訪問外部數(shù)據(jù)存儲器,沒有兩次有效的PSEN信號。EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲器〔地址為0000H-FFFFH〕,EA端必須保持低電平〔接地〕。需注意的是:如果加密位LB1被編程,復(fù)位時內(nèi)部會鎖存EA端狀態(tài)。如EA端為高電平〔接Vcc端〕,CPU那么執(zhí)行內(nèi)部程序存儲器中的指令。F1ash存儲器編程時,該引腳加上+12V的編程電壓Vpp。XTALl:振蕩器反相放大器及內(nèi)部時鐘發(fā)生器的輸入端。XTAL2:振蕩器反相放大器的輸出端。液晶顯示FYD12864的介紹3.3.1根本特性低電源電壓〔VDD:+3.0--+5.5V〕;顯示分辨率:128×64點;內(nèi)置漢字字庫,提供8192個16×16點陣漢字(簡繁體可選);內(nèi)置128個16×8點陣字符;2MHZ時鐘頻率;顯示方式:STN、半透、正顯;驅(qū)動方式:1/32DUTY,1/5BIAS;驅(qū)動方式:1/32DUTY,1/5BIAS;視角方向:6點;通訊方式:串行、并口可選;工作溫度:0℃-+55℃,存儲溫度:-20℃-+60℃;3.2方框圖圖3.2方框圖3.3.3模塊接口說明表3.1串口接口說明圖*注釋1:如在實際應(yīng)用中僅使用串口通訊模式,可將PSB接固定低電平,也可以將模塊上的J8和“GND〞用焊錫短接。*注釋2:模塊內(nèi)部接有上電復(fù)位電路,因此在不需要經(jīng)常復(fù)位的場合可將該端懸空。*注釋3:如背光和模塊共用一個電源,可以將模塊上的JA、JK用焊錫短接。表3.2并行接口說明圖管腳號管腳名稱電平管腳功能描述1VSS0V電源地2VCC3.0+5V電源正3V0-比照度〔亮度〕調(diào)整4RS(CS〕H/LRS=“H〞,表示DB7——DB0為顯示數(shù)據(jù)RS=“L〞,表示DB7——DB0為顯示指令數(shù)據(jù)5R/W(SID)H/LR/W=“H〞,E=“H〞,數(shù)據(jù)被讀到DB7——DB0R/W=“L〞,E=“H→L〞,DB7——DB0的數(shù)據(jù)被寫到IR或DR6E(SCLK)H/L使能信號7DB0H/L三態(tài)數(shù)據(jù)線8DB1H/L三態(tài)數(shù)據(jù)線9DB2H/L三態(tài)數(shù)據(jù)線10DB3H/L三態(tài)數(shù)據(jù)線11DB4H/L三態(tài)數(shù)據(jù)線12DB5H/L三態(tài)數(shù)據(jù)線13DB6H/L三態(tài)數(shù)據(jù)線14DB7H/L三態(tài)數(shù)據(jù)線15PSBH/LH:8位或4位并口方式,L:串口方式〔見注釋1〕16NC-空腳17/RESETH/L復(fù)位端,低電平有效〔見注釋2〕18VOUT-LCD驅(qū)動電壓輸出端19AVDD背光源正端〔+5V〕〔見注釋3〕20KVSS背光源負(fù)端〔見注釋3〕*注釋1:如在實際應(yīng)用中僅使用并口通訊模式,可將PSB接固定高電平,也可以將模塊上的J8和“VCC〞用焊錫短接。*注釋2:模塊內(nèi)部接有上電復(fù)位電路,因此在不需要經(jīng)常復(fù)位的場合可將該端懸空。*注釋3:如背光和模塊共用一個電源,可以將模塊上的JA、JK用焊錫短接。3.4硬件電路的設(shè)計本設(shè)計單片機硬件資源的分配:P0.0~P0.7用于LCD液晶顯示作用。P3.0、P3.7用于蜂鳴器和報警燈的控制。P2.0用于開鎖電路的控制。P1.0~P1.7用于鍵盤電路的控制。P2.0~P2.4用于LCD顯示模塊的控制端口的控制。圖3.3硬件電路圖3.4.1最小系統(tǒng)的設(shè)計當(dāng)MCS-5l系列單片機的復(fù)位引腳RST(全稱RESET)出現(xiàn)2個機器周期以上的高電平時,單片機就執(zhí)行復(fù)位操作。如果RST持續(xù)為高電平,單片機就處于循環(huán)復(fù)位狀態(tài)。根據(jù)應(yīng)用的要求,復(fù)位操作通常有兩種根本形式:上電復(fù)位和開關(guān)復(fù)位。圖3.3即為手動〔開關(guān)〕復(fù)位電路。圖3.4手動復(fù)位電路復(fù)位后的狀態(tài)a、復(fù)位后PC值為0000H,說明復(fù)位后的程序從0000H開始執(zhí)行。b、SP值為07H,說明堆棧底部在07H,一般需要重新設(shè)置SP值。c、P0~P3口值為FFH。P0~P3口用作輸入口時,必須先寫入“1〞。單片機在復(fù)位后,已使P0~P3口每一端線為“1〞,為這些端線用作輸入口做好了準(zhǔn)備。WDT溢出將使該引腳輸出高電平,所以本設(shè)計采用圖3.4的手動復(fù)位電路:圖3.5本設(shè)計手動復(fù)位電路AT89S51中有一個用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個放大器與作為反應(yīng)元件的片外石英晶體或陶瓷諧振器一起構(gòu)成自激振蕩器,振蕩電路參見圖3.5。外接石英晶體〔或陶瓷諧振器〕及電容Cl、C2接在放大器的反應(yīng)回路中構(gòu)成并聯(lián)振蕩電路。對外接電容Cl、C2雖然沒有十分嚴(yán)格的要求,但電容容量的大小會輕微影響振蕩頻率的上下、振蕩器工作的穩(wěn)定性、起振的難易程序及溫度穩(wěn)定性。如果使用石英晶體,我們推薦電容使用30pF±10pF,而如使用陶瓷諧振器建議選擇40pF±10F。用戶也可以采用外部時鐘。采用外部時鐘的電路如圖1所示。這種情況下,外部時鐘脈沖接到XTAL1端,即內(nèi)部時鐘發(fā)生器的輸入端,XTAL2那么懸空。由于外部時鐘信號是通過一個2分頻觸發(fā)器后作為內(nèi)部時鐘信號的,所以對外部時鐘信號的占空比沒有特殊要求,但最小高電平持續(xù)時間和最大的低電平持續(xù)時間應(yīng)符合產(chǎn)品技術(shù)條件的要求。圖3.6單片機自激震蕩電路由于單片機有內(nèi)部振蕩器,所以本設(shè)計采用圖3.6的晶振電路:圖3.7晶振電路3.4.2芯片擦除整個PEROM陣列和三個鎖定位的電擦除可通過正確的控制信號組合,并保持ALE管腳處于低電平10ms來完成。在芯片擦操作中,代碼陣列全被寫“1〞且在任何非空存儲字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。此外,AT89S51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時器,計數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個硬件復(fù)位為止。3.4.3開鎖機構(gòu)用戶通過LCD提示信息,用鍵盤輸入正確密碼,從而到達(dá)開鎖的目的。當(dāng)用戶輸入的密碼正確并且是在按下確定鍵的話,單片機便輸出開門信號,送到開鎖驅(qū)動電路,然后驅(qū)動電磁鎖,到達(dá)開門的目的。電路驅(qū)動和開鎖兩級組成。由D5、R1、T10組成驅(qū)動電路,其中T10可以選擇普通的小功率三極管如9014、9018都可以滿足要求。D5作為開鎖的提示;由D6、C24、T11組成。其中D6、C24是為了消除電磁鎖可能產(chǎn)生的反向高電壓以及可能產(chǎn)生的電磁干擾。T11可選用中功率的三極管如8050,電磁鎖的選用要視情況而定,但是吸合力要足夠且由一定的余量。在本次設(shè)計中,基于節(jié)省材料的原那么,暫時用發(fā)光二極管代替電磁鎖,發(fā)光管亮,表示開鎖;滅,表示沒有開鎖。圖3.8密碼鎖開鎖機構(gòu)電路圖3.4.4鍵盤設(shè)計本設(shè)計就采用行列式鍵盤,同時也能減少鍵盤與單片機接口時所占用的I/O線的數(shù)目,在按鍵比擬多的時候,通常采用這樣方法。每一條水平〔行線〕與垂直線〔列線〕的交叉處不相通,而是通過一個按鍵來連通,利用這種行列式矩陣結(jié)構(gòu)只需要N條行線和M條列線,即可組成具有N×M個按鍵的鍵盤。在這種行列式矩陣鍵盤非鍵盤編碼的單片機系統(tǒng)中,鍵盤處理程序首先執(zhí)行等待按鍵并確認(rèn)有無按鍵按下的程序段。4×4矩陣鍵盤的工作原理在鍵盤中按鍵數(shù)量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式,如圖5所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口〔如P1口〕就可以構(gòu)成4*4=16個按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比方再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線那么只能多出一鍵〔9鍵〕。由此可見,在需要的鍵數(shù)比擬多時,采用矩陣法來做鍵盤是合理的。掃描原理把每個鍵都分成水平和垂直的兩端接入,比方說掃描碼是從垂直的入,那就代表那一行所接收到的掃描碼是同一個bit,而讀入掃描碼的那么是水平,掃描的動作是先輸入掃描碼,再去讀取輸入的值,經(jīng)過比對之后就可知道是哪個鍵被按下。比方說掃描碼送入01111111,前面的0111是代表此時掃描第一行P1.0列,而后面的1111是讓讀取的4行接腳先設(shè)為VDD,假設(shè)此時第一行的第三列按鍵被按下,那讀取的結(jié)果就會變成01111101〔注意1111變成1101〕,其中LSB的第三個bit會由1變成0,這是因為這個按鍵被按下之后,會被垂直的掃描碼電位short,而把讀取的LSB的bit電位拉到0,此即為掃描原理。由於這種按鍵是機械式的開關(guān),當(dāng)按鍵被按下時,鍵會震動一小段時間才穩(wěn)定,為了防止讓8051誤判為屢次輸入同一按鍵,我們必須在偵測到有按鍵被按下,就Delay一小段時間,使鍵盤以達(dá)穩(wěn)定狀態(tài),再去判讀所按下的鍵,就可以讓鍵盤的輸入穩(wěn)定。圖3.8為鍵盤整體??驁D:圖3.9鍵盤整體模框圖3.4.5顯示電路設(shè)計顯示設(shè)計采用字符型液晶屏設(shè)計,由單片機的p0口控制顯示,由p2.0~p2.4控制lcd的控制端口。本設(shè)計采用以下液晶顯示設(shè)計:圖3.10LCD液晶顯示電路抓圖3.5電路設(shè)計總圖Proteus軟件是LabcenterElectronics公司的一款電路設(shè)計與仿真軟件,它包括ISIS、ARES等軟件模塊,ARES模塊主要用來完成PCB的設(shè)計,而ISIS模塊用來完成電路原理圖的布圖與仿真。Proteus的軟件仿真基于VSM技術(shù),它與其他軟件最大的不同也是最大的優(yōu)勢就在于它能仿真大量的單片機芯片,比方MCS-51系列、PIC系列等等,以及單片機外圍電路,比方鍵盤、LED、LCD等等。通過Proteus軟件的使用我們能夠輕易地獲得一個功能齊全、實用方便的單片機實驗室。本密碼鎖采用proteus進(jìn)行電路圖設(shè)計,經(jīng)過元件選型,用萬能實驗版進(jìn)行硬件焊接,以實現(xiàn)硬件局部。下列圖為proteus設(shè)計的密碼鎖電路圖整體抓圖圖3.11總電路圖第四章程序設(shè)計因設(shè)計主要是作用匯編語言來開發(fā)的51單片機工程程序,所以首先必須有一個可以在WindowsXP或Windowsvista操作系統(tǒng)下執(zhí)行的匯編語言編譯器,本設(shè)計采用Keil編譯器進(jìn)行編程,因為它可以支持一系列的51單片機。開始初始化初始化顯示初始密碼顯示初始密碼全部清零全部清零輸入第一位輸入第一位輸入下一位輸入下一位輸入第六位輸入第六位比擬顯示錯誤比擬顯示錯誤N顯示開鎖Y顯示開鎖圖4.1主程序的流程圖4.1主程序模塊主程序主要是完成系統(tǒng)初始化、設(shè)置中斷向量、檢查有無鍵按下、以及調(diào)用顯示等等。主程序局部如下所示:voidmain(void){ LCD_init();//液晶參數(shù)初始化設(shè)置 LCD_clear();//清屏 init_display();//初始化顯示漢字 LCD_write_com(0x98+3); while(1) { keyboardscan();//鍵盤掃描,看是否有按鍵按下 display(); refresh(); }}4.2鍵盤掃描及識別子程序鍵盤采用查詢的方式,放在主程序中,當(dāng)沒有按鍵按下的時候,單片機循環(huán)主程序,一旦有按鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理,處理結(jié)束再返回。其程序流程如圖4.2所示圖4.2鍵盤掃描程序流程圖4.3系統(tǒng)模塊密碼設(shè)置子程序由于設(shè)計是分模塊化進(jìn)行,所以子程序是整體軟件系統(tǒng)的組成局部,子程序不但可以使程序化整為零,使其復(fù)雜簡單化,同時也方便閱讀,修改等,每個功能模塊都有它自己的子程序,在本設(shè)計中是用LCD顯示數(shù)據(jù),所以就要用到顯示子程序,設(shè)計中用的是矩陣鍵盤,所以就用到鍵盤掃描子程序,例如還有顯示初始化子程序、LCD忙檢測子程序、關(guān)閉狀態(tài)顯示子程序、開鎖狀態(tài)顯示子程序、密碼輸入及修改狀態(tài)顯示子程序、密碼輸入錯誤后的提示子程序等。如下列圖為密碼修改子程序流程圖選擇模選擇模式式舊密碼輸入新密碼輸入存入緩存再次輸入密碼比擬密碼重新輸入返回YN是否大于3次鎖定NY圖4.3設(shè)置密碼子程序4.4系統(tǒng)調(diào)試在硬件支持的環(huán)境下,用proteus設(shè)計好的電路,Keil編好的程序編譯成芯片可識別的S51文件,利用PC機寫進(jìn)proteus程序圖芯片內(nèi)進(jìn)行仿真測試,并對其出現(xiàn)的錯誤進(jìn)行修改,由圖4.4~圖4.8可看出最終調(diào)試成功。圖4.4keil編譯程序成功圖4.5keil生成hex文件圖4.6proteus調(diào)用keil的hex文件進(jìn)行仿真圖4.7仿真成功密碼正確圖4.8密碼正確綠燈亮設(shè)計總結(jié)課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)開展的日新日異,單片機已經(jīng)成為當(dāng)今計算機應(yīng)用中空前活潑的領(lǐng)域,在生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌握單片機的開發(fā)技術(shù)是十分重要的?;貞浧鸫舜握n程設(shè)計,我仍感慨頗多,確實,從選題到定稿,從理論到實踐,在接近兩星期的日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的東西,同時不僅可以穩(wěn)固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會效勞,從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的缺乏之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比方說不懂一些元器件的使用方法,對單片機匯編語言掌握得不好,通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識重新溫故。通過這次單片機課程設(shè)計,我不僅加深了對單片機理論的理解,將理論好地應(yīng)用到實際當(dāng)中去,而且我還學(xué)會了如何去培養(yǎng)我們的創(chuàng)新精神,而不斷地戰(zhàn)勝自己,超越自己。創(chuàng)新可以是在原有的根底上進(jìn)行改良之功能不斷完善,成為自己的東西。俗話說“好的開始是成功的一半〞。說起課程設(shè)計,我認(rèn)為最重要的就是做好設(shè)計的預(yù)習(xí),認(rèn)真的研究老師給的題目,選一個自己有興趣的題目。其次,老師對實驗的講解要一絲不茍的去聽去想,因為只有都明白了,做起設(shè)計就會事半功倍,如果沒弄明白,就迷迷糊糊的去選題目做設(shè)計,到頭來一點收獲也沒有。最后,要重視程序的模塊化,修改的方便,也要注重程序的調(diào)試,掌握其方法。軟件的編程也要我們不斷的調(diào)試,最終一個能完成課程設(shè)計的勞動成果出來了,很快樂它能按著設(shè)計的思想與要求運動起來。當(dāng)然,這其中也有很多問題,第一、不夠細(xì)心比方由于粗心大意接錯了線,由于對課本理論的不熟悉導(dǎo)致編程出現(xiàn)錯誤。第二,是在學(xué)習(xí)態(tài)度上,這次課程設(shè)計是對我的學(xué)習(xí)態(tài)度的一次檢驗。對于這次單片機綜合課程實習(xí),我的第一大心得體會就是作為一名工程技術(shù)人員,要求具備的首要素質(zhì)絕對應(yīng)該是嚴(yán)謹(jǐn)。我們這次實習(xí)所遇到的多半問題多數(shù)都是由于我們不夠嚴(yán)謹(jǐn)。第三,在做人上,我認(rèn)識到,無論做什么事情,只要你足夠堅強,有足夠的毅力與決心,有足夠的挑戰(zhàn)困難的勇氣,就沒有什么辦不到的。這次課程設(shè)計終于順利完成了,在設(shè)計中遇到了很多編程問題,最后在老師的辛勤指導(dǎo)下,終于游逆而解。同時,在老師那里我學(xué)得到很多實用的知識。在此對老師以及給過我?guī)椭乃型瑢W(xué)再次表示忠心的感謝!參考文獻(xiàn)[01]何宏主編.《單片機原理與接口技術(shù)》.北京:國防工業(yè)出版社.2006.07[02]楊西明,朱騏主編.《單片機編程與應(yīng)用入門》.北京:機械工業(yè)出版社.2004.06[03]先鋒工作室編著.《單片機程序設(shè)計實例》.北京:清華大學(xué)出版社.2003.01[04]謝宜仁主編.《單片機實用技術(shù)問答》.北京:人民郵電出版社.2003.02[05]梁麗.《電子密碼鎖的計算機仿真設(shè)計》.計算機仿真.2005[06]房小翠,王金鳳編著.《單片機實用系統(tǒng)設(shè)計技術(shù)》.北京:國防工業(yè)出版社.1999.06[07]王寬仁.《可靠平安的智能密碼鎖.電子技術(shù)應(yīng)用》.2001[08]董繼成.《能防止屢次試探密碼的單片機密碼鎖.國外電子元器件》.2004.3[09]李朝清.《PC機及單片機數(shù)據(jù)通信技術(shù)》.北京:北京航空航天大學(xué)出版社.1999.[10]路而紅.《專用集成電路設(shè)計與電子設(shè)計自動化》.北京:清華大學(xué)出版社.2004[11]劉文濤.《MCS-51單片機培訓(xùn)教程〔C51〕版》.電子工業(yè)出版社.2005.8[12]王為青程國鋼.《單片機KeilCx51應(yīng)用開發(fā)技術(shù)》.人民郵電出版社.2007.2[13]范風(fēng)強蘭嬋麗.《單片機語言C51應(yīng)用實戰(zhàn)集錦》.電子工業(yè)出版社.2003.3[14]龔運新.《單片機C語言開發(fā)技術(shù)》.清華大學(xué)出版社.2006.10[15]邵貝貝.《單片機嵌入式應(yīng)用的在線開發(fā)方法》.清華大學(xué)出版社.2006.3[16]王宜懷.《單片機原理及其嵌入式應(yīng)用教程》.北京希望電子出版社.2002.8附錄Ⅰ電子密碼鎖整體設(shè)計圖附錄II電子密碼鎖整體PCB設(shè)計圖附錄III電子密碼鎖程序源代碼#include<reg51.h>#include"lcd12864.h"#include"keyscan.h"http://***********************************************************************// 主程序//***********************************************************************voidmain(void){ LCD_init();//液晶參數(shù)初始化設(shè)置 LCD_clear();//清屏 init_display();//初始化顯示漢字 LCD_write_com(0x98+3); while(1) { keyboardscan();//鍵盤掃描,看是否有按鍵按下 display(); refresh(); }}2、矩陣鍵盤掃描程序#include"reg51.h"#include"keyscan.h"#include"lcd12864.h"ucharKeyValue,temp;ucharj,x,t,st=1;ucharflag;uchartable[6]="123456";//初始密碼uchartable1[6];//裝入按鍵輸入的鍵值uchartable2[6];//裝入更改后的密碼uchartable3[6];voiddelay_nms(unsignedcharx){ unsignedchari,j; for(i=x;i>0;i--) for(j=500;j>0;j--);}//**********************************************************************// 鍵盤掃描子程序,采用逐鍵掃描的方式//**********************************************************************ucharkeyboardscan(){chara=0; P1=0x0f; if(P1!=0x0f)//讀取按鍵是否按下 { delay_nms(2);//延時10ms進(jìn)行消抖 if(P1!=0x0f)//再次檢測鍵盤是否按下 { //測試列 P1=0X0F; switch(P1) { case(0X07): KeyValue=0;break; case(0X0b): KeyValue=4;break; case(0X0d):KeyValue=8;break; case(0X0e): KeyValue=12;break; } //測試行 P1=0XF0; switch(P1) { case(0X70): KeyValue=KeyValue+3;break; case(0Xb0): KeyValue=KeyValue+2;break; case(0Xd0):KeyValue=KeyValue+1;break; case(0Xe0): KeyValue=KeyValue;break; } while((a<50)&&(P1!=0xf0)) //檢測按鍵松手檢測 { delay_nms(2); a++; } delay_nms(1000); temp=1; } } switch(KeyValue) { case(1): KeyValue=0;break; case(12): KeyValue=1;break; case(13): KeyValue=2;break; case(14):KeyValue=3;break; case(8): KeyValue=4;break; case(9): KeyValue=5;break; case(10):KeyValue=6;break; case(4): KeyValue=7;break; case(5): KeyValue=8;break; case(6):KeyValue=9;break; case(15): KeyValue=15;break; default: KeyValue=16;break; }returnKeyValue;}voiddisplay(){uchari;beep=0; while((temp==1)&&(KeyValue>=0&&KeyValue<10))//如果有按鍵按下,那么顯示該按鍵鍵值0~9{ temp=0; if(t==0)table1[i]=KeyValue; elsetable3[i]=KeyValue;LCD_write_data('*'); i++; if(i==6) { LCD_clear(); DisplayCgrom(0x90+1,"密碼認(rèn)證中..."); DisplayCgrom(0x88+2,"請稍等"); for(i=0;i<10;i++) delay_nms(1000); while(1) { for(i=0;i<6;i++) { if(t==0) { if(table[i]=='0'+table1[i])j=1; else{j=0;break;} } if(t==1) { if(table2[i]=='0'+table3[i])j=1; else{j=0;break;} } } LCD_clear(); while(j==1) { DisplayCgrom(0x80+1,"設(shè)計成員信息"); DisplayCgrom(0x90,"學(xué)號姓名"); DisplayCgrom(0x88,"128205101江娟娟"); DisplayCgrom(0x98,"128205125王禮榮"); } while(j==0) { while(flag==2) { DisplayCgrom(0x92,"密碼錯誤!"); DisplayCgrom(0x88,"請及時更改密碼"); while(1) { beep=~beep; delay_nms(3);// DisplayCgrom(0x98+2,"報警中"); } } DisplayCgrom(0x92,"密碼錯誤!"); DisplayCgrom(0x88,"你還可輸入次"); switch(flag) { case(0):DisplayCgrom(0x88+5,"2");break; case(1):DisplayCgrom(0x88+5,"1");break; } for(i=0;i<10;i++) delay_nms(1000); if(flag<=2)break; } if(flag<=2) LCD_clear(); if(flag<=1)init_display(); flag++; if(flag<=2)break; } i=0; }} }voidrefresh(){uchartemp1,i=0;if(KeyValue==15){ temp1=1; LCD_clear(); DisplayCgrom(0x81,"請輸入新密碼"); LCD_write_com(0x90); while(temp1) { keyboardscan(); while(temp) { if((KeyValue>=0&&KeyValue<10)&&(i<=5)) { table2[i]='0'+KeyValue; LCD_write_data('0'+KeyValue); i++; } temp=0; } if(KeyValue==15&&i==6) { i=0; t=1;flag=0; KeyValue=0; temp=temp1=0; LCD_clear(); init_display(); } } }}3、lcd12864液晶顯示程序//**************************************

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論