畢業論文-電子密碼鎖設計_第1頁
畢業論文-電子密碼鎖設計_第2頁
畢業論文-電子密碼鎖設計_第3頁
畢業論文-電子密碼鎖設計_第4頁
畢業論文-電子密碼鎖設計_第5頁
已閱讀5頁,還剩30頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第1章電子密碼鎖簡介1.1電子密碼鎖的概念什么是電子密碼鎖?“一種通過密碼輸入來控制電路或者是芯片工作,從而控制機械開關的閉合,完成開鎖、閉鎖任務的電子產品。”——百度百科上是這樣解釋的。簡單來說,電子密碼鎖就是能夠實現密碼等信息的設置、存貯、識別和顯示,以及報警信號的接收和發送等功能的電子器件。 1.2電子密碼鎖設計的背景及意義基于單片機的電子密碼鎖的出現,在一定程度上解決了用戶私人財產安全的問題。但是,時代在發展,社會在進步,任何事物只有不斷地進步才能適應時代發展的需求。電子密碼鎖雖然有安全性高、操作簡單等優點,但是卻不如機械鎖價格低廉,因此,在市場上的主流產品還是機械鎖。電子密碼鎖要想取代機械鎖成為市場上的主流,就必須不斷改進,在具有更多功能的同時向更智能化和更低成本化發展。這就需要我們不斷研究電子密碼鎖的設計方法和實現原理。因此,研究基于單片機的電子密碼鎖的設計是很有必要且具有現實意義的。1.3電子密碼鎖的現狀及發展趨勢目前,和西方發達國家相比,我國的電子密碼鎖技術還相對落后。在西方發達國家,電子密碼鎖的種類已經很齊全,技術也比較先進,且在各個領域得到了廣泛應用。在我國,電子密碼鎖技術卻才相當于國際上七十年代的水平,相對來說還很落后。20世紀80年代以來,隨著各種電子集成電路的出現,特別是單片機的面世,電子密碼鎖得到了很大的發展。相對于笨重而構造簡單的傳統機械鎖來說,電子密碼鎖具有體積小,可靠性高的優勢。但是就目前而言,電子密碼鎖的價格相對較高且需要有電源提供能量,使得其使用還局限在一定范圍,特別是在國內,各種條件的制約使得電子密碼鎖暫時難以普及。盡管電子密碼鎖還存在著一些缺陷,但是其安全性高、方便易用、能夠智能報警的優勢卻是傳統鑰匙鎖取代不了的,而且隨著電子信息技術的發展和各種電子器件的價格的不斷降低,電子密碼鎖也將往低成本、多功能的方向發展。1.4設計內容本設計研究的是如何進行電子密碼鎖的設計,本系統由單片機系統、矩陣鍵盤、LED顯示和報警系統組成。系統能完成開鎖、超時報警、超次鎖定、管理員解密、修改用戶密碼基本的密碼鎖的功能。本設計是基于AT89C51單片機為控制核心的密碼鎖設計方案。在本次基于單片機的電子密碼鎖設計中,將采用AT89C51單片機作為控制核心,配合相應的電路和軟件程序,實現密碼的輸入和修改、信息的顯示、鍵盤的鎖定、系統報警、開鎖和閉鎖等功能。在設計中,利用識別密碼是否正確來開鎖或報警,通過串行存儲器AT24C02來實現密碼的修改和存儲

第2章硬件設計2.1系統設計框圖電子密碼鎖的組成框圖,它是以51系列單片機(AT89s51)為核心,配以相應硬件電路,完成密碼的設置、存貯、識別和顯示、驅動電磁執行器并檢測其驅動電流值、接收傳感器送來的報警信號、發送數據等功能。

