基于protues的電子密碼鎖設(shè)計(jì)_第1頁(yè)
基于protues的電子密碼鎖設(shè)計(jì)_第2頁(yè)
基于protues的電子密碼鎖設(shè)計(jì)_第3頁(yè)
基于protues的電子密碼鎖設(shè)計(jì)_第4頁(yè)
基于protues的電子密碼鎖設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、本科生學(xué)年論文(設(shè)計(jì))(2011級(jí))論文(設(shè)計(jì))題目 基于protues的電子密碼鎖設(shè)計(jì) 作 者 姚曉強(qiáng) 系 專業(yè) 電氣信息工程 班 級(jí) 電子1102 指導(dǎo)教師(職稱) 孫亞萍(講師) 字 數(shù) 6280 成果完成時(shí)間 2013-12-26 杭州師范大學(xué)錢江學(xué)院教學(xué)部制基于protues的電子密碼鎖設(shè)計(jì)電氣信息專業(yè)1102班姚曉強(qiáng) 指導(dǎo)教師孫亞萍摘 要:本文以AT89C51單片機(jī)為核心器件,結(jié)合按鍵電路、LED數(shù)碼管顯示電路、報(bào)警指示電路和開鎖機(jī)構(gòu),利用單片機(jī)靈活的編程設(shè)計(jì)和豐富的I/O端口,及其控制的準(zhǔn)確性通過(guò)軟件程序來(lái)控制整個(gè)系統(tǒng)實(shí)現(xiàn)電子密碼鎖的基本功能,其主要具有如下功能:密碼通過(guò)鍵盤輸入

2、,若密碼正確,則將鎖打開密碼輸入錯(cuò)誤,蜂鳴器將報(bào)警提示用戶可以自由設(shè)定密碼本密碼鎖具有設(shè)計(jì)方法合理,簡(jiǎn)單易行成本低,安全實(shí)用等特點(diǎn),具有一定的推廣價(jià)值。關(guān)鍵詞:AT89C51;電子密碼鎖;功能The design of electroniclock on the ProtuesYao Xiaoqiang Instructor: Sun YapingAbstract: Based on the AT89C51 single-chip microcomputer as the core device, combining with the key circuit, LED digital tube

3、 display circuit, an alarm circuit and unlocking mechanism, design the whole system to achieve the basic functions of electronic cipher lock by its flexible programming , rich I / O port, and accuracy basing on the software program . With the following functions :Input password through the keyboard,

4、 if the password is correct, lock will open If the password is error, the buzzer will alarm Users can freely set the password The lock has some features like a reasonable design methods,simple to work,low cost and security,it also has some promotion value.Key words: AT89C51 ; Electronic lock ; Funct

5、ion目錄第一章 引言11.1 研究背景11.2 應(yīng)用現(xiàn)狀12.1 Protues軟件概述22.2 Protues軟件的功能和特點(diǎn)2第三章 電子密碼鎖電路的設(shè)計(jì)23.1 電子密碼鎖的工作原理23.2系統(tǒng)的總體思路設(shè)計(jì)33.3主要元器件介紹33.3.1 AT89C51介紹33.3.2 LED數(shù)碼管介紹53.3.3 LED矩陣鍵盤介紹6第四章 電子密碼鎖的仿真分析64.1 Protues原理圖設(shè)計(jì)64.1.1單片機(jī)主控制模塊(含晶振、復(fù)位基本工作電路)74.1.2鍵盤輸入模塊74.1.3顯示模塊84.1.4報(bào)警模塊和開鎖模塊94.2仿真效果總圖10總結(jié)10參考文獻(xiàn)10附錄11基于protues的電

6、子密碼鎖設(shè)計(jì)電子信息專業(yè)1102班姚曉強(qiáng) 指導(dǎo)教師孫亞萍第一章 引言1.1 研究背景電子線路的設(shè)計(jì)需要經(jīng)過(guò)設(shè)計(jì)方案提出、方案驗(yàn)證和修改三個(gè)階段,有時(shí)甚至需要經(jīng)過(guò)多次的反復(fù)。傳統(tǒng)的設(shè)計(jì)方法一般是采用搭接實(shí)驗(yàn)電路的方法進(jìn)行,這種方法費(fèi)時(shí)、費(fèi)用高、效率低。隨著計(jì)算機(jī)技術(shù)水平的不斷提高,電子線路設(shè)計(jì)仿真軟件迅速發(fā)展起來(lái),EDA1(Electronic Design Automation 電子設(shè)計(jì)自動(dòng)化)技術(shù)應(yīng)運(yùn)而起,功能日益強(qiáng)大,運(yùn)行速度快,使得電子線路設(shè)計(jì)人員能在計(jì)算機(jī)上完成電路的功能設(shè)計(jì)、邏輯設(shè)計(jì)、性能分析等等。Protues軟件是英國(guó)Labcenter electronics公司出版的EDA工具

