版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 課程:電子綜合設(shè)計實驗</p><p> 項目:基于單片機的電子密碼鎖</p><p> 學期:2011~2012. </p><p> 學院:電子信息與自動化學院</p><p> 專業(yè):電氣工程及其自動化 </p><p> 班級:109070402
2、 </p><p> 姓名:葛誠 </p><p> 學號:10907990203 </p><p> 指導教師: 陳古波 </p><p> 電工電子技術(shù)實驗中心</p><p><b> 目錄</b></p>
3、<p><b> 摘 要3</b></p><p><b> 引言4</b></p><p><b> 1.1選題背景4</b></p><p> 1.2電子密碼控制簡介4</p><p> 1.3電子密碼控制的發(fā)展趨勢4</p&g
4、t;<p> 1.4本設(shè)計所要實現(xiàn)的目標5</p><p> 2.1方案一:采用數(shù)字電路控制5</p><p> 2.2方案二:采用以單片機為核心的控制方案5</p><p><b> 主要元器件介紹6</b></p><p> 3.1主控芯片AT89s526</p>&l
5、t;p> 3.2 AT89s52引腳功能說明6</p><p> 3.3 LCD1602顯示器7</p><p><b> 系統(tǒng)硬件構(gòu)成7</b></p><p><b> 4.1設(shè)計原理7</b></p><p> 4.2電源輸入部分8</p><p&
6、gt; 4.3 復位部分8</p><p> 4.4 晶振部分9</p><p> 4.5 顯示部分9</p><p> 4.6 報警部分10</p><p><b> 系統(tǒng)軟件設(shè)計10</b></p><p> 5.1主程序流程圖11</p><p&
7、gt; 5.2按鍵功能流程圖11</p><p> 5.3密碼設(shè)置流程圖12</p><p> 5.4開鎖流程圖13</p><p><b> 結(jié) 論15</b></p><p><b> 附錄一16</b></p><p><b> P
8、CB制版圖16</b></p><p><b> 附錄二17</b></p><p><b> 摘 要</b></p><p> 隨著科技的日益發(fā)展,電子密碼控制系統(tǒng)已越來越符合人們的要求。本文介紹了基于單片機密碼控制系統(tǒng),對系統(tǒng)硬件設(shè)計和軟件實現(xiàn)進行了詳細的描述。該系統(tǒng)采用AT89s52單片機
9、,通過AT89s52實現(xiàn)密碼控制的功能。</p><p> 本文從經(jīng)濟實用的角度出發(fā),采用美國Atmel公司的單片機AT89s52作為主控芯片與數(shù)據(jù)存儲器單元,結(jié)合外圍的矩陣鍵盤輸入、LCD1602液晶顯示、報警、開鎖等,用C語言編寫主控芯片的控制程序,設(shè)計了一款可以多次更改密碼,具有報警功能的電子密碼控制系統(tǒng)。這種電路設(shè)計具有防試探按鍵輸入、智能控制上鎖、開鎖、報警、修改密碼等多種功能。</p>
10、<p> 經(jīng)實驗證明,該密碼控制系統(tǒng)具有設(shè)計方法合理,簡單易行,成本低,安全使用等特點,符合車輛、辦公室用鎖要求,具有推廣價值。</p><p> 關(guān)鍵字:密碼控制 單片機 報警</p><p><b> 引言</b></p><p><b> 1.1選題背景</b></p><
11、p> 在安全技術(shù)防范領(lǐng)域,具有防盜報警功能的電子密碼控制系統(tǒng)逐漸代替?zhèn)鹘y(tǒng)的機械式密碼控制系統(tǒng),克服了機械式密碼控制的密碼量少、安全性能差的缺點,使電子密碼控制系統(tǒng)無論在技術(shù)上還是在性能上都大大提高了一步。隨著大規(guī)模集成電路技術(shù)的發(fā)展,特別是單片機的問世,出現(xiàn)了帶微處理器的智能密碼控制系統(tǒng),它除具有傳統(tǒng)電子密碼控制系統(tǒng)的功能外,還引入了智能化管理、專家分析系統(tǒng)等功能,從而使密碼控制系統(tǒng)具有很高的安全性、可靠性,應用日益廣泛。<
12、;/p><p> 1.2電子密碼控制簡介</p><p> 電子密碼控制是一種通過密碼輸入來控制電路或是芯片工作,從而控制機械開關(guān)的閉合,完成開鎖、閉鎖任務的電子產(chǎn)品。電子密碼控制不論性能還是安全性都已大大超過了機械類。其特點如下:</p><p> 1) 保密性好,編碼量多,遠遠大于機械控制。隨機開鎖成功率幾乎為零。</p><p>
13、2) 密碼可變,用戶可以隨時更改密碼,防止密碼被盜,同時也可以避免因人員的更替而使控制的保密性下降。</p><p> 3) 誤碼輸入保護,當輸入密碼多次錯誤時,報警系統(tǒng)自動啟動。</p><p> 4) 無活動零件,不會磨損,壽命長。</p><p> 5) 使用靈活性好,不像機械鎖必須佩帶鑰匙才能開鎖。</p><p> 6) 電
14、子密碼控制系統(tǒng)具有操作簡單易行,一學即會的特點。</p><p> 1.3電子密碼控制的發(fā)展趨勢</p><p> 由于電子器件所限,以前開發(fā)的電子密碼控制系統(tǒng),其種類不多,保密性差,最基本的就是只依靠最簡單的模擬電子開關(guān)來實現(xiàn)的,制作簡單但很不安全,后來便是基于EDA來實現(xiàn)的,其電路結(jié)構(gòu)復雜,電子元件繁多,也有使用早先的20引腳的2051系列單片機來實現(xiàn)的,但密碼簡單,易破解。隨著電
15、子元件的進一步發(fā)展,電子密碼控制系統(tǒng)也出現(xiàn)了很多的種類,功能日益強大,使用更加方便,安全保密性更強,由以前的單密碼輸入發(fā)展到現(xiàn)在的,密碼加感應元件,實現(xiàn)了更為真正的電子加密,用戶只有密碼或電子鑰匙中的一樣,是打不開鎖的,隨著電子元件的發(fā)展及人們對保密性需求的提高出現(xiàn)了越來越多的電子密碼控制系統(tǒng) 。</p><p> 由于數(shù)字、字符、圖形圖像、人體生物特征和時間等要素均可成為電子信息,組合使用這些信息能夠使電子防
16、盜密碼控制獲得更高的保密性,如防范森嚴的金庫,需要使用復合信息密碼的電子防盜密碼控制系統(tǒng)。組合使用信息也能夠使電子防盜密碼控制系統(tǒng)獲得無窮擴展的可能。可以看出組合使用電子信息是電子密碼控制系統(tǒng)今后發(fā)展的趨勢 。</p><p> 1.4本設(shè)計所要實現(xiàn)的目標</p><p> 本設(shè)計采用單片機為主控芯片,結(jié)合外圍電路,組成電子密碼控制系統(tǒng),用戶想要打開鎖,必先通過提供的鍵盤輸入正確的密碼
17、才可以,密碼輸入錯誤有提示,為了提高安全性,當密碼輸入錯誤三次將報警。密碼可以由用戶自己修改設(shè)定,鎖打開后才能修改密碼。修改密碼之前必須再次輸入密碼,在輸入新密碼時候需要二次確認,以防止誤操作。</p><p><b> 設(shè)計方案的選擇</b></p><p> 2.1方案一:采用數(shù)字電路控制</p><p> 用以74LS112雙JK觸
18、發(fā)器構(gòu)成的數(shù)字邏輯電路作為密碼控制系統(tǒng)的核心控制,共設(shè)了9個用戶輸入鍵,其中只有4個是有效的密碼按鍵,其它的都是干擾按鍵,若按下干擾鍵,鍵盤輸入電路自動清零,原先輸入的密碼無效,需要重新輸入;如果用戶輸入密碼的時間超過10秒(一般情況下,用戶不會超過10秒,若用戶覺得不便,還可以修改)電路將報警20秒,若電路連續(xù)報警三次,電路將鎖定鍵盤2分鐘,防止他人的非法操作 。采用數(shù)字電路設(shè)計方案時設(shè)計雖然簡單,但控制的準確性和靈活性差。故不采用。
19、</p><p> 2.2方案二:采用以單片機為核心的控制方案</p><p> 由于單片機種類繁多,各種型號都有其一定的應用環(huán)境,因此在選用時要多加比較,合理選擇,以期獲得最佳的性價比。一般來說在選取單片機時從下面幾個方面考慮:性能、存儲器、運行速度、I/O口、定時/計數(shù)器、串行接口、模擬電路功能、工作電壓、功耗、封裝形式、抗干擾性、保密性,除了以上的一些還有一些最基本的,比如:中斷
20、源的數(shù)量和優(yōu)先級、工作溫度范圍、有沒有低電壓檢測功能、單片機內(nèi)有無時鐘振蕩器、有無上電復位功能等。在開發(fā)過程中單片機還受到:開發(fā)工具、編程器、開發(fā)成本、開發(fā)人員的適應性、技術(shù)支持和服務等等因素 ?;谝陨弦蛩乇驹O(shè)計選用單片機AT89S52作為本設(shè)計的核心元件,利用單片機靈活的編程設(shè)計和豐富的I/O端口,及其控制的準確性,實現(xiàn)基本的密碼控制功能。在單片機的外圍電路外接輸入鍵盤用于密碼的輸入和一些功能的控制,外接LCD1602顯示器用于顯示
21、作用。當用戶需要開鎖時,先按鍵盤開鎖鍵之后按鍵盤的數(shù)字鍵0-9輸入密碼。密碼輸完后按下確認鍵,如果密碼輸入正確則開鎖,不正確顯示密碼錯誤重新輸入密碼,當三次密碼錯誤則發(fā)出報警;當用戶需要修改密碼時,先按下鍵盤設(shè)置鍵后輸入原來的密碼,只有當輸入的原密碼正確</p><p> 可以看出方案二的控制靈活,準確性好,且保密性強還具有擴展功能,根據(jù)現(xiàn)實生活的需要此次設(shè)計采用此方案。</p><p>
22、;<b> 主要元器件介紹</b></p><p> 3.1主控芯片AT89s52</p><p> AT89s52是一個低功耗,高性能CMOS 8位單片機,片內(nèi)含4k Bytes的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造,兼容標準MCS-51指令系統(tǒng)及AT80s52引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處
23、理器和ISP Flash存儲單元,功能強大的微型計算機的AT89s52可為許多嵌入式控制應用系統(tǒng)提供高性價比的解決方案。</p><p> 3.2 AT89s52引腳功能說明</p><p> P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復用口,作為輸出口用時,每位能驅(qū)動8個TTL邏輯門電路,對端口寫“1”可作為高阻抗輸入端口。在訪問外部數(shù)據(jù)存儲器或程序存儲器時,
24、這組口線分時轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復用,在訪問期間激活內(nèi)部上拉電阻。在Flash編程時,P0口接收指令字節(jié),而在程序校驗時,輸出指令字節(jié),校驗時,要求外接上拉電阻。</p><p> P1口:P1是一個帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個
25、引腳被外部信號校驗期間,P1接收低8位地址。</p><p> P2口:P2是一個帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級可驅(qū)動4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流I。在訪問8位地址的外部數(shù)據(jù)存儲器(如執(zhí)行:MOVX @Ri 指令)時,P2口線上的內(nèi)(也即特殊功能寄存器,
26、在整個訪問期間不改變。Flash 編程或校驗時,P2也接收高位地址和其它控制信號。</p><p> P3口:P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫入“1”時,它們被內(nèi)部上拉電阻拉高并可作為輸入端口。作輸入端口時,被外部拉低的P3口將用上拉電阻輸出電流I。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能。</p&
27、gt;<p> RST:復位輸入。當振蕩工作時,RST引腳出現(xiàn)兩個機器周期上高電平將使單片機復位。ALE/PROG:當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不再訪問外部存儲器,ALE仍以時鐘振蕩頻率的1/6輸出的正脈沖信號,因此它可對外輸出時鐘或用于定時目地,要注意的是:當訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8E
28、H單元的D0位置位,可禁止ALE操作。該位置禁位后,只有一條MOVX 和MOVC指令ALE才會被激活。此外,該引腳伎被微弱拉高,單片機執(zhí)行外部程序時,應設(shè)置ALE無效。</p><p> PSEN:程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當AT89S51由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次PSEN有效,即輸出兩個脈沖。當訪問外部數(shù)據(jù)存儲器,高有兩次有效的PSEN信號。</
29、p><p> EA/VPP:外部訪問允許。欲使CPU訪問外部程序存儲器(地址0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復位時內(nèi)部會鎖存EA端狀態(tài)。如EA端為高電平(接VCC端),CPU則執(zhí)行內(nèi)部程序存儲器中的指令。Flash存儲器編程時,該引腳加上+12V的編程電壓VPP。</p><p> XTAL1:振蕩器反相放大器及內(nèi)部時鐘發(fā)生器的輸
30、入端。</p><p> XTAL2:振蕩器反相放大器的輸出端。</p><p> 3.3 LCD1602顯示器</p><p> 現(xiàn)在的字符型液晶模塊已經(jīng)是單片機應用設(shè)計中最常用的信息顯示器件了。1602型LCD顯示模塊具有體積小,功耗低,顯示內(nèi)容豐富等特點。1602型LCD可以顯示2行16個字符,有8位數(shù)據(jù)總線D0-D7和RS,R/W,EN三個控制端口,工
31、作電壓為5V,并且具有字符對比度調(diào)節(jié)和背光功能。</p><p><b> 系統(tǒng)硬件構(gòu)成</b></p><p><b> 4.1設(shè)計原理</b></p><p> 本設(shè)計主要由單片機、矩陣鍵盤、液晶顯示器和密碼存儲等部分組成。其中矩陣鍵盤用于輸入數(shù)字密碼和進行各種功能的實現(xiàn)。由用戶通過連接單片機的矩陣鍵盤輸入密碼,
32、后經(jīng)過單片機對用戶輸入的密碼與自己保存的密碼進行對比,從而判斷密碼是否正確,然后控制引腳的高低電平傳到開鎖電路或者報警電路控制開鎖還是報警。</p><p> 本系統(tǒng)共有兩部分構(gòu)成,即硬件部分與軟件部分。其中硬件部分由電源輸入部分、鍵盤輸入部分、復位部分、晶振部分、顯示部分、報警部分組成,軟件部分對應的由主程序、初始化程序、LCD顯示程序、鍵盤掃描程序、啟動程序、關(guān)閉程序、鍵功能程序、密碼設(shè)置程序、EEPROM
33、讀寫程序和延時程序等組成。其原理框圖如圖4-1所示。</p><p> 圖4-1 電子密碼鎖原理框圖</p><p><b> 4.2電源輸入部分</b></p><p> 密碼鎖主要控制部分電源需要用5V直流電源供電,其電路如圖4-3所示,而5V電源輸入時往往伴有雜波,所以加一個2.2uF的電容濾波。這樣輸出的電壓一般能滿足要求。<
34、;/p><p> 圖4-3 電源輸入電路原理圖</p><p><b> 4.3 復位部分 </b></p><p> 單片機復位是使CPU和系統(tǒng)中的其他功能部件都處在一個確定的初始狀態(tài),并從這個狀態(tài)開始工作,例如復位后PC=0000H,使單片機從第—個單元取指令。無論是在單片機剛開始接上電源時,還是斷電后或者發(fā)生故障后都要復位。在復位期間(
35、即RST為高電平期間),P0口為高組態(tài),P1-P3口輸出高電平;外部程序存儲器讀選通信號PSEN無效。地址鎖存信號ALE也為高電平。根據(jù)實際情況選擇如圖4-5所示的復位電路。該電路在最簡單的復位電路下增加了手動復位按鍵,在接通電源瞬間,電容C1上的電壓很小,復位下拉電阻上的電壓接近電源電壓,即RST為高電平,在電容充電的過程中RST端電壓逐漸下降,當RST端的電壓小于某一數(shù)值后,CPU脫離復位狀態(tài),由于電容C1足夠大,可以保證RST高電
36、平有效時間大于24個振蕩周期,CPU能夠可靠復位。增加手動復位按鍵是為了避免死機時無法可靠復位。當復位按鍵按下后電容C1通過R5放電。當電容C1放電結(jié)束后,RST端的電位由R5與R6分壓比決定。由于R5<<R6 因此RST為高電平,CPU處于復位狀態(tài),松手后,電容C1充電,RST端電位下降,CPU脫離復位狀態(tài)。R5的作用在于限制按鍵按</p><p> 圖4-5 復位電路原理圖</p>
37、<p><b> 4.4 晶振部分</b></p><p> AT89s52引腳XTAL1和XTAL2與晶體振蕩器及電容C2、C1按圖4-6所示方式連接。晶振、電容C1/C2及片內(nèi)與非門(作為反饋、放大元件)構(gòu)成了電容三點式振蕩器,振蕩信號頻率與晶振頻率及電容C1、C2的容量有關(guān),但主要由晶振頻率決定,范圍在0~33MHz之間,電容C1、C2取值范圍在5~30pF之間。根據(jù)實
38、際情況,本設(shè)計中采用12MHZ做系統(tǒng)的外部晶振。電容取值為20pF。</p><p> 圖4-6 晶振電路原理圖</p><p><b> 4.5 顯示部分</b></p><p> 為了提高密碼鎖的密碼顯示效果能力。本設(shè)計的顯示部分由液晶顯示器LCD1602取代普通的數(shù)碼管來完成。只有按下鍵盤上的開啟按鍵后,顯示器才處于開啟狀態(tài)。同理只
39、有按下關(guān)閉按鍵后顯示器才處于關(guān)閉狀態(tài)。否則顯示器將一直處于初始狀態(tài),當需要對密碼鎖進行開鎖時,按下鍵盤上的開鎖按鍵后利用鍵盤上的數(shù)字鍵0-9輸入密碼,每按下一個數(shù)字鍵后在顯示器上顯示一個*,輸入多少位就顯示多少個*。當密碼輸入完成時,按下確認鍵,如果輸入的密碼正確的話, LCD子顯示“RIGHT”,單片機其中P2.0引角會輸出低電平,使三極管T2導通,電磁鐵吸合,電子密碼鎖被打開,如果密碼不正確,LCD顯示屏會顯示“ERROR”,P2.
40、0輸出的是高電平,電子密碼鎖不能被打開。通過LCD顯示屏,可以清楚的判斷出密碼鎖所處的狀態(tài) 。其顯示部分引腳接口如圖4-7所示:</p><p> 圖4-7 顯示電路原理圖</p><p><b> 4.6 報警部分</b></p><p> 報警部分由陶瓷壓電發(fā)聲裝置及外圍電路組成,加電后不發(fā)聲,當有鍵按下時,“?!甭暎堪匆幌?,發(fā)聲
41、一次,密碼正確時,不發(fā)聲直接開鎖,當密碼輸入錯誤時,單片機的P2.1引腳為低電平,三極管T3導通轟鳴器發(fā)出噪鳴聲報警。如圖4-8所示:</p><p> 圖4-8 報警電路原理圖</p><p><b> 系統(tǒng)軟件設(shè)計</b></p><p> 本系統(tǒng)軟件設(shè)計由主程序、初始化程序、LCD顯示程序、鍵盤掃描程序、鍵功能程序、密碼設(shè)置程序、E
42、EPROM讀寫程序和延時程序等組成。</p><p><b> 5.1主程序流程圖</b></p><p> 如圖5-1所示為主程序流程圖,開始接上電源,程序進行初始化設(shè)置,然后在鍵盤上輸入密碼,此系統(tǒng)進行鍵盤掃描,然后啟動程序,進行保護,再次在鍵盤上輸入密碼,系統(tǒng)進行掃描,如和之前一樣,則執(zhí)行程序,如不是,則執(zhí)行另一種程序,最后結(jié)束。</p>&l
43、t;p> 圖5-1 主程序流程圖</p><p> 5.2按鍵功能流程圖</p><p> 如圖5-2為按鍵功能流程圖,在按鍵當中,有與輸入、開鎖、清除、設(shè)置、確認的程序相對應的按鍵,并按順序與輸入的數(shù)相比較,當輸入正確時,進入密碼程序,錯誤時進行清除,輸入兩次正確的,可進行重新設(shè)置,最后確認程序。</p><p> 5.3密碼設(shè)置流程圖</p&
44、gt;<p> 如圖5-3為密碼設(shè)置流程圖,開始按下設(shè)置鍵,輸入舊密碼,如果錯誤,累計三次錯誤,進行報警程序。如輸入正確,可以改密碼,確認后再次輸入更改后密碼,如兩次輸入一樣,則更改成功。</p><p> 圖5-3 密碼設(shè)置流程圖</p><p><b> 5.4開鎖流程圖</b></p><p> 如圖5-4為開鎖流程
45、圖,開始時按開鎖鍵,輸入密碼,如果輸入正確,則開鎖成功。如果輸入錯誤累計達到三次,則執(zhí)行報警程序。</p><p><b> 圖5-4開鎖流程圖</b></p><p><b> 結(jié) 論</b></p><p> 以上為畢業(yè)期間所設(shè)計的電子密碼控制系統(tǒng)的電路,它經(jīng)過多次修改和整理,可以滿足設(shè)計的基本要求。輸入密
46、碼時,如三次輸入錯誤,則進行報警,在輸入時,LCD顯示為“*”,在修改密碼時,則顯示數(shù)字。次設(shè)計還具有防盜功能,如對密碼控制系統(tǒng)進行破壞,有報警功能。但因為我的水平有限,此電路中也存在一定的問題。譬如說電路的密碼不能遺忘,一旦遺忘,就很難打開,這可以通過增加電路解決,但由于過于復雜,本設(shè)計并未加入;電路密碼只有16種可供修改,但由于他人不知道密碼的位數(shù),而且還要求在規(guī)定的時間內(nèi)按一定的順序開鎖,所以他人開鎖的幾率很小。由于使用的是單片機
47、作為核心的控制元件,配合其它器件,使本密碼控制系統(tǒng)具有功能強、性能可靠、電路簡單、成本低的特點,加上經(jīng)過優(yōu)化的程序,使其有很高的智能化水平。</p><p><b> 附錄一</b></p><p><b> 原理總圖</b></p><p><b> PCB制版圖</b></p>
48、<p><b> 附錄二程序</b></p><p> #include<reg52.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> uint key,key_num,
49、keycount=0,beeflag,loop1,compflag=0,xg_flag=5,new=5,again=5,x_comflag=0;</p><p> uchar cuo=0;</p><p> uchar code table[]="Enter The Key";</p><p> uchar code table1[]=&q
50、uot;****";</p><p> uchar code table2[]="ERROR";</p><p> uchar code table3[]="OPEN";</p><p> uchar code table4[]="The Old Key";</p><p
51、> uchar code table5[]="The New Key";</p><p> uchar code table6[]="Again New Key";</p><p> uchar code table7[]="Succeed";</p><p> uchar data mima
52、[4]={0,1,2,3};</p><p> uchar data cucun[5];</p><p> uchar data mima_new[4];</p><p> uchar data mima_again[4];</p><p> sbit lcdrs=P2^0;</p><p> sbit lc
53、drw=P2^1;</p><p> sbit lcden=P2^2;</p><p> sbit beef=P2^7;</p><p> sbit JDQ=P2^6;</p><p> void delay(uint z)</p><p><b> {</b></p>&
54、lt;p><b> uint x,y;</b></p><p> for(x=z;x>0;x--)</p><p> for(y=110;y>0;y--);</p><p><b> }</b></p><p> void write_com(uchar com)<
55、/p><p><b> {</b></p><p><b> lcdrs=0;</b></p><p><b> P0=com;</b></p><p><b> delay(5);</b></p><p><b>
56、 lcden=1;</b></p><p><b> delay(5);</b></p><p><b> lcden=0;</b></p><p><b> }</b></p><p> void write_data(uchar date)</p&
57、gt;<p><b> {</b></p><p><b> lcdrs=1;</b></p><p><b> P0=date;</b></p><p><b> delay(5);</b></p><p><b> l
58、cden=1;</b></p><p><b> delay(5);</b></p><p><b> lcden=0;</b></p><p><b> }</b></p><p> void init()</p><p> {
59、lcdrw=0;</p><p><b> lcden=0;</b></p><p> write_com(0x38);</p><p> write_com(0x0e);</p><p> write_com(0x06);</p><p> write_com(0x01);</p
60、><p><b> }</b></p><p><b> keys()</b></p><p><b> {</b></p><p> unsigned char temp;</p><p> key_num=0xff;</p>&l
61、t;p><b> P1=0xf7; </b></p><p> if(P1!=0xf7){</p><p> delay(5); </p><p><b> P1=0xf7;</b></p><p> if(P1!=0xf7){ </p><p> tem
62、p = P1;</p><p> switch(temp){</p><p> case 0xe7: key_num=0;break;</p><p> case 0xd7: key_num=1;break;</p><p> case 0xb7: key_num=2;break;</p><p> case
63、 0x77: key_num=3;break;</p><p><b> }</b></p><p> P1 = 0xf0; </p><p> while(P1!=0xf0) P1=0xf0;</p><p><b> }</b></p><p><b
64、> }</b></p><p> P1=0xfb; </p><p> if(P1!=0xfb){</p><p><b> delay(5);</b></p><p><b> P1=0xfb;</b></p><p> if(P1!=0xf
65、b){</p><p> temp = P1;</p><p> switch(temp){</p><p> case 0xeb:key_num=4;break;</p><p> case 0xdb:key_num=5;break;</p><p> case 0xbb:key_num=6;break;&
66、lt;/p><p> case 0x7b:key_num=7;break;</p><p><b> }</b></p><p> P1 = 0xf0; </p><p> while(P1!=0xf0) P1=0xf0;</p><p><b> }</b>&l
67、t;/p><p><b> }</b></p><p> P1=0xfd; </p><p> if(P1!=0xfd){</p><p> delay(5); </p><p><b> P1=0xfd;</b></p><p> if(P
68、1!=0xfd){</p><p> temp = P1;</p><p> switch(temp){</p><p> case 0xed:key_num=8;break;</p><p> case 0xdd:key_num=9;break;</p><p> case 0xbd:key_num=10
69、;break;</p><p> case 0x7d:key_num=11;break;</p><p><b> }</b></p><p> P1 = 0xf0; </p><p> while(P1!=0xf0) P1=0xf0;</p><p><b> }&l
70、t;/b></p><p><b> }</b></p><p> P1=0xfe; </p><p> if(P1!=0xfe){</p><p> delay(5); </p><p><b> P1=0xfe;</b></p><p
71、> if(P1!=0xfe){ </p><p> temp = P1;</p><p> switch(temp){</p><p> case 0xee:key_num=12;break;//確認 </p><p> case 0xde:key_num=13;break;//設(shè)置密碼</p><
72、p> case 0xbe:key_num=14;break;//取消</p><p> case 0x7e:key_num=15;break;//刪除 </p><p><b> }</b></p><p> P1 = 0xf0; </p><p> while(P1!=0xf0) P1=0xf
73、0;</p><p><b> }</b></p><p><b> }</b></p><p><b> } </b></p><p> void beef_a()</p><p><b> { </b>
74、</p><p><b> uint j;</b></p><p> beeflag=0;</p><p><b> if(cuo<2)</b></p><p><b> {</b></p><p><b> cuo++;<
75、;/b></p><p> for(j=0;j<3000;j++)</p><p><b> {</b></p><p> beef=~beef;</p><p><b> delay(1);</b></p><p><b> }</b&
76、gt;</p><p><b> }</b></p><p><b> else </b></p><p><b> {</b></p><p> for(j=0;j<10000;j++)</p><p><b> {<
77、/b></p><p> beef=~beef;</p><p><b> delay(5);</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b>
78、</p><p> void a_display()</p><p> {uint num;</p><p> write_com(0x80+0x05);</p><p> for(num=0;num<5;num++)</p><p><b> {</b></p>
79、<p> write_data(table2[num]);</p><p><b> delay(5);</b></p><p><b> }</b></p><p><b> }</b></p><p> void c_display()</p>
80、;<p> {uint num;</p><p> write_com(0x80+0x06);</p><p> for(num=0;num<4;num++)</p><p><b> {</b></p><p> write_data(table3[num]);</p>&
81、lt;p><b> delay(5);</b></p><p><b> }</b></p><p><b> }</b></p><p> void d_display()</p><p><b> {</b></p>&l
82、t;p> uint num,k;</p><p> write_com(0x80+0x02);</p><p> for(num=0;num<11;num++)</p><p><b> {</b></p><p> write_data(table4[num]);</p><p
83、><b> delay(5);</b></p><p><b> }</b></p><p> write_com(0x80+0x45);</p><p> for(k=0;k<keycount;k++)</p><p><b> {</b></p&
84、gt;<p> write_data(table1[k]);</p><p><b> delay(5);</b></p><p><b> } </b></p><p><b> }</b></p><p> void e_display()</
85、p><p> {uint num,k;</p><p> write_com(0x80+0x01);</p><p> for(num=0;num<11;num++)</p><p><b> {</b></p><p> write_data(table5[num]);</
86、p><p><b> delay(5);</b></p><p><b> }</b></p><p> write_com(0x80+0x45);</p><p> for(k=0;k<keycount;k++)</p><p><b> {</
87、b></p><p> write_data(table1[k]);</p><p><b> delay(5);</b></p><p><b> } </b></p><p><b> }</b></p><p> void f_di
88、splay()</p><p> {uint num,k;</p><p> write_com(0x80+0x01);</p><p> for(num=0;num<13;num++)</p><p><b> {</b></p><p> write_data(table6[
89、num]);</p><p><b> delay(5);</b></p><p><b> }</b></p><p> write_com(0x80+0x45);</p><p> for(k=0;k<keycount;k++)</p><p><b&
90、gt; {</b></p><p> write_data(table1[k]);</p><p><b> delay(5);</b></p><p><b> } </b></p><p><b> }</b></p><p>
91、 void g_display()</p><p> {uint num;</p><p> write_com(0x80+0x06);</p><p> for(num=0;num<7;num++)</p><p><b> {</b></p><p> write_data
92、(table7[num]);</p><p><b> delay(5);</b></p><p><b> }</b></p><p><b> }</b></p><p> void b_display()</p><p> { uint
93、 num,k;</p><p> write_com(0x80+0x01);</p><p> for(num=0;num<13;num++)</p><p><b> {</b></p><p> write_data(table[num]);</p><p><b>
94、 delay(5);</b></p><p><b> }</b></p><p> write_com(0x80+0x45);</p><p> for(k=0;k<keycount;k++)</p><p><b> {</b></p><p>
95、 write_data(table1[k]);</p><p><b> delay(5);</b></p><p><b> } </b></p><p><b> } </b></p><p> void input()</p><p>&
96、lt;b> {</b></p><p> keycount++;</p><p> if(keycount>=4) keycount=4; </p><p> if((key_num!=0xff)&&(keycount==1)) </p><p><b> {</b&
97、gt;</p><p> if(xg_flag<5)</p><p> { if(xg_flag>3) xg_flag=3;</p><p> d_display();</p><p> xg_flag++;</p><p><b> }</b></p>&l
98、t;p> else if(new<=3)</p><p> {if(new==3) {again=0;new=4;init();keycount=0;f_display();}</p><p> else e_display();</p><p><b> new++;</b></p><p>&
99、lt;b> }</b></p><p> else if(again<5)</p><p><b> {</b></p><p> if(again>=3)again=3;</p><p> f_display();</p><p><b>
100、again++;</b></p><p><b> }</b></p><p> else b_display();</p><p><b> }</b></p><p> if((key_num!=0xff)&&(keycount==2)) &l
101、t;/p><p><b> { </b></p><p> if(xg_flag<5)</p><p><b> {</b></p><p> if(xg_flag>3) xg_flag=3;</p><p> d_display();</p>
102、<p> xg_flag++;</p><p><b> }</b></p><p> else if(new<=3)</p><p> {if(new==3) {again=0;new=4;init();keycount=0;f_display();}</p><p> else e_
103、display();</p><p><b> new++;</b></p><p><b> }</b></p><p> else if(again<5)</p><p><b> {</b></p><p> if(again>
104、;=3)again=3;</p><p> f_display();</p><p><b> again++;</b></p><p><b> } </b></p><p> else b_display();</p><p><b> }&
105、lt;/b></p><p> if((key_num!=0xff)&&(keycount==3)) </p><p><b> {</b></p><p> if(xg_flag<5)</p><p><b> {</b></p><p&g
106、t; if(xg_flag>3) xg_flag=3;</p><p> d_display();</p><p> xg_flag++;</p><p><b> }</b></p><p> else if(new<=3)</p><p> {if(new==3) {
107、again=0;new=4;init();keycount=0;f_display();}</p><p> else e_display();</p><p><b> new++;</b></p><p><b> }</b></p><p> else if(again<5)&
108、lt;/p><p><b> {</b></p><p> if(again>=3)again=3;</p><p> f_display();</p><p><b> again++;</b></p><p><b> } </b&
109、gt;</p><p> else b_display();</p><p><b> }</b></p><p> if((key_num!=0xff)&&(keycount==4)) </p><p><b> {</b></p><p>
110、 if(xg_flag<5)</p><p> {if(xg_flag>3) xg_flag=3;</p><p> d_display();</p><p> xg_flag++;</p><p><b> }</b></p><p> else if(new<=3
111、)</p><p> {if(new==3) {again=0;new=4;init();keycount=0;f_display();}</p><p> else e_display();</p><p><b> new++;</b></p><p><b> }</b></p
112、><p> else if(again<5)</p><p><b> {</b></p><p> if(again>=3)again=3;</p><p> f_display();</p><p><b> again++;</b></p>
113、;<p><b> }</b></p><p> else b_display();</p><p><b> } </b></p><p><b> }</b></p><p> void func()</p>
114、;<p><b> {</b></p><p> if(key_num==12)</p><p><b> { </b></p><p> x_comflag=0;</p><p> if(keycount==4) keycount++;</p><p&
115、gt; if((mima[0]==cucun[0])&&(mima[1]==cucun[1])&&(mima[2]==cucun[2])&&(mima[3]==cucun[3])){compflag=1;}//判定成功</p><p> if((mima_new[0]==mima_again[0])&&(mima_new[1]==mima_a
116、gain[1])&&(mima_new[2]==mima_again[2])&&(mima_new[3]==mima_again[3]))//修改成功</p><p><b> {</b></p><p> x_comflag=1; mima[0]=mima_again[0];mima[1]=mima_again[1];mima[2
117、]=mima_again[2];mima[3]=mima_again[3];</p><p><b> }</b></p><p><b> }</b></p><p> if(key_num==13) </p><p><b> { </b&g
118、t;</p><p> xg_flag=0; </p><p> keycount=0;</p><p> init();d_display();</p><p><b> }</b></p><p> if(key_num==15)</p><p><
119、b> {</b></p><p> if(keycount<=0) keycount=1;</p><p> keycount--;</p><p> init();b_display();</p><p><b> }</b></p><p><b&g
120、t; }</b></p><p> void main()</p><p><b> {</b></p><p><b> JDQ=1;</b></p><p> loop1:init();</p><p> b_display();<
121、/p><p><b> while(1)</b></p><p><b> {</b></p><p><b> keys();</b></p><p> if((key_num!=0xff)&&(key_num<=9)) </p>&
122、lt;p> {if(new<=4) mima_new[new]=key_num;</p><p> else if(again<=4) mima_again[again]=key_num;</p><p> else cucun[keycount]=key_num;</p><p><b> input();</b>
123、</p><p><b> }</b></p><p> if(key_num==14) { keycount=0;xg_flag=5;again=5;new=5;goto loop1;}</p><p> func();</p><p> if(keycount>4) </p>&
124、lt;p><b> {</b></p><p> if((xg_flag==4)&&(compflag==1)){init();xg_flag=5;compflag=0;new=0;keycount=0; e_display();}</p><p> else if((again==4)&&(x_comflag==1)){
125、init();again=6;x_comflag=0;keycount=0;g_display();delay(2000);goto loop1;}//修改成功</p><p><b> else</b></p><p><b> {</b></p><p> if(compflag==1)</p>&
126、lt;p><b> {</b></p><p> compflag=0;</p><p><b> JDQ=0;</b></p><p><b> init();</b></p><p> c_display();</p><p>
127、delay(500);delay(500);</p><p><b> JDQ=1;</b></p><p><b> cuo=0;</b></p><p> if(again!=6)</p><p> {mima[0]=0;mima[1]=1;mima[2]=2;mima[3]=3;}&l
128、t;/p><p> keycount=0;</p><p> goto loop1;</p><p><b> }</b></p><p> if(compflag==0)</p><p><b> {</b></p><p> beefla
129、g=1;</p><p><b> init();</b></p><p> a_display(); </p><p><b> beef_a();</b></p><p> if(again!=6)</p><p> {again=5;mima[0]=0;mim
130、a[1]=1;mima[2]=2;mima[3]=3;}</p><p> keycount=0; </p><p> goto loop1;</p><p><b> }</b></p><p><b> } </b></p><p><b> }
131、</b></p><p><b> } </b></p><p><b> } </b></p><p><b> 附件</b></p><p><b> 目 錄</b></p><p> 大學本科生畢業(yè)論文
132、(設(shè)計)</p><p> 管理規(guī)定 (2013年11月修訂)……………………1</p><p> 大學本科畢業(yè)論文(設(shè)計)</p><p> 格式和打印要求…………………………………17</p><p> 大學本科畢業(yè)論文(設(shè)計)</p><p> 封面及表格………………………………………27</p&
133、gt;<p> 大學本科畢業(yè)論文(設(shè)計)</p><p> 指導教師職責……………………………………47</p><p> 大學本科畢業(yè)論文(設(shè)計)</p><p> 管理人員職責……………………………………50</p><p> 大學校級優(yōu)秀本科畢業(yè)論文(設(shè)計)</p><p> 評選的有關(guān)
134、規(guī)定…………………………………51</p><p> 大學關(guān)于本科生到校外做畢業(yè)論文(設(shè)計)</p><p> 的有關(guān)規(guī)定………………………………………56</p><p> 大學本科生畢業(yè)論文(設(shè)計)</p><p><b> 管理規(guī)定</b></p><p> 二○一三年十一月修訂&
135、lt;/p><p> 本科生畢業(yè)論文(設(shè)計)【以下簡稱畢業(yè)論文(設(shè)計)】是實現(xiàn)高等學校人才培養(yǎng)目標的重要教學環(huán)節(jié),是培養(yǎng)學生創(chuàng)新意識和創(chuàng)新能力的重要手段,是理論學習與社會實踐相結(jié)合的重要體現(xiàn)。</p><p> 為進一步規(guī)范畢業(yè)論文(設(shè)計)管理,提高畢業(yè)論文(設(shè)計)質(zhì)量,提高我校人才培養(yǎng)工作水平,特制定本規(guī)定。本規(guī)定適用于我校對全校全日制本科生畢業(yè)論文(設(shè)計)的管理,是各學院開展畢業(yè)論文管
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機at89s52數(shù)字密碼鎖設(shè)計畢業(yè)論文
- 基于at89s52的多功能電子密碼鎖設(shè)計【開題報告】
- 課程設(shè)計-- 基于at89s52單片機的密碼鎖設(shè)計
- 電子密碼鎖畢業(yè)論文
- 畢業(yè)論文——電子密碼鎖
- 電子密碼鎖-畢業(yè)論文
- 電子密碼鎖畢業(yè)論文
- 基于at89s52測溫系統(tǒng)畢業(yè)論文
- 基于at89s52數(shù)字電子鐘設(shè)計畢業(yè)論文
- 基于at89s52的往返小車畢業(yè)論文
- 基于at89c51的電子密碼鎖的設(shè)計【畢業(yè)論文】
- 電子密碼鎖設(shè)計畢業(yè)論文
- 基于stc89c52的電子密碼鎖設(shè)計畢業(yè)設(shè)計
- 電子密碼鎖的設(shè)計畢業(yè)論文
- 基于at89s52智能風扇設(shè)計畢業(yè)論文
- 基于at89s52的廣告燈設(shè)計畢業(yè)論文
- 基于pld的電子密碼鎖設(shè)計【畢業(yè)論文】
- 基于plc的電子密碼鎖畢業(yè)論文設(shè)計
- 基于plc的電子密碼鎖畢業(yè)論文設(shè)計
- 畢業(yè)論文范文——電子密碼鎖
評論
0/150
提交評論