單片機接收鍵入的代碼,并與存貯在EEPROM中的密碼進行比較,如果密碼正確,則驅動電磁執行器開鎖;如果密碼不正確,則允許操作人員重新輸入密碼,最多可輸入三次;如果三次都不正確,則單片機通過通信線路向智能監控器報警。單片機將每次開鎖操作和此時電磁執行器的驅動電流值作為狀態信息發送給智能監控器,同時將接收來自傳感器接口的報警信息也發送給智能監控器,作為智能化分析的依據。系統結構框圖和仿真電路如下。圖1系統結構框圖圖2系統仿真電路2.2AT89S52單片機介紹AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統可編程Flash存儲器。使用Atmel公司高密度非易失性存儲器技術制造,與工業80C51產品指令和引腳完全兼容。片上Flash允許程序存儲器在系統可編程,亦適于常規編程器。在單芯片上,擁有靈巧的8位CPU和在系統可編程Flash,使得AT89S52為眾多嵌入式控制應用系統提供高靈活、超有效的解決方案。AT89S52具有以下標準功能:8k字節Flash,256字節RAM,32位I/O口線,看門狗定時器,2個數據指針,三個16位定時器/計數器,一個6向量2級中斷結構,全雙工串行口,片內晶振及時鐘電路。另外,AT89S52可降至0Hz靜態邏輯操作,支持2種軟件可選擇節電模式。空閑模式下,CPU停止工作,允許RAM、定時器/計數器、串口、中斷繼續工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。

圖3單片機引腳圖圖3單片機引腳圖引腳介紹如圖3所示Vcc;電源GND;接地P0口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅動8個TTL邏輯電平。

對P0端口寫“1”時,引腳用作高阻抗輸入。當訪問外部程序和數據存儲器時,P0口也被作為低8位地址/數據復用。在這種模式下,P0具有內部上拉電阻。在flash編程時,P0口也用來接收指令字節;在程序校驗時,輸出指令字節。程序校驗時,需要外部上拉電阻。P1口:P1

口是一個具有內部上拉電阻的8

位雙向I/O

口,p1

輸出緩沖器能驅動4

個TTL邏輯電平。

對P1

端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1.2分別作定時器/計數器2的外部計數輸入(P1.0/T2)和時器/計數器2的觸發輸入(P1.1/T2EX),具體如下表3-1所示。在flash編程和校驗時,P1口接收低8位地址字節。P2口:P2

口是一個具有內部上拉電阻的8

位雙向I/O

口,P2

輸出緩沖器能驅動4

個TTL

邏輯電平。

對P2

端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲器或用16位地址讀取外部數據存儲器(例如執行MOVX

@DPTR)時,P2

口送出高八位地址。在這種應用中,P2

口使用很強的內部上發送1。在使用8位地址(如MOVX

@RI)訪問外部數據存儲器時,P2口輸出P2鎖存器的內容。在flash編程和校驗時,P2口也接收高8位地址字節和一些控制信號。P3口:P3口是一個具有內部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅動4個TTL邏輯電平。對P3端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。P3口亦作為AT89S52特殊功能(第二功能)使用,如表3-2所示。

在flash編程和校驗時,P3口也接收一些控制信號。RST:

復位輸入。

晶振工作時,RST腳持續2

個機器周期高電平將使單片機復位。看門狗計時完成后,RST

腳輸出96

個晶振周期的高電平。

ALE/PROG:地址鎖存控制信號(ALE)是訪問外部程序存儲器時,鎖存低8

位地址的輸出脈沖。在flash編程時,此引腳(PROG)也用作編程輸入脈沖。

在一般情況下,ALE

以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時器或時鐘使用。

PSEN:外部程序存儲器選通信號(PSEN)是外部程序存儲器選通信號。

當AT89S52從外部程序存儲器執行外部代碼時,PSEN在每個機器周期被激活兩次,而在訪問外部數據存儲器時,PSEN將不被激活。

EA/VPP:訪問外部程序存儲器控制信號。

為使能從0000H

到FFFFH的外部程序存儲器讀取指令,EA必須接GND。為了執行內部程序指令,EA應接VCC。在flash編程期間,EA也接12伏VPP電壓。

XTAL1:振蕩器反相放大器和內部時鐘發生電路的輸入端。