7、軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。雖然目前國(guó)內(nèi)推廣剛起步,但已受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。1.2 應(yīng)用現(xiàn)狀現(xiàn)今常見的密碼鎖設(shè)計(jì)主要有兩種方案,一種是中規(guī)模集成電路控制的方案,另一種是單片機(jī)控制的方案。對(duì)于采用集成電路控制的方案,其中的編碼電子鎖電路分為編碼電路、控制電路、復(fù)位電路、解碼電路、防盜報(bào)警電路、門鈴電路,而電子鎖主要由輸入元件、電路(包括電源)以及鎖體三部分組成。顯然此種方案的物理實(shí)現(xiàn)結(jié)構(gòu)較為復(fù)雜且重新設(shè)置密碼、輸入密碼的操作過(guò)程也會(huì)給用戶帶來(lái)一定的不方

8、便;而利用單片機(jī)控制的方案,由于單片機(jī)靈活的編程設(shè)計(jì)和豐富的I/O端口,及其控制的準(zhǔn)確性,不但能實(shí)現(xiàn)基本的密碼鎖功能,還能添加掉電存儲(chǔ)、聲光提示甚至添加遙控控制功能,但其也有一定的局限性,就在于其控制原理的復(fù)雜以及要求設(shè)計(jì)人員具有更加良好的程序設(shè)計(jì)能力,調(diào)試較為繁瑣,否則程序一旦跑飛將造成意想不到的損失。通過(guò)對(duì)這兩種方案的優(yōu)缺點(diǎn)比較,再考慮到本人自己對(duì)單片機(jī)設(shè)計(jì)具有一定的基礎(chǔ),所以此次選擇利用單片機(jī)來(lái)進(jìn)行密碼鎖的設(shè)計(jì)。第二章 Protues軟件包介紹2.1 Protues軟件概述Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PC

9、B設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。迄今為止是世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái),其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即將增加Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MATLAB等多種編譯。2.2 Protues軟件的功能和特點(diǎn)Protues軟件具有其它EDA工具軟件(例:multisim)的功能。這些功能是:(1)原理布圖(2)PCB自動(dòng)或人工布線(3)SPICE電路仿真第三章

10、電子密碼鎖電路的設(shè)計(jì)3.1 電子密碼鎖的工作原理以AT89C51單片機(jī)為主控制單元,鍵盤為主要輸入單元,結(jié)合開鎖裝置、報(bào)警器和顯示器完成整個(gè)系統(tǒng)設(shè)計(jì)。它的系統(tǒng)結(jié)構(gòu)圖如圖.3.1所示:圖.3.1系統(tǒng)結(jié)構(gòu)圖3.2系統(tǒng)的總體思路設(shè)計(jì)系統(tǒng)的運(yùn)行過(guò)程大致如下:假設(shè)初始狀態(tài)為閉鎖,此時(shí)整個(gè)系統(tǒng)只等待按鍵輸入,數(shù)碼管也不顯示。先按除號(hào)鍵修改密碼,每按下一個(gè)數(shù)據(jù)鍵(即每輸入一個(gè)密碼),數(shù)碼管相應(yīng)的顯示一個(gè)“-”標(biāo)志,當(dāng)密碼全部輸入完成后,需按下確認(rèn)鍵“ON/C”。設(shè)置密碼后,先按“+”復(fù)位,然后輸入密碼,輸入完畢后按下確認(rèn)鍵“ON/C”,此時(shí)系統(tǒng)判斷密碼是否正確,正確則開鎖(仿真中以數(shù)碼管顯示全8、綠色LED

11、燈亮為標(biāo)志),錯(cuò)誤則報(bào)警,此后數(shù)碼管熄滅繼續(xù)等待按鍵。3.3主要元器件介紹3.3.1 AT89C51介紹AT89C51是一種帶4K字節(jié)FLASH存儲(chǔ)器(FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)

