單片機電子密碼鎖-論文(1).doc_第1頁
單片機電子密碼鎖-論文(1).doc_第2頁
單片機電子密碼鎖-論文(1).doc_第3頁
單片機電子密碼鎖-論文(1).doc_第4頁
單片機電子密碼鎖-論文(1).doc_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

單片機電子密碼鎖-論文【Abstract】This article introduced a design system which using the AT89S51 monolithic manufactures integrated circuit which a simple password locks. In this article, the design mentality and the design proposal of this design is introduced at first, it mainly divides into three big modules: Keyboard control module, digital tube demonstration module, password comparison module. Then it makes the detailed introduction to the main chip. Finally, it comprehensively narrates the system hardware partially,software are partial.This system uses the C language to carry on the software design, realizing the edition, the translation,as well as each piecemeal schematic diagram by PROTEL 99 SE, and encloses detailed programming diagram, flow chart,concrete procedure. This design may realize its function, causing the system to have the practical application, the human nature,intellectualization.【Keywords】 MCU; Determinant keyboard; Digital tube單片機電子密碼鎖設計【摘要】本文介紹了利用AT89S51單片機制作一個簡單密碼鎖的設計系統(tǒng)。文中首先介紹了本設計的設計思路及設計方案,它主要分為三大模塊:鍵盤控制模塊,數(shù)碼管顯示模塊,密碼比較模塊。然后對主要芯片做了詳細介紹。最后全面地敘述了系統(tǒng)的硬件部分,軟件部分。本系統(tǒng)采用C語言進行軟件設計,以及運用PROTEL 99 SE設計的各個分塊原理圖,并附上了詳細的程序設計框圖,流程圖,具體的程序。本設計可實現(xiàn)其功能,使系統(tǒng)更具實用化,人性化,智能化?!娟P鍵詞】單片機;行列式鍵盤;數(shù)碼管目 錄單片機電子密碼鎖(摘要)1單片機電子密碼鎖(英文摘要)2第一章 課題任務與系統(tǒng)方案設計3第二章 系統(tǒng)主要芯片介紹9第三章 硬件電路設計13第四章 軟件設計及實現(xiàn)16結 束 語18致 謝19參 考 文 獻20附 錄22第一章 課題任務與系統(tǒng)方案設計一、課題任務介紹 計一個簡單的電子密碼鎖,用4*4鍵盤組成0-9數(shù)字鍵以及確認鍵、取消功能鍵,用6位7段數(shù)碼管組成顯示電路提示信息,其工作過程如下:加電后,顯示“888888”。輸入密碼時,只逐位顯示“F”,以防止泄露密碼。輸入密碼過程中,如果不小心出現(xiàn)輸入錯誤,可按“取消”鍵清除屏幕,取消次此輸入,此時顯示“888888”。再次輸入需要重新輸入所有6位密碼。當輸入密碼完畢按下“確認”鍵時,單片機將輸入的密碼與設定的密碼比較,若密碼正確,則發(fā)光二極管亮1秒鐘(以此表示密碼鎖打開);若密碼不正確,則紅色發(fā)光二極管亮1秒鐘。二、系統(tǒng)方案設計論證與比較方案一:采用數(shù)字電路控制。其原理方框圖如圖11所示。715單片機電子密碼鎖圖11 數(shù)字密碼鎖電路方案采用數(shù)字密碼鎖電路的好處就是設計簡單。用以74LS112雙JK觸發(fā)器構成的數(shù)字邏輯電路作為密碼鎖的核心控制,共設了9個用戶輸入鍵,其中只有4個是有效的密碼按鍵,其它的都是干擾按鍵,若按下干擾鍵,鍵盤輸入電路自動清零,原先輸入的密碼無效,需要重新輸入;如果用戶輸入密碼的時間超過40秒(一般情況下,用戶不會超過40秒,若用戶覺得不便,還可以修改)電路將報警80秒,若電路連續(xù)報警三次,電路將鎖定鍵盤5分鐘,防止他人的非法操作。電路由兩大部分組成:密碼鎖電路和備用電源(UPS),其中設置UPS電源是為了防止因為停電造成的密碼鎖電路失效,使用戶免遭麻煩。密碼鎖電路包含:鍵盤輸入、密碼修改、密碼檢測、開鎖電路、執(zhí)行電路、報警電路、鍵盤輸入次數(shù)鎖定電路。 方案二:采用一種是用以AT89S51為核心的單片機控制方案。利用單片機靈活的編程設計和豐富的IO端口。其原理如圖12所示。圖12單片機控制方案 通過比較以上兩種方案,單片機方案有較大的活動空間,不但能實現(xiàn)所要求的功能而且能在很大的程度上擴展功能,而且還可以方便的對系統(tǒng)進行升級,所以我們采用后一種方案。三、設計思路分析經過分析,設計具備上面所述功能的電子密碼鎖主要需要解決3個問題。 鍵盤輸入。 數(shù)碼管顯示。 單片機電路以及密碼比較與處理的有關程序設計。1、鍵盤輸入鍵盤是一組按鍵的集合,它是最常用的單片機輸入設備.鍵盤可以分為兩類:獨立連接式和矩陣式。獨立連接式鍵盤是最簡單的鍵盤電路,每個按鍵獨立地接入一根數(shù)據線。平時所有的數(shù)據輸入線都被連接成高電平,當任何一個鍵按下時,與之相連的數(shù)據輸入線將被拉成低電平。要判斷是否有鍵按下,只要用位處理指令即可。這種鍵盤的優(yōu)點是結構簡單,使用方便,但隨著鍵數(shù)的增多占用I/O口線也增加。矩陣式鍵盤,也即通常所講的行列式鍵盤,由行線和列線組成,按鍵位于行、列的交叉點上,行列分別連接到按鍵開關的兩端,行線通過上拉電阻接到高電平。無按鍵按動作時行線處于高電平狀態(tài);有按鍵按下時,交點的行線和列線相通,行線電平狀態(tài)將由與此行線項鏈的列線電平決定。列線電平如果低,則行線電平為低;列線電平如果為高,則行線電平也為高。這是識別矩陣式鍵盤按鍵是否被按下的關鍵所在。由于矩陣鍵盤中行、列線為多鍵公用,各按鍵均影響該鍵所在的行和列的電平,所以必須將行、列線信號配合起來作適當?shù)奶幚?,才能確定閉合鍵所在的位置。矩陣式鍵盤節(jié)省了好多的I/O口,適用于按鍵數(shù)量比較多的場合。本設計的4*4鍵盤即采用矩陣式鍵盤,如圖1-3。圖1-3 4*4鍵盤矩陣式鍵盤通過行列鍵盤掃描的方法可獲取鍵盤輸入的鍵值,從而得知按下的哪個鍵,具體過程如下。(1)查詢是否有鍵按下。單片機向行掃描口輸出全為“0”的掃描碼,然后從列檢測口檢測信號,只要有一列信號不為“1”,則表示有鍵按下,且不為“1”的列即對應為按下的按鍵所在的列。(2)查詢按下按鍵所在的行、列位置。前面已經取得了按下鍵的號,接下來要確定按鍵所在的行,這需要進行逐行掃描,單片機首先使第1行為“0”,其余各行為“1”,接著進行行列檢測,若為全 “1”,表示不在第1行,否則即在第1行;然后使第2行為全 “0”,其余各行為“1”,再進行列檢測,若為全“1”,表示不在第2行;這樣逐行檢測,直到找到按鍵所在的行。當各行都掃描以后仍沒有找到,則放棄掃描,認為是鍵的錯誤動作。(3)對得到的行號和列號譯碼,得到鍵值。對于4*4的行列式鍵盤,因為按鍵的位置由行號和列號唯一確定,且行列各4位,所以用一個字節(jié)(8位)來對鍵值編碼是很合適的。本設計中,將字節(jié)的高4位(D7、D6、D5、D4)表示列號(4、3、2、1),低4位(D3、D2、D1、D0)表示行號(4、3、2、1),比如11H(00010001)表示第1行第1列,21H(00100001)表示第1行第2列,24H(00100100)表示第3行第2列。在掃描鍵盤過程中,應該注意以下問題。(1)當按下或松開按鍵時,按鍵會產生機械抖動。這種抖動經常發(fā)生在按下或松開瞬間,一般持續(xù)幾到十幾秒,抖動時間隨按鍵的結構不同而不同,。在掃描鍵盤過程中,必須想辦法消除按鍵,否則會引起錯誤。消除按鍵抖動可以用硬件電路來實現(xiàn),例如,利用R-S觸發(fā)器來鎖定按鍵狀態(tài)。以消除抖動的影響。也可以用現(xiàn)成的專用消抖電路,如MC14490就是六路消抖電路。較為簡單的方法就是用軟件延時方法來消除按鍵的抖動,也就是說,一旦發(fā)現(xiàn)有鍵按下,就延時20ms以后再測按鍵的狀態(tài)。這樣就避開按鍵發(fā)生抖動的那一段時間,使CPU能可靠地讀按鍵狀態(tài)。在編制鍵盤掃描程序時,只要發(fā)現(xiàn)按鍵狀態(tài)有變化,即無論是按下還是松開,程序都延時20ms以后再進行其他操作。(2)在鍵盤掃描中,應防止按一次鍵而有多個對應鍵值輸入的情況。這種情況的發(fā)生是由于鍵掃描速度和鍵處理速度較快,當某一個鍵按下還未松開時鍵掃描程序和鍵處理程序已執(zhí)行了多遍。這樣,由于程序執(zhí)行和按鍵動作不同步而造成按一個鍵有多個鍵值輸入的錯誤狀態(tài)。為避免發(fā)生這種情況,必須保證按一次鍵,CPU只對該鍵做一次處理。為此,在鍵掃描程序中不僅要檢測是否有鍵按下,在有鍵按下的情況,做一次處理,而且在鍵處理完畢后,還應檢測按下的鍵否松開,只有當按下的鍵松開以后,程序才往下執(zhí)行。這樣每按一個鍵,只做一個鍵處理,使二者達到同步,消除按一次鍵有多個鍵值輸入的錯誤情況。根據需要,本設計的4*4鍵盤設定10個數(shù)字鍵(0-9)和2個功能鍵(ENTER和CANCEL),鍵盤布局如圖1-4。圖1-4 鍵盤布局方框圖圖中第4行暫時不用,可以作以后擴充所用。因此根據上面提到的4*4鍵盤的鍵值編碼方法,各按鍵及其編碼對應關系如表1-1。單片機電子密碼鎖按鍵行號列號鍵值編碼01111H(00010001)11221H(00100001)21341H(01000001)31481H(10000001)42112H(00010010)52222H(00100010)62342H(01000010)72482H(10000010)83114H(00010100)93224H(00100100)確認3344H(01000100)取消3484H(10000100)表1-1 4*4鍵盤的鍵值編碼2、數(shù)碼管顯示7段是數(shù)碼管由8個發(fā)光二極管組成,其中包括7個細長型的LED和一個小數(shù)點形的LED,每個LED稱為一個字段,共8段:a、b、c、d、e、f、g、dp,其中dp為小數(shù)點,如圖1-5。圖1-5 數(shù)碼管7段數(shù)碼管可以顯示包括小數(shù)點的0-9數(shù)字和部分的英文字母。為了獲得不同的字型,數(shù)碼管各段所加的電平也不同,編碼也不一樣。字型、字段和編碼關系如表1-2(共陰極)字型D7D6D5D4D3D2D1D0編碼dpgfedcba0001111113F100000110062010110105B3010011114F401100110665011011006D6011111017D700000111078011111117F9011011116FA011101116FB011111007CC0011100139D010111105EE0111100179F0111000171表1-2 7段數(shù)碼管的字型、字段和編碼關系 單片機驅動LED數(shù)碼管有靜態(tài)顯示和動態(tài)掃描顯示兩種方法,其中后者較為常用。動態(tài)掃描方法是用其接口電路把所顯示的8個筆畫字段(a-g和dp)同名端連接在一起,而每一個顯示器的公共極COM各自獨立的接受I/O線控制。CPU向字段輸出端口輸出字型碼時,所有顯示器接收到相同的字型碼,但究竟使用哪個顯示器,則取決于COM端,而這一端是由I/O控制的,由單片機決定何時顯示哪一位。動態(tài)掃描用分時的方法輪流控制各個顯示器的COM端,使各個顯示器輪流點亮。在輪流點亮掃描過程中,每位顯示器的點亮時間極為短暫,但由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應,給人的印象就是一組穩(wěn)定的顯示數(shù)據。動態(tài)顯示需要分時顯示,需要CPU時刻對顯示器件進行數(shù)據刷新,顯示數(shù)據有閃爍感,站用的CPU時間多,但是使用的硬件少,可以大幅度地降低硬件成本和電源的功耗,還可以接生線路板空間。第二章 系統(tǒng)主要芯片介紹一、 AT89S51的簡介AT89S51是美國ATMEL公司生產的低功耗,高性能CMOS8位單片機,片內含4k bytes的可系統(tǒng)編程的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準8051指令系統(tǒng)及引腳。它集Flash程序存儲器既可在線編程(ISP)也可用傳統(tǒng)方法進行編程及通用8位微處理器于單片芯片中,ATMEL公司的功能強大,低價位AT89S51單片機可為您提供許多高性價比的應用場合,可靈活應用于各種控制領域,如圖2-1。圖2-1 二、主要性能參數(shù):與MCS-51產品指令系統(tǒng)完全兼容。4k字節(jié)在系統(tǒng)編程(ISP)Flash閃速存儲器。1000次擦寫周期。4.05.5V的工作電壓范圍。全靜態(tài)工作模式:0Hz33MHz。三級程序加密鎖。1288字節(jié)內部RAM。32個可編程IO口線。2個16位定時計數(shù)器。6個中斷源。全雙工串行UART通道。低功耗空閑和掉電模式。中斷可從空閑模喚醒系統(tǒng)??撮T狗(WDT)及雙數(shù)據指針。掉電標識和快速編程特性。靈活的在系統(tǒng)編程(ISP字節(jié)或頁寫模式)。三、功能特性概述:AT89S51 提供以下標準功能:4k 字節(jié)Flash 閃速存儲器,128字節(jié)內部RAM,32個IO 口線,看門狗(WDT),兩個數(shù)據指針,兩個16 位定時計數(shù)器,一個5 向量兩級中斷結構,一個全雙工串行通信口,片內振蕩器及時鐘電路。同時,AT89S51可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時計數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM 中的內容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復位。四、AT89S51方框圖,如圖2-2單片機電子密碼鎖圖2-2 AT89S51方框圖五、引腳功能說明Vcc:電源電壓。GND:地。P0口:P0口是一組8位漏極開路型雙向I0口,也即地址數(shù)據總線復用口。作為輸出口用時,每位能驅動8個TTL邏輯門電路,對端口寫“l(fā)”可作為高阻抗輸入端用。在訪問外部數(shù)據存儲器或程序存儲器時,這組口線分時轉換地址(低8位)和數(shù)據總線復用,在訪問期間激活內部上拉電阻。在F1ash編程時,P0口接收指令字節(jié),而在程序校驗時,輸出指令字節(jié),校驗時,要求外接上拉電阻。P1口:Pl 是一個帶內部上拉電阻的8位雙向IO口,Pl的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“l(fā)”,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。Flash編程和程序校驗期間,Pl接收低8位地址。端口引腳第二功能P1.5MOSI(用于ISP犏程)P1.6MISO(用于ISP犏程)P1.7SCK (用于ISP犏程)表2-1 P1口功能腳說明P2 口:P2 是一個帶有內部上拉電阻的8 位雙向IO 口,P2 的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電(IIL)。在訪問外部程序存儲器或16位地址的外部數(shù)據存儲器(例如執(zhí)MOVXDPTR指令)時,P2口送出高8位地址數(shù)據。在訪問8 位地址的外部數(shù)據存儲器(如執(zhí)行MOV X Ri 指令)時,P2 口線上的內容(也即特殊功能寄存器(SFR)區(qū)中P2寄存器的內容),在整個訪問期間不改變。RST:復位輸入。當振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將使單片機復位。WDT 溢出將使該引腳輸出高電平,設置SFR AUXR的DISRT0 位(地址8EH)可打開或關閉該功能。DISRT0位缺省為RESET輸出高電平打開狀態(tài)。ALEPROG:當訪問外部程序存儲器或數(shù)據存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部存儲器,ALE 仍以時鐘振蕩頻率的16 輸出固定的正脈沖信號,因此它可對外輸出時鐘或用于定時目的. 要注意的是:每當訪問外部數(shù)據存儲器時將跳過一個ALE脈沖。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH 單元的D0 位置位,可禁止ALE 操作。該位置位后,只有一條M0VX和M0VC指令ALE才會被激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應設置ALE無效。PSEN:程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當AT89S51 由外部程序存儲器取指令(或數(shù)據)時,每個機器周期兩次PSEN有效,即輸出兩個脈沖。當訪問外部數(shù)據存儲器,沒有兩次有效的PSEN信號。EAVPP:外部訪問允許。欲使CPU僅訪問外部程序存儲器(地址為0000HFFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復位時內部會鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行內部程序存儲器中的指令。F1ash存儲器編程時,該引腳加上+12V的編程電壓Vpp。XTALl:振蕩器反相放大器及內部時鐘發(fā)生器的輸入端。XTAL2:振蕩器反相放大器的輸出端。六、AT89S51各模塊介紹1、動態(tài)數(shù)碼顯示模塊該設計中采用8位的動態(tài)數(shù)碼顯示,控制數(shù)碼顯示的數(shù)據由兩部分組成,一部分為筆段亮滅控制的信號輸入由“ABCDEFGH”端口輸入,而控制位顯示的控制信號由“S1S2S3S4S5S6S7S8”端口輸入,同時該動態(tài)數(shù)碼顯示采用共陰數(shù)碼管;具體的電路原理圖如圖2-3所示:圖2-3 動態(tài)數(shù)碼顯示電路原理圖第三章 硬件電路設計一、結構框圖,如圖3-1圖3-1二、主要器件(1)單片機選用Atmel公司的芯片AT89S51,它接收鍵盤輸入并作出判斷,控制6位7段數(shù)碼管和LED指示燈的顯示。AT89S51完全可以滿足本設計的功能需求。(2)4*4行列式鍵盤。用戶通過鍵盤輸入6位新密碼及確認、取消功能鍵。(3)7段數(shù)碼管。共6位數(shù)碼管,對應于6位密碼。(4)LED指示燈。紅、綠兩個LED指示燈,紅燈表示輸入密碼錯誤告警,綠燈表示輸入密碼正確,鎖打開。(5)CMOS六反相驅動器CD4069UB。CD4069UB對單片機的P2.0-P2.5進行反相操作以提供正確的數(shù)碼管位選擇信號,它可以提供足夠的驅動電流。三、電路原理圖及說明1、電子密碼鎖單片機及鍵盤電路原理圖系統(tǒng)的電路原理圖分為3部分:一是單片機及鍵盤電路原理圖(如圖3-2);二是驅動及指示燈電路原理圖(如圖3-3);三是6位7段數(shù)碼管顯示電路原理圖(如圖3-4)。U1為單片機芯片AT89S51,它是整個電路的核心部件聯(lián)系著輸入和輸出。P1口用于鍵盤操作,P1.0-P1.3與行列線相連,R2-R5為行線的上拉電阻,P1.4-P1.7與列線相連。P0口用做7段數(shù)碼管的字段選擇信號,控制數(shù)碼管的字段LED發(fā)光,RP1220歐姆的上拉排阻。P2口的P2.0-P2.5用于產生6位數(shù)碼管的的位選信號,控制應該顯示的7段數(shù)碼管發(fā)光,位選擇信號C1-C6需由P2.0-P2.5經過6反相器CD4069UB反相驅動。P3.0、P3.1作普通I/O口使用,前者控制綠色發(fā)光二極管,指示密碼輸入正確狀態(tài),后者控制紅色發(fā)光二極管,指示密碼輸入錯誤狀態(tài)。單片機電子密碼鎖1)單片機及鍵盤電路原理圖,如圖3-2圖3-2單片機及鍵盤電路原理圖2)電子密碼鎖6位7段數(shù)碼管顯示電路原理圖,如圖3-3 圖3-3電子密碼鎖6位7段數(shù)碼管顯示電路原理圖3)電子密碼鎖位驅動及指示燈電路原理圖,如圖3-4圖3-4電子密碼鎖位驅動及指示燈電路原理圖第四章 軟件設計及實現(xiàn)一、軟件環(huán)境介紹本次畢業(yè)設計軟件部分采用在KEIL編譯器環(huán)境下進行編程,KEIL C-51軟件是眾多單片機開發(fā)的優(yōu)秀軟件之一,它集編輯,編譯,仿真于一體,支持匯編,PLM,C等多種程序設計語言,界面友好。二、程序設計及說明軟件設計可分為兩部分。(1)鍵盤輸入。通過行列鍵盤掃描程序獲取所按鍵的行、列號,并根據表得到其鍵值編碼。在鍵盤掃描時需要驚醒消抖處理。(2)數(shù)碼管顯示和指示燈輸出。根據獲取的鍵值編碼,選擇相應的功能,驅動數(shù)碼管和指示燈顯示。三、程序流程圖,如圖4-1圖4-1程序流程圖四、源程序1) 頭文件#ifndef_PWLOCK_H / 防止PWLock.h被重復引用#define_PWLOCK_H#include #include #include #include #define uchar unsigned char#define uint unsigned intuchar digbit; / 字位uchar wordbuf6; / 字型碼緩沖區(qū)uchar t1count; / 定時器1由50ms累積到1s所用的計數(shù)器uchar count; / 密碼位計數(shù)uchar pw6; / 初始密碼存儲區(qū)uchar pwbuf6; / 輸入密碼存儲區(qū)bit enterflag; / 確認鍵按下與否標志bit pwflag; / 密碼正確與否標志bit showflag; / 數(shù)碼管顯示與否標志sbit green=P30;sbit red=P31;void display(void); / 顯示函數(shù)#endif 2)主程序(見附錄)結 束 語在本次畢業(yè)設計中,由于時間的關系,我只完成了基本任務部分, 系統(tǒng)復習了PROTEL 99 SE,硬件的設計和檢測和軟件的編寫,單片機的有關知識。使大學三年的學習有了很好的聯(lián)系。以上為本次畢業(yè)設計的單片機電子密碼鎖電路,它經過多次修改,但因為水平有限,此電路中也存在一定的問題,譬如說電路的密碼不能遺忘,一旦遺忘,就很難打開,這可以通過增加電路解決,但過于復雜,本次設計未在其中;用開關作74LS112的CLK脈沖,不是很穩(wěn)定,可以調換其它高速開關或計數(shù)脈沖;電路密碼只有16種可供修改,但由于他人不知道密碼的位數(shù),而且還要求在規(guī)定的時間內按一定的順序開鎖,所以他人開鎖的幾率很??;電路未設聲音報警系統(tǒng),需要在芯片的某一端口增加一音頻放大模塊,這需要一段時間的進一步改進. 另外設計方案是在始終通電的前提下設計的,若是遇到斷電問題則密碼鎖也很難打開,可以通過增加備用電源來實現(xiàn),同樣因為知識有限,只能做到這一步。如果有好的意見,希望老師給以支持。在整個過程中懂得了許多東西,也培養(yǎng)了獨立思考和設計的能力,樹立了對知識應用的信心,相信會對今后的學習工作和生活有非常大的幫助,并且提高了自己的動手實踐操作能力, 使自己充分體會到了在設計過程中的成功喜悅。雖然這個設計做的不怎么好,但是在設計過程中所學到的東西是這次課程設計的最大收獲和財富,使我終身受益。單片機電子密碼鎖致 謝本設計電子密碼鎖的工作是在我的畢業(yè)導師尹梅老師的精心指導和悉心關懷下完成的,在我的學業(yè)和設計的工作中無不傾注著導師辛勤的汗水和心血。導師的嚴謹治學態(tài)度、淵博的知識、無私的奉賢精神使我深受的啟迪。從尊敬的導師身上,我不僅學到了扎實、寬廣的專業(yè)知識,也學到了做人的道理。在此我要向我的導師致以最衷心的感謝和深深的敬意。在多年的學習生活中,還得到了許多學院領導、系領導和老師的熱情關心和幫助。謝謝你們。在日常學習和生活中,班級的同學也給予了我很大幫助。最后,向所有關心和幫助過我的領導、老師、同學和朋友表示由衷的謝意!衷心地感謝在百忙之中評閱我的設計和參加答辯的各位老師!參考文獻:1 余永權. ATMEL89系列(MCS-51兼容)FLASH單片機原理及應用. 電子工業(yè)出版社. 19972 李建忠 單片機原理及應用 西安電子科技大學出版社2002(1)3 胡漢才. 單片機原理及其接口技術. 清華大學出版社.1996年4 戴佳 戴衛(wèi)恒 C語言應用程序設計 電子工業(yè)出版社 2006(1)5 潘新民 王燕芳. 微型計算機控制技術. 電子工業(yè)出版社. 2003年6 李鐘實. 實用電子報警器精選百例. 北京:科學技術文獻出版社.2002(4) 7 江思敏 姚鵬翼 胡榮. Protel電路設計教程. 清華大學出版社. 20028 閻石. 數(shù)字電子技術基礎. 高等教育出版社. 1998(2)9 童詩白. 模擬電子技術基礎. 高等教育出版社. 1998(4)10 龔運新 單片機C語言開發(fā)技術 清華大學出版社2006(1)單片機電子密碼鎖主程序:#include PWLock.h/* 鍵消抖延時函數(shù) */void delay(void)uchar i;for (i=300;i0;i-);/* 鍵掃描函數(shù) */uchar keyscan(void)uchar scancode,tmpcode;P1 = 0xf0; / 發(fā)全0行掃描碼if (P1&0xf0)!=0xf0)/ 若有鍵按下delay();/ 延時去抖動if (P1&0xf0)!=0xf0)/ 延時后再判斷一次,去除抖動影響scancode = 0xfe;while(scancode&0x10)!=0)/ 逐行掃描P1 = scancode;/ 輸出行掃描碼if (P1&0xf0)!=0xf0)/ 本行有鍵按下tmpcode = (P1&0xf0)|0x0f;/* 返回特征字節(jié)碼,為1的位即對應于行和列 */return(scancode)+(tmpcode);else scancode = (scancode1)|0x01; / 行掃描碼左移一位return(0);/ 無鍵按下,返回值為0 /* 定時器0中斷服務子程序,2ms定時動態(tài)掃描顯示 */void time0_int(void) interrupt 1 /* 重置2ms定時 */TH0 = -2000/256;TL0 = -2000%256;if (showflag=1)display();/ 調用顯示函數(shù)/* 定時器1中斷服務子程序,50ms*/void time1_int(void) interrupt 3 t1count+;else/ 計時到1sTR1 = 0;/ 關閉計數(shù)器1t1count = 0;green = 1;/ 綠燈不亮red = 1;/ 紅燈不亮showflag = 1;/ 打開數(shù)碼管顯示digbit = 0x01;/ 從數(shù)碼管第1位開始動態(tài)顯示for (k=0;k6;k+)/ 顯示888888wordbufk = 8;/* 根據共陰極字型編碼表獲取09,AB字型代碼 */uchar getcode(uchar i)uchar p;switch (i)case 0: p=0x3f;break;/* 0 */case 1: p=0x06;break;/* 1 */case 2: p=0x5B;break;/* 2 */case 3: p=0x4F;break;/* 3 */case 4: p=0x66;break;/* 4 */case 5: p=0x6D;break;/* 5 */case 6: p=0x7D;break;/* 6 */case 7: p=0x07;break;/* 7 */case 8: p=0x7F;break;/* 8 */case 9: p=0x67;break;/* 9 */case 10: p=0x77;break;/* A */case 11: p=0x7C;break;/* B */case 12: p=0x39;break;/* C */case 13: p=0x5E;break;/* D */case 14: p=0x79;break;/* E */case 15: p=0x71;break;/* F */default: break;return(p);/* 顯示函數(shù) */單片機電子密碼鎖void display(void)uchar i;switch (digbit)case 1:i=0;break;case 2:i=1;break;case 4:i=2;break;case 8:i=3;break;case 16: i=4;break;case 32: i=5;break;default: break;P2 = 0x0; / 關閉顯示P0 = getcode(wordbufi); / 送字型碼P2 = digbit; / 送字位碼if (digbit0x20) / 共6位digbit = digbit*2; / 左移一位else digbit = 0x01;/* 密碼比較函數(shù) */bit pwcmp(void)bit flag;uchar i;for (i=0;i6;i+)if (pwi=pwbufi)flag = 1;elseflag = 0;i = 6;return(flag);/* 主程序 */void main()uchar j,key;P2 = 0x0;/ 關閉數(shù)碼管顯示TMOD = 0x11;/ T0,T1工作方式1/* 2ms 定時設置 */TH0 = -2000/256;TL0 = 2000%256;/* 50ms 定時設置 */TH1 = -50000/256;TL1 = -50000%256;/* 啟動計數(shù)器0,關閉計數(shù)器1 */TR0 = 1;ET0 = 1;TR1 = 0;ET1 = 1;EA = 1;count = 0; / 初始沒有輸入密碼,計數(shù)器設為0enterflag = 0;/ 沒有按下確認鍵pwflag = 0;/ 密碼標志先置為0 green = 1;/ 綠燈不亮red = 1; / 紅燈不亮/* 假設內定密碼為937602 */pw0 = 9;pw1 = 3;pw2 = 7;pw3 = 6;pw4 = 0;pw5 = 2;digbit = 0x01; / 從第一位數(shù)碼管開始動態(tài)掃描/* 剛加電時,顯示888888 */for (j=0;j6;j+)wordbufj = 8;showflag = 1; / 打開數(shù)碼管顯示while(1) key = keyscan(); / 調用鍵盤掃描函數(shù)switch(key) case 0x11: / 1行1列,數(shù)字0if (count6)wordbufcount

溫馨提示

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

評論

0/150

提交評論