XTAL2:振蕩器反相放大器的輸出端。2.3鍵盤電路設計每一條水平(行線)與垂直線(列線)的交叉處不相通,而是通過一個按鍵來連通,利用這種行列式矩陣結構只需要N條行線和M條列線,即可組成具有N×M個按鍵的鍵盤。在這種行列式矩陣鍵盤非鍵盤編碼的單片機系統中,鍵盤處理程序首先執行等待按鍵并確認有無按鍵按下的程序段。當確認有按鍵按下后,下一步就要識別哪一個按鍵按下。對鍵的識別通常有兩種方法:一種是常用的逐行掃描查詢法;另一種是速度較快的線反轉法。對照圖4所示的4×4鍵盤,說明線反轉個工作原理。首先辨別鍵盤中有無鍵按下,有單片機I/O口向鍵盤送全掃描字,然后讀入行線狀態來判斷。方法是:向行線輸出全掃描字00H,把全部列線置為低電平,然后將列線的電平狀態讀入累加器A中。如果有按鍵按下,總會有一根行線電平被拉至低電平從而使行線不全為1。判斷鍵盤中哪一個鍵被按下使通過將列線逐列置低電平后,檢查行輸入狀態來實現的。方法是:依次給列線送低電平,然后查所有行線狀態,如果全為1,則所按下的鍵不在此列;如果不全為1,則所按下的鍵必在此列,而且是在與零電平行線相交的交點上的那個鍵。圖4鍵盤電路圖2.4報警電路設計聲音的產生是一種音頻振動的效果,振動的頻率高則為高音,頻率底則為低音。音頻的范圍為20Hz~200kHz之間,人類耳朵比較容易辨識的聲音大概是200Hz~20kHz。一般音響電路是以正弦波信號驅動喇叭,產生悅耳的音樂的,而在數字電路中,則是以脈沖信號驅動喇叭以產生聲音。