12、提供了一種靈活性高且價(jià)廉的方案。 圖3.3.1.1 AT89C51封裝圖 圖3.3.1.2 AT89C51引腳圖 AT89C51主要特性: 1. 與MCS-51 兼容2. 4K字節(jié)可編程FLASH存儲(chǔ)器3. 壽命:1000寫/擦循環(huán)4. 數(shù)據(jù)保留時(shí)間:10年5. 全靜態(tài)工作:0Hz-24MHz6. 三級(jí)程序存儲(chǔ)器鎖定7. 1288位內(nèi)部RAM832可編程I/O線9. 兩個(gè)16位定時(shí)器/計(jì)數(shù)器105個(gè)中斷源11可編程串行通道12. 低功耗的閑置和掉電模式13. 片內(nèi)振蕩器和時(shí)鐘電路AT89C51單片機(jī)引腳: VCC:供電電壓。 GND:接地。 P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可

13、吸收8TTL門電流。當(dāng)P0口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的低八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須接上拉電阻。 P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為低八位地址接收。 P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)

14、P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是

15、由于上拉的緣故。 P3口也可作為AT89C51的一些特殊功能口,如下表所示: 口管腳 備選功能 P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口) P3.2 /INT0(外部中斷0) P3.3 /INT1(外部中斷1) P3.4 T0(記時(shí)器0外部輸入) P3.5 T1(記時(shí)器1外部輸入) P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫選通) P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通) P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。 RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。 ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)

16、。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。 /PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。 /EA/VPP:當(dāng)/

17、EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 XTAL2:來(lái)自反向振蕩器的輸出。 振蕩器特性: XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要

18、求,但必須保證脈沖的高低電平要求的寬度。3.3.2 LED數(shù)碼管介紹圖3.3.2數(shù)碼管LED數(shù)碼管實(shí)際上是由七個(gè)發(fā)光管組成8字形構(gòu)成的,加上小數(shù)點(diǎn)就是8個(gè)。這些段分別由字母a,b,c,d,e,f,g,dp來(lái)表示。當(dāng)數(shù)碼管特定的段加上電壓后,這些特定段就會(huì)發(fā)亮,以形成我們眼睛看到的樣子。 以“2”為例,應(yīng)當(dāng)是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。LED數(shù)碼管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。小尺寸數(shù)碼管的顯示筆畫常用一個(gè)發(fā)光二極管組成,而大尺寸的數(shù)碼管由二個(gè)或多個(gè)發(fā)光二極管組成,一般情況下,單個(gè)發(fā)光二極管的管壓降為1.8V左右,電流不超過(guò)30mA。發(fā)光二極管的陽(yáng)極連接

19、到一起連接到電源正極的稱為共陽(yáng)數(shù)碼管,發(fā)光二極管的陰極連接到一起連接到電源負(fù)極的稱為共陰數(shù)碼管。常用LED數(shù)碼管顯示的數(shù)字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。3.3.3 LED矩陣鍵盤介紹在鍵盤中按鍵數(shù)量較多時(shí),為了減少I/O口的占用,通常將按鍵排列成矩陣形式,如圖1所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過(guò)一個(gè)按鍵加以連接。這樣,一個(gè)端口(如P1口)就可以構(gòu)成4*4=16個(gè)按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需

20、要的鍵數(shù)比較多時(shí),采用矩陣法來(lái)做鍵盤是合理的。矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識(shí)別也要復(fù)雜一些,上圖中,列線通過(guò)電阻接正電源,并將行線所接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當(dāng)按鍵沒有按下時(shí),所有的輸入端都是高電平,代表無(wú)鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會(huì)被拉低,這樣,通過(guò)讀入輸入線的狀態(tài)就可得知是否有鍵按下了。本設(shè)計(jì)采用Protues庫(kù)中KEYPAD-SMALLCALC作為鍵盤。第四章 電子密碼鎖的仿真分析4.1 Protues原理圖設(shè)計(jì)4.1.1單片機(jī)主控制模塊(含晶振、復(fù)位基本工作電路)圖4.1.1主控制模塊4.1.2鍵盤輸入模塊

21、本設(shè)計(jì)中采用Protues庫(kù)中KEYPAD-SMALLCALC作為鍵盤,與AT89C51的P3口相連,提供按鍵輸入,如圖4.1.2:圖4.1.2 鍵盤輸入模塊按鍵鍵名功能說(shuō)明19鍵數(shù)字鍵輸入密碼鍵重設(shè)密碼鍵設(shè)定新密碼+鍵復(fù)位鍵密碼全部一次刪除=鍵密碼刪除鍵一次刪除一位密碼ON/C鍵確定鍵確認(rèn)密碼輸入完畢表4.1.2按鍵功能4.1.3顯示模塊圖4.1.3 顯示模塊此設(shè)計(jì)中,使用了四個(gè)共陽(yáng)極數(shù)碼管,使用動(dòng)態(tài)顯示技術(shù)控制數(shù)碼管。其6個(gè)位選信號(hào)與P2.0-P2.5相連,當(dāng)其中某位為低電平時(shí)表示選中該位;8段段選信號(hào)與P0口相連,當(dāng)其中某段為高電平時(shí)導(dǎo)通該段,特殊的,由于AT89C51的P0口的驅(qū)動(dòng)能力

22、較弱,不足以驅(qū)動(dòng)數(shù)碼管點(diǎn)亮,故在此又引入上拉電阻以驅(qū)動(dòng)數(shù)碼管。關(guān)于上拉電阻有如下介紹:1、當(dāng)TTL電路驅(qū)動(dòng)CMOS電路時(shí),如果電路輸出的高電平低于CMOS電路的最低高電平(一般為3.5V), 這時(shí)就需要在TTL的輸出端接上拉電阻,以提高輸出高電平的值。 2、OC門電路必須加上拉電阻,以提高輸出的高電平值。3、為加大輸出引腳的驅(qū)動(dòng)能力,有的單片機(jī)管腳上也常使用上拉電阻。4、在CMOS芯片上,為了防止靜電造成損壞,不用的管腳不能懸空,一般接上拉電阻產(chǎn)生降低輸入阻抗, 提供泄荷通路。5、芯片的管腳加上拉電阻來(lái)提高輸出電平,從而提高芯片輸入信號(hào)的噪聲容限增強(qiáng)抗干擾能力。6、提高總線的抗電磁干擾能力。管

23、腳懸空就比較容易接受外界的電磁干擾 。7、長(zhǎng)線傳輸中電阻不匹配容易引起反射波干擾,加上下拉電阻是電阻匹配,有效的抑制反射波干擾。4.1.4報(bào)警模塊和開鎖模塊圖4.1.4 報(bào)警和開鎖模塊4.2仿真效果總圖圖4.2輸入正確密碼時(shí)仿真效果總圖總結(jié)通過(guò)上述設(shè)計(jì)電路的仿真分析,不難發(fā)現(xiàn)使用單片機(jī)制作的電子密碼鎖具有軟硬件設(shè)計(jì)簡(jiǎn)單,易于開發(fā),成本較低,安全可靠,操作方便等特點(diǎn)。正是由于單片機(jī)的眾多優(yōu)良特性的吸引,最終從經(jīng)濟(jì)實(shí)用的角度出發(fā),采用單片機(jī)AT89C51作為主控芯片,結(jié)合外圍的鍵盤輸入、顯示、報(bào)警、開鎖等電路,用C語(yǔ)言編寫主控芯片的控制程序,設(shè)計(jì)了一款可以多次更改密碼具有報(bào)警功能的電子密碼鎖。參考

24、文獻(xiàn)1 于殿泓,王新年.單片機(jī)原理與程序設(shè)計(jì)實(shí)驗(yàn)教程M.西安電子科技大學(xué)出版社,2007.127-151頁(yè).2 趙文博,劉文濤.單片機(jī)語(yǔ)言C51程序設(shè)計(jì)M人民郵電出版社,2005.258-294頁(yè).附錄#include#define uchar unsigned char#define uint unsigned intuint num=10;/開始讓數(shù)碼管什么都顯示bit set=0;/定義設(shè)置密碼的位char count=-1;/開始讓COUNT=-1,方便后面顯示數(shù)碼管sbit Beep=P12; /蜂鳴器uchar temp;uchar pws6=8,8,8,8,8,8;/原始密碼uc

25、har pwx6;/按下的數(shù)字存儲(chǔ)區(qū)bit rightflag;/密碼正確標(biāo)志位uchar workbuf6;uchar code tabledu=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40;/段選碼,共陰極uchar code tablewe=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;/位選碼uint keyscan();void delay(uchar z)/延時(shí),ms級(jí)uchar y;for(;z0;z-)for(y=120;y0;y-);void setpw()/設(shè)置密碼函數(shù)keyscan()