本系統使用的蜂鳴器產生的聲音是利用程序產生頻率,送到輸出端口。利用LED燈表示輸入密碼正確與否,紅色表示密碼錯誤,蜂鳴器發出報警聲,密碼正確時,綠色LED燈亮。圖5報警電路2.5顯示電路設計本系統設計的顯示電路是為了給使用者以提示而設置的,使用LCD可以為用戶提供更友好的人機界面,故選用LCD1602作為顯示器件。開鎖時,按下鍵盤上的開鎖按鍵后,利用鍵盤上的數字鍵0-9輸入密碼,每按下一個數字鍵后在顯示器上顯示一個*,輸入多少位就顯示多少個*。當密碼輸入完成時,按下確認鍵,如果輸入的密碼正確的話,LCD顯示“OK”,單片機其中P3.0引腳會輸出低電平,使三極管T2導通,電磁鐵吸合,繼電器開關跳轉,電子密碼鎖被打開,如果密碼不正確,LCD顯示屏會顯示“youarethief!”,P3.0輸出的是高電平,電子密碼鎖不能打開。通過LCD顯示屏,可以清楚地判斷出密碼鎖所處的狀態。2.6開鎖電路設計因為在設計中是以發光二極管代替電磁鎖,二極管亮代表鎖開,因此可以設計一個簡單的可以點亮二極管的電路系統代替電磁鎖開鎖機構。開鎖顯示電路如圖6所示由于單片機I/O口默認為高電平,故初始時二極管不亮,代表鎖是閉著的。當用戶輸入密碼并驗證正確時,發出開鎖信號(使P2.4=0)。圖6開鎖電路第3章軟件設計4.1工具軟件介紹4.1.1Kell軟件介紹KeilC51是美國KeilSoftware公司出品的51系列兼容單片機C語言軟件開發系統,與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優勢,因而易學易用。Keil提供了包括C編譯器、宏匯編、鏈接器、庫管理和一個功能強大的仿真調試器等在內的完整開發方案,通過一個集成開發環境(μVision)將這些部分組合在一起。運行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統。如果使用C語言編程,那么Keil幾乎就是不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環境、強大的軟件仿真調試工具也會令你事半功倍KeilC51開發系統基本知識⒈系統概述KeilC51軟件提供豐富的庫函數和功能強大的集成開發調試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到Keil的優勢。下面詳細介紹KeilC51開發系統各部分功能和使用。⒉KeilC51單片機軟件開發系統的整體結構C51工具包的整體結構,μVision與Ishell分別是C51forWindows和forDos的集成開發環境(IDE),可以完成編輯、編譯、連接、調試、仿真等整個開發流程。開發人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及C51編譯器編譯生成目標文件(.obj)。目標文件可由LIB51創建生成庫文件,也可以與庫文件一起經L51連接定位生成絕對目標文件(.abs)。abs文件由OH51轉換成標準的hex文件,以供調試器dScope51或tScope51使用進行源代碼級調試,也可由仿真器使用直接對目標板進行調試,也可以直接寫入程序存貯器如EPROM中。使用獨立的Keil仿真器時,注意事項仿真器標配11.0592MHz的晶振,但用戶可以在仿真器上的晶振插孔中換插其他頻率的晶振。仿真器上的復位按鈕只復位仿真芯片,不復位目標系統,仿真芯片的31腳(/EA)已接至高電平,所以仿真時只能使用片內ROM,不能使用片外ROM;但仿真器外引插針中的31腳并不與仿真芯片的31腳相連,故該仿真器仍可插入到擴展有外部ROM(其CPU的/EA引腳接至低電平)的目標系統中使用。4.1.2Proteus仿真軟件介紹Proteus軟件是英國Labcenterelectronics公司出版的EDA工具軟件(該軟件中國總代理為廣州風標電子技術有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機及外圍器件的工具。雖然目前國內推廣剛起步,但已受到單片機愛好者、從事單片機教學的教師、致力于單片機開發應用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調試到單片機與外圍電路協同仿真,一鍵切換到PCB設計,真正實現了從概念到產品的完整設計。是目前世界上唯一將電路仿真軟件、PCB設計軟件和虛擬模型仿真軟件三合一的設計平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即將增加Cortex和DSP系列處理器,并持續增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。4.2程序設計調試圖7程序框圖4.3程序仿真本設計經過kell的編輯,反復修改后,生成hex文件通過proteus進行仿真,調試過程主要包括兩方面:測試和調整,調試的整個過程就是一系列的測量、判斷、調整、再測量的反復進行過程。本系統調試采用的是先分調再總調。調試過程中,要依照信號流程,分步逐級進行調試,并取得了預期的結果。第4章設計總結5.1設計總結本系統由單片機系統、矩陣鍵盤、LCD顯示和報警系統組成。系統能完成開鎖、錯誤報警,超次鎖定、修改用戶密碼,恢復初始密碼基本的密碼鎖的功能。除上述基本的密碼鎖功能外,還有聲音提示等功能,依據實際的情況還可以添加遙控功能。本系統利用單片機控制,LCD顯示,配合蜂鳴器提示,系統成本低廉,功能強大實用。但是在系統調試過程中,還是發現一些問題,系統不穩定情況時有發生,經過反復調試發現下列問題:按鍵效果不好,產生較大狀況的抖動,使軟件消抖不完全;另外一個就是單片機本身不問題,引起系統跑飛或者卡死;還有就是由于電路板制作的原因,線路之間產生干擾,系統發生錯誤,比如液晶顯示錯誤等等。經過反復調試和修改,最好終于達到一個比較滿意的水平。本系統設計還做的不是太人性化,比如說能夠加上語音提示和遙控開鎖功能,將可能會更加有生命力!致謝我非常感謝我的導師袁科新老師。這篇論文是在袁科新老師的精心指導和親切關懷下完成的。從最初的定題,到收集資料,到論文修改,袁科新老師始終悉心指導、無私幫助。袁科新老師嚴謹的治學態度,科學的學習方法以及無私奉獻的敬業精神將使我終身受益。在此,謹向袁科新老師致以深深的敬意和誠摯的感謝。本論文的完成,還得到了信息工程學院其他老師的關懷和指導,在此向所有給予我幫助和關懷的老師們說一聲:謝謝!畢業論文的收尾,也意味著我在袁科新大學的三年學習生活即將結束,自己最寶貴的青春時光能在這樣的校園中,能在這些學富五車、才華橫溢的老師們得熏陶下度過,我在思想和學業上受益匪淺。最后,再次向關心和幫助我的老師,親人,同學和朋友表示我最真摯的謝意。謝謝你們!

參考文獻[1]江曉安,董秀峰.

模擬電子技術.第3版.西安:

西安電子科技大學出版社2001.p34-39[2]陳明熒.

8051單片機課程設計.

第2版.北京:清華大學出版社,

2003.p45-67[3]邢敏華.模擬、數字及電力電子技術.第4版.北京:機械工業出版社,2013.p56-76[4]陳中平.51單片機C語言程序設計經典實例.第5版.北京:電子工業出版社,2012.p67-89[5]胡宴如.模擬電子技術.耿蘇燕.第4版.北京;高等教育出版社,2013:p83-93[6]楊志忠.數字電子技術.第4版.北京:高等教育出版社,2013:p240-244[7]陸國和.電路與電工技術.顧永杰.第3版.北京:高等教育出版社,2010:p253-285[8]王靜霞.單片機應用技術.楊宏麗.第2版.北京:電子工業出版社,2014:p141-150[9]朱巖.工業用微型計算機.2011年版.北京:機械工業出版社,2011:p182-227

附錄源程序代碼#include<reg52.h>#include<string.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#defineLCDIOP0#definedelay4us()_nop_();_nop_();_nop_();_nop_();ucharbuffer[6]={0};sbitsda=P3^4;sbitscl=P3^3;sbitbeep=P3^7;sbitrelay=P2^3;sbithuifu=P2^6;bitflag=0,aa; //用戶zi定時溢出標志位ucharDSY_BUFFER[16]="";ucharDSY_BUFFER1[16]="";ucharUserpassword[6]={0};ucharMem[6]={0};sbitrs=P2^0;sbitrd=P2^1;sbitlcden=P2^2;sbitled=P2^4;sbitled1=P2^7;ucharcodetable2[]="123456";ucharcodetable[]="Inputyourcode:";voiddelayms(uintz){ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voiddelay() //短延時,兩個機器周期,做總線的延時用{;;}voidwrite_com(ucharcom){ rs=0; rd=0; lcden=0; P0=com; delayms(3); lcden=1; delayms(3); lcden=0; }voidwrite_date(uchardate){ rs=1; rd=0; lcden=0; P0=date; delayms(3); lcden=1; delayms(3); lcden=0; }voidDisplay_String(uchar*p,ucharcom){uchari;write_com(com);for(i=0;i<16;i++){write_date(p[i]); }}voidinit_lcd(){ lcden=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80);Display_String(table,0x80); Display_String("===LockOK!======",0xc0);}voidstart(){ sda=1; scl=1; delay4us(); sda=0; delay4us(); scl=0;}voidstop(){ sda=0; scl=1; delay4us(); sda=1; delay4us(); scl=0;}voidinit() //初始化{sda=1;delay();scl=1;delay();}voidack(){ sda=0; scl=1; delay4us(); scl=0; sda=1;}voidnoack(){ sda=1; scl=1; delay4us(); scl=0; sda=0;}ucharrecbyte(){ uchari,rd; rd=0x00; sda=1; for(i=0;i<8;i++) { scl=1; rd<<=1; rd|=sda; delay4us(); scl=0; delay4us(); } scl=0; delay4us(); returnrd;}ucharsendbyte(ucharwd){ uchari; bitack0; for(i=0;i<8;i++) { sda=(bit)(wd&0x80); _nop_(); _nop_(); scl=1; delay4us(); scl=0; wd<<=1; } delay4us(); sda=1; scl=1; delay4us(); ack0=!sda; scl=0; delay4us(); returnack0;}ucharRecstring(ucharslave,ucharsubaddr,uchar*buffer,ucharn){uchari;start();if(!sendbyte(slave))return0;if(!sendbyte(subaddr))return0;start();if(!sendbyte(slave+1))return0;for(i=0;i<n-1;i++){ buffer[i]=recbyte(); ack();}buffer[n-1]=recbyte();noack();stop();return1;}ucharSendstring(ucharslave,ucharsubaddr,uchar*buffer,ucharn){ uchari; start(); if(!sendbyte(slave))return0; if(!sendbyte(subaddr))return0; for(i=0;i<n;i++) { if(!sendbyte(buffer[i]))return0; } stop(); return1;}voidclear_password(){ uchari; for(i=0;i<6;i++) { Userpassword[i]=''; } for(i=0;i<16;i++) { DSY_BUFFER[i]=''; }}ucharKeys_Scan(){ uchartemp,keynum; P1=0x0F; delayms(5); temp=P1^0x0F; //掃描行線值 switch(temp) { case1:keynum=1;break; case2:keynum=4;break; case4:keynum=7;break; case8:keynum=10;break; break; } P1=0xF0; delayms(5); temp=P1>>4^0x0f; switch(temp) { case8:keynum+=0;break; case4:keynum+=1;break; case2:keynum+=2;break; case1:keynum+=12;break; break; } delayms(600);returnkeynum;}voidmain(){uchartemp,i=0,j=0,k=0,n,m=0,flay,error,ne=1; ucharIS_valid_user; relay=1; init(); init_lcd(); delayms(5); P1=0x0f; while(1) {if(!huifu==1) {aa=Sendstring(0xa0,1,table2,6); delayms(10); aa=Recstring(0xa0,1,buffer,6); } else aa=Recstring(0xa0,1,buffer,6); if(P1!=0x0f) {delayms(10); if(P1!=0x0f) { temp=Keys_Scan(); switch(temp){case11:temp=0;case1:case2:case3:case4:case5:case6:case7:case8:case9:if(i<=5)//密碼限制在6位以內{Userpassword[i]=temp;DSY_BUFFER[i]='*';Display_String(DSY_BUFFER,0xc0); i++; } break; case19: //按F鍵清除一位 if(i!=0) {i--; for(n=0;n<i;n++) { DSY_BUFFER1[n]=temp+'*'; } } Display_String(DSY_BUFFER1,0xc0); break;case12://按Enter鍵開鎖 for(k=0;k<6;k++) { if(buffer[k]==(Userpassword[k]+48)) flag=1; else flag=0; } if(flag==1) { flag=0; i=0; led=0;//點亮LED relay=0;//開鎖 clear_password(); Display_String("OPENOK!",0xc0); IS_valid_user=1; j=0; error=0; } else { j++; error++; led=1;//關閉LED clear_password(); Display_String("ERROR!Retry:",0xc0); write_com(0xcf); write_date(0x30+j); IS_valid_user=0; } i=0; break;case10://按Lock鍵上鎖 led=1; relay=1; //關閉鎖 clear_password(); Display_String(table,0x80); Display_String("===LockOK!=====",0xc0); i=0; IS_valid_user=0; break;case13://按C鍵設置新密碼//如果是合法用戶則提示輸入新密碼 if(!IS_valid_user) { i=0; Display_String("==Norights!==",0xc0); delayms(1000); Display_String("YourPassword...",0x80); Display_String("===LockOK!====",0xc0); } else { i=0; newcode:Display_String("NewPassword:",0x80); Display_String("",0xc0); } break;case16://按D鍵保存新密碼 if(!IS_valid_user) { i=0; Display_String("==Norights!==",0xc0); delayms(1000); Display_String("YourPassword...",0x80); Display_String("===LockOK!====",0xc0); } else {i=0; init(); flay=1; //密碼校驗位置1 delayms(5); if(m>0) //在第二次輸入密碼 { for(k=0;k<6;k++) { flay=flay&&(Mem[k]==(Userpassword[k]+48)); //將第二次的密碼與第一次的密碼進行比較 } } if(flay) //如果校驗位為1則第二次密碼放入存儲器 { for(k=0;k<6;k++) { Userpassword[k]=Userpassword[k]+48; } for(k=0;k<6;k++) {Mem[k]=Userpassword[k]; //密碼放入緩沖區便于比對 ne=ne&&(Userpassword[k+1]==Mem[k]); } if(ne) {Display_String("Codeissamenum",0x80); // Display_String("",0xc0); delayms(1000); Mem[6]=0; DSY_BUFFER[6]=0; m=0; gotonewcode; } else { clear_password(); Display_String(table,0x00); Display_String("PasswordSaved!",0xc0); delayms(1000); m++; if(m<2)gotonewcode; //如果沒有到第二次就繼續輸入 else { aa=Sendstring(0xa0,1,Mem,6); delayms(5);

溫馨提示

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

評論

0/150

提交評論