26、;uint keyscan()/鍵盤掃描函數(shù)P3=0xfe;temp=P3;temp=temp&0xf0;if(temp!=0xf0)delay(5);/鍵盤去抖,最好20ms以上,這里用了5mstemp=P3;temp=temp&0xf0;if(temp!=0xf0)count+;/按鍵計(jì)數(shù)加1temp=P3;switch(temp)case 0xee: num=7;if(count6)/六位密碼,所以COUNT6if(set=0)/設(shè)置密碼鍵沒有按下時(shí)pwxcount=num; /存儲(chǔ)按下的數(shù)字elsepwscount=num; /設(shè)置密碼鍵按下時(shí),設(shè)置新密碼workbufcount=ta

27、bledu11; /相應(yīng)位的數(shù)碼管顯示-,不顯示相應(yīng)的數(shù)字,密碼是保密的break;case 0xde: num=8;if(count6)/以下掃描鍵盤的原理差不多同上if(set=0)pwxcount=num;elsepwscount=num;workbufcount=tabledu11;break;case 0xbe: num=9;if(count6)if(set=0)pwxcount=num;elsepwscount=num;workbufcount=tabledu11; break;case 0x7e:/設(shè)置密碼鍵按下set=1;/設(shè)置密碼標(biāo)志位置1P1_3=0;/設(shè)置密碼指示燈亮wo

28、rkbuf0=0x00;/數(shù)碼管第一位不顯示workbuf1=0x00;/.workbuf2=0x00;/.workbuf3=0x00;workbuf4=0x00;workbuf5=0x00;/.count=-1;/按鍵計(jì)數(shù)復(fù)位為-1if(count6)/密碼沒有設(shè)置完,繼續(xù)設(shè)置密碼setpw();/設(shè)置密碼break;while(temp!=0xf0) /按鍵抬起檢測(cè)temp=P3;temp=temp&0xf0;P3=0xfd;temp=P3;temp=temp&0xf0;if(temp!=0xf0)delay(5);temp=P3;temp=temp&0xf0;if(temp!=0xf0)

29、count+;temp=P3;switch(temp)case 0xed: num=4;if(count6)if(set=0)pwxcount=num;elsepwscount=num;workbufcount=tabledu11;break;case 0xdd: num=5;if(count6)if(set=0)pwxcount=num;elsepwscount=num;workbufcount=tabledu11;break;case 0xbd:num=6;if(count6)if(set=0)pwxcount=num;elsepwscount=num;workbufcount=table

30、du11;break;while(temp!=0xf0)temp=P3;temp=temp&0xf0;P3=0xfb;temp=P3;temp=temp&0xf0;if(temp!=0xf0)delay(5);temp=P3;temp=temp&0xf0;if(temp!=0xf0)count+;temp=P3;switch(temp)case 0xeb: num=1;if(count6)if(set=0)pwxcount=num;elsepwscount=num;workbufcount=tabledu11;break;case 0xdb: num=2;if(count6)if(set=0)

31、pwxcount=num;elsepwscount=num;workbufcount=tabledu11;break;case 0xbb: num=3;if(count6)if(set=0)pwxcount=num;elsepwscount=num;workbufcount=tabledu11;break;while(temp!=0xf0)temp=P3;temp=temp&0xf0;P3=0xf7;temp=P3;temp=temp&0xf0;if(temp!=0xf0)delay(5);temp=P3;temp=temp&0xf0;if(temp!=0xf0)count+;temp=P3;

32、switch(temp)case 0xd7:num=0;if(count6)if(set=0)pwxcount=num;elsepwscount=num;workbufcount=tabledu11;break;case 0xe7: num=20;break;/確定鍵按下檢測(cè)case 0x77: /復(fù)位鍵或者輸入密碼全部一次刪除P1_1=0;/鎖關(guān)P1_3=1;/密碼設(shè)置指示燈滅set=0;/不設(shè)置密碼num=10;/num復(fù)位count=-1;/COUNT復(fù)位workbuf0=tabledu10;/第一位數(shù)碼管不顯示workbuf1=tabledu10;/第二位數(shù)碼管不顯示workbuf2=

33、tabledu10;workbuf3=tabledu10;workbuf4=tabledu10;workbuf5=tabledu10;/.P1_0=1;/鎖關(guān)break;case 0xb7:/輸入密碼刪除鍵(一位一位刪除)count-;workbufcount=0x00;/因確定鍵按下時(shí),COUNT也會(huì)加1,而確定鍵不是密碼,所以這里是COUNT,而不是COUNT+1count-;/因確定鍵按下時(shí),確定鍵不是密碼,COUNT也會(huì)加1,這里COUNT再自減1if(count=-1)count=-1;break;while(temp!=0xf0)temp=P3;temp=temp&0xf0;return(n

溫馨提示

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

評(píng)論

0/150

提交評(píng)論