單片機密碼鎖設計_第1頁
單片機密碼鎖設計_第2頁
單片機密碼鎖設計_第3頁
單片機密碼鎖設計_第4頁
單片機密碼鎖設計_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于單片機的密碼鎖設計 專業(yè)班級:信息2011-1學 號:1176718123 姓 名:鄭卓 指導教師:郭宇基于單片機的密碼鎖設計實訓目的:隨著人們生活水平的提高和安全意識的加強,對安全的要求也就越來越高。鎖自古以來就是把守護門的鐵將軍,人們對它要求甚高,既要安全可靠的防盜,又要使用方便,這也是制鎖者長期以來研制的主題。隨著電子技術的發(fā)展,各類電子產(chǎn)品應運而生,電子密碼鎖就是其中之一。本設計利用單片機及附加電子元器件實現(xiàn)數(shù)據(jù)采集和控制算法,來完成某一實際功能,檢驗并提高自己對整體電路設計和把握能力,了解單片機系統(tǒng)設計流程,以及電路板的實際制作和調試能力。同時也加強對數(shù)字電路、單片機和微機原理等

2、課程知識的實際應用能力,也為同類產(chǎn)品的進一步發(fā)展奠定理論和實踐基礎。電子密碼鎖應用于金融業(yè),其根本的作用是“授權”,即被“授權”的人才可以存取錢、物。廣義上講,金融業(yè)的“授權”主要包括以下三種層次的內容:1、授予保管權,如使用保管箱、保險箱和保險柜;2授予出入權,如出入金庫、運鈔車和保管室;3、授予流通權,如自動存取款。提高電子密碼鎖之防護能力的必然途徑是報警,在金融業(yè)的許多場所有人值守、有電視監(jiān)控,具有報警功能,可以綜合物理防范和人力防范兩種作用。報警的前提是具備探測功能,根據(jù)電子密碼鎖的使用場所和防護要求,可選擇多種多樣的探測手段。本設計業(yè)模擬了這一報警功能。實訓時間、地點:工程訓練中心

3、E家科技中心十七周,十八周實訓內容:選題:本次實訓選擇單片機控制的密碼鎖,本系統(tǒng)由AT89S51單片機系統(tǒng)(主要是AT89S51單片機最小系統(tǒng))、4×4矩陣鍵盤、LCD1602顯示和報警系統(tǒng)等組成,具有設置、修改六位用戶密碼、超次報警、超次鎖定、密碼錯誤報警等功能(本設計由P0口控制LCD顯示,密碼正確顯示password ok! 密碼錯誤顯示password error!超過三次輸入錯誤自動鎖定。由P1口控制矩陣鍵盤含有0-9數(shù)字鍵和A-F功能鍵。)。除上述基本的密碼鎖功能外,依據(jù)實際的情況還可以添加遙控功能。本系統(tǒng)成本低廉,功能實用。 方案設計:(1)本設計為了防止密碼被竊取要求

4、在輸入密碼時在LCD屏幕上顯示*號。(2)設計開鎖密碼位六位密碼的電子密碼鎖。(3)能夠LCD顯示在密碼正確時顯示PASSWORD OK,密碼錯誤時顯示PASSWORD ERROR,輸入密碼時顯示INPUT PASSWORD。(4)實現(xiàn)輸入密碼錯誤超過限定的三次電子密碼鎖定。(5)4×4的矩陣鍵盤其中包括0-9的數(shù)字鍵和A-F的功能鍵(6)本產(chǎn)品具備報警功能,當輸入密碼錯誤時蜂鳴器響并且LED燈亮。(7)密碼可以由用戶自己修改設定(只支持6位密碼),修改密碼之前必須再次輸入密碼,在輸入新密碼時候需要二次確認,以防止誤操作 。 采用一種是用以AT89S51為核心的單片機控制方案。選用單

5、片機AT89S51 作為本設計的核心元件,利用單片機靈活的編程設計和豐富的IO端口,及其控制的準確性,實現(xiàn)基本的密碼鎖功能。在單片機的外圍電路外接輸入鍵盤用于密碼的輸入和一些功能的控制,外接LCD1602顯示器用于顯示作用。其原理如下圖2.1所示:圖2.1 單片機控制密碼鎖原理圖 密碼鎖流程框圖可以看出方案二控制靈活準確性好且保密性強還具有擴展功能,根據(jù)現(xiàn)實生活的需要此次設計采用此方案方案實現(xiàn):1 單片機AT89S51簡介 AT89S51是美國ATMEL公司生產(chǎn)的低功耗,高性能CMOS8位單片機,片內含4k bytes的可系統(tǒng)編程的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易

6、失性存儲技術生產(chǎn),兼容標準8051指令系統(tǒng)及引腳。它集Flash程序存儲器,既可在線編程(ISP)也可用傳統(tǒng)方法進行編程及通用8位微處理器于單片芯片中,ATMEL公司的功能強大,低價位AT89S51單片機可為您提供許多高性價比的應用場合,可靈活應用于各種控制領域。 1.1 主要特性 AT89S51與MCS-51 兼容 􀁹 4K字節(jié)可編程閃爍存儲器 􀁹 壽命:1000寫/擦循環(huán) 􀁹 數(shù)據(jù)保留時間:10年 􀁹 全靜態(tài)工作:0Hz-24Hz 􀁹 三級程序存儲器鎖定 􀁹 128*8位內部RAM

7、􀁹 32可編程I/O線 􀁹 兩個16位定時器/計數(shù)器 五個中斷源􀁹 可編程串行通道 􀁹 低功耗的閑置和掉電模式 􀁹 片內振蕩器和時鐘電路 1.2 引腳功能說明 圖2.2 單片機引腳圖Vcc:電源電壓 GND:接地 P0口:P0口是一組8位漏極開路型雙向I0口,也即地址數(shù)據(jù)總線復用口。作為輸出口用時,每位能驅動8個TTL邏輯門電路,對端口寫“1”可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉換地址(低8位)和數(shù)據(jù)總線復用,在訪問期間激活內部上拉電阻。在F1ash編程時,P0口接收指

8、令字節(jié),而在程序校驗時,輸出指令字節(jié),校驗時,要求外接上拉電阻。 P1口:Pl 是一個帶內部上拉電阻的8位雙向IO口,Pl的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“l(fā)”,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL),F(xiàn)lash編程和程序校驗期間,Pl接收低8位地址。 P2 口:P2 是一個帶有內部上拉電阻的8 位雙向IO 口,P2 的輸出緩沖級可驅動(吸收或輸出電流)4 個TTL邏輯門電路。對端口寫“1”,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因

9、為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL),在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行MOVXDPTR指令)時,P2口送出高8位地址數(shù)據(jù)。在訪問8 位地址的外部數(shù)據(jù)存儲器(如執(zhí)行MOVXRi 指令)時,P2 口線上的內容(也即特殊功能寄存器(SFR)區(qū)中P2寄存器的內容),在整個訪問期間不改變。Flash編程或校驗時,P2亦接收高位地址和其它控制信號。 P3 口:P3 口是一組帶有內部上拉電阻的8 位雙向I0 口。P3 口輸出緩沖級可驅動(吸收或輸出電流)4 個TTL邏輯門電路。P3口除了作為一般的I0口線外,更重要的用途是它的第二功能,如下表所示:P

10、3口還接收一些用于Flash閃速存儲器編程和程序校驗的控制信號 RST:復位輸入。當振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將使單片機復位。WDT 溢出將使該引腳輸出高電平,設置SFR AUXR的DISRT0 位(地址8EH)可打開或關閉該功能。DISRT0位缺省為RESET輸出高電平打開狀態(tài)。 ALEPROG:當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部存儲器,ALE 仍以時鐘振蕩頻率的16 輸出固定的正脈沖信號,因此它可對外輸出時鐘或用于定時目的。 PSEN:程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當

11、AT89S51 由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次PSEN有效,即輸出兩個脈沖。當訪問外部數(shù)據(jù)存儲器,沒有兩次有效的PSEN信號。 EAVPP:外部訪問允許。欲使CPU僅訪問外部程序存儲器(地址為0000HFFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復位時內部會鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行內部程序存儲器中的指令。F1ash存儲器編程時,該引腳加上+12V的編程電壓Vpp。 XTALl:振蕩器反相放大器及內部時鐘發(fā)生器的輸入端。 XTAL2:振蕩器反相放大器的輸出端。 89S51相對于89C51增加的新功能包括

12、:(1)ISP在線編程功能,這個功能的優(yōu)勢在于改寫單片機存儲器內的程序不需要把芯片從工作環(huán)境中剝離,是一個強大易用的功能。(2)最高工作頻率為33MHz,89C51的極限工作頻率為24MHz,就是說S51具有更高的工作頻率,從而具有了更快的計算速度。(3)具有雙工UART串行通道。(4)內部集成看門狗計時器,不再需要像C51那樣外接看門狗計時器單元電路。(5)雙數(shù)據(jù)指示器。(6)電源關閉標識。(7)全新的加密算法,這使得對于89S51的解密變?yōu)椴豢赡埽绦虻谋C苄源蟠蠹訌?,這樣就可以有效地保護知識產(chǎn)權不被侵犯。(8)兼容性方面:向下完全兼容51全部字系列產(chǎn)品。(9)程序存儲器寫入方式:二者的寫

13、入程序的方式不同,89C51只支持并行寫入,同時需要VPP燒寫高壓。89S51則支持Isp在線編程寫入技術。串行寫入、速度更快、穩(wěn)定性更好,燒寫電壓也僅僅需要45V即可。(10)電源范圍:89S51電源范圍寬達45.5V,而89C51在低于4.8V和高于5.3V的時候則無法正常工作。(11)燒寫壽命更長:89S51標稱的1000次,實際最少是100010000次,這樣更有利于初學者反復燒寫,降低學習成本。綜上所述本設計選定AT89S51。液晶顯示LCD1602的介紹1、LM1602字符型模塊的性能重量輕:<100g;體積?。?lt;11mm 厚;功耗低:1015mW;顯示內容:192 種

14、字符(5×7 點字型);32 種字符(5×10 點字型);可自編8(5×7)或許(5×10)種字符;指令功能強:可組合成各種輸入、顯示、移位方式以滿足不同的要求;接口簡單方便:可與8 位微處理器或微控制器相聯(lián);工作溫度寬:050oC可靠性高:壽命為50,000 小時(25oC)2、 基本原理 液晶體液晶板上排列著若干5×7 或5×10 點陣的字符顯示位,每個顯示位可顯示1 個字符,從規(guī)格上分為每行8、16、20、24、32、40 位,有一行、兩行及四行三類。 工作電路它由KS0066、KS0065 及幾個電阻電容組成。KS0065 是

15、擴展顯示字符用的(例如:16 個字符×1 行模塊就可不用KS0065,16 個字符×2 行模塊就要用1 片KS0065)接口方面,有8 條數(shù)據(jù),三條控線。可與微處理器或微控制相連,通過送入數(shù)據(jù)和指令,就可使模塊正常工作。 LCD 驅動器和控制器A LCD 驅動器KS0065KS0065 是用低功耗CMOS 技術制造的大規(guī)模LCD 驅動IC。它既可當行驅動用,也可以當列驅動用,由20×2Bin 二進制移位寄存器、20×2Bin 數(shù)據(jù)鎖存器和20×2Bin 驅動器組成功能:a 40 通道點陣LCD 驅動;b 可選擇當做行驅動或列驅動;c 輸入/輸出

16、信號:輸出,能產(chǎn)生20×2 個LCD 驅動波型;輸入,接受控制器送出的串行數(shù)據(jù)和控制信號,偏壓(V1V6);特性:a 顯示驅動偏壓低:靜態(tài)1/5;b 電源電壓:+5V+10%;c 顯示驅動電源:-5V;d CMOS 處理;e 60 引腳、塑封;B LCD 控制器KS0066見圖4,KS0066 是用低功耗CMOS 技術制造的大規(guī)模點陣LCD控制器(兼帶驅動器),和4Bin/8Bin 微處理器相連連,它能使點陣LCD 顯示大小英文字母、符號。應用KS0066,用戶能有少量元件就可組成一個完整點陣LCD 系統(tǒng)。特性:a 容易和Bin/8Bin Mpu 相連;b 可選擇5×7 或

17、5×10 點字符;c 顯示數(shù)據(jù)RAM 容量:80×8Bin(80 字符);d 字符發(fā)生器ROM 能提供戶所需字符庫或標準庫;字符容量:192 個字符(5×7 點字符);32 個字符(5×10 點字符);e DDRAM 和CGRAM 都能從Mpu 讀取數(shù)據(jù);f 輸出信號:16 個行掃信號(common singnal),40 個列掃信號(sengment singnal)g 電源復位電路;h 顯示占空比:1/8duty(1Line,5×7dots+Cursor);1/11 duty(1Line,5×10dote+Cuesor);1/16

18、 duty(2Line,5×7dots+Cuesir);i 振蕩電路;j 指令:11 種;k 80 引腳、塑封。技術參數(shù)a 極限參數(shù)b電參數(shù)2 硬件電路的設計本設計單片機硬件資源的分配:P0.0P0.7用于LCD液晶顯示作用。P2.6、P2.7用于蜂鳴器和報警燈的控制。P2.0用于開鎖電路的控制。P1.0P1.7用于鍵盤電路的控制。P3.3P3.5用于LCD顯示模塊的控制端口的控制。2.1 最小系統(tǒng)的設計當MCS-5l系列單片機的復位引腳RST(全稱RESET)出現(xiàn)2個機器周期以上的高電平時,單片機就執(zhí)行復位操作。如果RST持續(xù)為高電平,單片機就處于循環(huán)復位狀態(tài)。根據(jù)應用的要求,復位

19、操作通常有兩種基本形式:上電復位和開關復位。圖3.3即為手動(開關)復位電路。 圖3.3 手動復位電路(2)復位后的狀態(tài)a、復位后PC值為0000H,表明復位后的程序從0000H開始執(zhí)行。b、SP值為07H,表明堆棧底部在07H,一般需要重新設置SP值。c、P0P3口值為FFH。P0P3口用作輸入口時,必須先寫入“1”。單片機在復位后,已使P0P3口每一端線為“1”,為這些端線用作輸入口做好了準備。(3)WDT 溢出將使該引腳輸出高電平,所以本設計采用圖3.4的手動復位電路:圖3.4 本設計手動復位電路AT89S51 中有一個用于構成內部振蕩器的高增益反相放大器,引腳XTAL1 和XTAL2

20、分別是該放大器的輸入端和輸出端。這個放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起構成自激振蕩器,振蕩電路參見圖3.5。外接石英晶體(或陶瓷諧振器)及電容Cl、C2 接在放大器的反饋回路中構成并聯(lián)振蕩電路。對外接電容Cl、C2 雖然沒有十分嚴格的要求,但電容容量的大小會輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程序及溫度穩(wěn)定性。如果使用石英晶體,我們推薦電容使用30pF±10pF,而如使用陶瓷諧振器建議選擇40pF±10F。用戶也可以采用外部時鐘。采用外部時鐘的電路如圖1所示。這種情況下,外部時鐘脈沖接到XTAL1端,即內部時鐘發(fā)生器的輸入端,XTAL2則懸

21、空。由于外部時鐘信號是通過一個2分頻觸發(fā)器后作為內部時鐘信號的,所以對外部時鐘信號的占空比沒有特殊要求,但最小高電平持續(xù)時間和最大的低電平持續(xù)時間應符合產(chǎn)品技術條件的要求。 圖3.5 單片機自激震蕩電路由于單片機有內部振蕩器,所以本設計采用圖3.6的晶振電路:圖3.6 晶振電路2.2 芯片擦除 整個PEROM陣列和三個鎖定位的電擦除可通過正確的控制信號組合,并保持ALE管腳處于低電平10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲字節(jié)被重復編程以前,該操作必須被執(zhí)行。 此外,AT89S51設有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模

22、式下,CPU停止工作。但RAM,定時器,計數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內容并且凍結振蕩器,禁止所用其他芯片功能,直到下一個硬件復位為止。 2.3 開鎖機構 用戶通過LCD提示信息,用鍵盤輸入正確密碼,從而達到開鎖的目的。當用戶輸入的密碼正確并且是在按下確定鍵的話,單片機便輸出開門信號,送到開鎖驅動 電路,然后驅動電磁鎖,達到開門的目的。電路驅動和開鎖兩級組成。由D5、R1、T10組成驅動電路,其中T10可以選擇普通的小功率三極管如9014、9018都可以滿足要求。D5作為開鎖的提示;由D6、C24、T11組成。其中D6、C24是為了消除電磁鎖可能產(chǎn)生的反向高電壓以及

23、可能產(chǎn)生的電磁干擾。T11可選用中功率的三極管如8050,電磁鎖的選用要視情況而定,但是吸合力要足夠且由一定的余量。 在本次設計中,基于節(jié)省材料的原則,暫時用發(fā)光二極管代替電磁鎖,發(fā)光管亮,表示開鎖;滅,表示沒有開鎖。 圖3.7 密碼鎖開鎖機構電路圖2.4 鍵盤設計 本設計就采用行列式鍵盤,同時也能減少鍵盤與單片機接口時所占用的I/O線的數(shù)目,在按鍵比較多的時候,通常采用這樣方法。 每一條水平(行線)與垂直線(列線)的交叉處不相通,而是通過一個按鍵來連通,利用這種行列式矩陣結構只需要N條行線和M條列線,即可組成具有N×M個按鍵的鍵盤。 在這種行列式矩陣鍵盤非鍵盤編碼的單片機系統(tǒng)中,鍵

24、盤處理程序首先執(zhí)行等待按鍵并確認有無按鍵按下的程序段。 4×4矩陣鍵盤的工作原理 在鍵盤中按鍵數(shù)量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式,如圖5所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口(如P1口)就可以構成4*4=16個按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比較多時,采用矩陣法來做鍵盤是合理的。掃描原理 把每個鍵都分成水平和垂直的兩端接入,比如說掃描碼是從垂直的入,那就代表那一行

25、所接收到的掃描碼是同一個bit,而讀入掃描碼的則是水平,掃描的動作是先輸入掃描碼,再去讀取輸入的值,經(jīng)過比對之后就可知道是哪個鍵被按下。 比如說掃描碼送入01111111,前面的0111是代表此時掃描第一行P1.0列,而后面的1111是讓讀取的4行接腳先設為VDD,若此時第一行的第三列按鍵被按下,那讀取的結果就會變成01111101(注意1111變成1101),其中LSB的第三個bit會由1變成0,這是因為這個按鍵被按下之后,會被垂直的掃描碼電位short,而把讀取的LSB的bit電位拉到0,此即為掃描原理。 由於這種按鍵是機械式的開關,當按鍵被按下時,鍵會震動一小段時間才穩(wěn)定,為了避免讓80

26、51誤判為多次輸入同一按鍵, 我們必須在偵測到有按鍵被按下,就Delay一小段時間,使鍵盤以達穩(wěn)定狀態(tài),再去判讀所按下的鍵,就可以讓鍵盤的輸入穩(wěn)定。圖3.8為鍵盤整體??驁D: 圖3.8 鍵盤整體??驁D2.5顯示電路設計 顯示設計采用字符型液晶屏設計,由單片機的p0口控制顯示,由p3.3p3.5控制lcd的控制端口。本設計采用以下液晶顯示設計:圖3.9 LCD液晶顯示電路抓圖3.電路設計總圖本密碼鎖采用proteus進行電路圖設計,經(jīng)過元件選型,用萬能實驗版進行硬件焊接,以實現(xiàn)硬件部分。 下圖為proteus設計的密碼鎖電路圖整體抓圖 4.系統(tǒng)軟件設計因設計主要是作用匯編語言來開發(fā)的51單片機項

27、目程序,所以首先必須有一個可以在Windows XP或Windows vista操作系統(tǒng)下執(zhí)行的匯編語言編譯器,本設計采用Keil編譯器進行編程,因為它可以支持一系列的51單片機。 開始初始化模式選擇識別按鍵密碼輸入手動清除密碼比較開門舊密碼輸入新密碼輸入存入緩存區(qū)再次輸入密碼重新輸入設置完畢返回NANBY圖4.1 主程序的流程圖4.1主程序模塊主程序主要是完成系統(tǒng)初始化、設置中斷向量、檢查有無鍵按下、以及調用顯示等等。主程序部分如下所示:en bit p3.5;將lcd的en管腳連接到單片機的p3.5口rw bit p3.4;將lcd的rw管腳連接到單片機的p3.4口rs bit p3.3;

28、將lcd的rs管腳連接到單片機的p3.3口display equ p0;將lcd的顯示端口連接到p0口上speaker bit p2.6;蜂鳴器連接到p2.6口led bit p2.7;與蜂鳴器共同作用的led燈連到p2.7口open bit p2.0;開鎖電路的控制端連接到p2.0口returnbit bit 20h.1;ORG 0000h;程序開始地址LJMP start;ORG 000bh;LJMP intermit_t0;ORG 001bh;LJMP intermit_t1;ORG 0030h;start:MOV sp,#60h;lcall sys_initialization;調用子

29、程序sys_initialization4.2 鍵盤掃描及識別子程序 鍵盤采用查詢的方式,放在主程序中,當沒有按鍵按下的時候,單片機循環(huán)主程序,一旦有按鍵按下,便轉向相應的子程序處理,處理結束再返回。其程序流程如圖4.2所示 鍵盤部分程序如下: key:;鍵盤程序名稱call ks;調用子程序ksjnz k1;判斷是否有鍵按下jmp key;跳回鍵盤程序ks:mov p1,#0f0h;mov a,p1;xrl a,#0f0h;ret;圖4.2 鍵盤掃描程序流程圖4.3 系統(tǒng)模塊密碼設置子程序 由于設計是分模塊化進行,所以子程序是整體軟件系統(tǒng)的組成部分,子程序不但可以使程序化整為零,使其復雜簡單

30、化,同時也方便閱讀,修改等,每個功能模塊都有它自己的子程序,在本設計中是用LCD顯示數(shù)據(jù),所以就要用到顯示子程序,設計中用的是矩陣鍵盤,所以就用到鍵盤掃描子程序,例如還有顯示初始化子程序、LCD忙檢測子程序、關閉狀態(tài)顯示子程序、開鎖狀態(tài)顯示子程序、密碼輸入及修改狀態(tài)顯示子程序、密碼輸入錯誤后的提示子程序等。如下圖為密碼修改子程序流程圖 選擇模式舊密碼輸入新密碼輸入存入緩存再次輸入密碼比較密碼重新輸入返回YN是否大于3次鎖定NY圖4.3 設置密碼子程序4.4程序調試 在硬件支持的環(huán)境下,用proteus設計好的電路,Keil編好的程序編譯成芯片可識別的S51文件,利用PC機寫進proteus程序

31、圖芯片內進行仿真測試,并對其出現(xiàn)的錯誤進行修改,由圖4.4圖4.8可看出最終調試成功。 圖4.4 keil編譯程序成功圖4.5 keil生成hex文件圖4.6 proteus調用keil的hex文件進行仿真圖4.7 仿真成功密碼正確 圖4.8 密碼正確綠燈亮5. 系統(tǒng)制作及調試5.1焊接注意事項:LCD的注意事項1. 采用焊接方法將金屬基PIN安裝于LCD時,從玻璃末端到PCB的焊接位置的長度至少5mm,焊接溫度必須在260以下,且焊接時間必須在10秒以內,以免焊接過程中對裝置的損壞,確保焊接性能。在230,30秒條件下,90%的焊料須緊密附著于PIN上。2. 對LCD基板

32、或基PIN焊接位置的調整必須在安裝前完成。嚴禁猛烈移動基PIN,否則會機械地破壞LCD屏與基PIN之間的連接點。焊接時平放LCD,盡量不讓LCD受力。3. 焊接LCD基板時,將其小心、平衡地插入PCB插槽,以避免損壞基PIN或LCD基板。4. 焊接時,LCD基板不應長時間置于焊錫蒸汽中,清洗PCB時,必須避免污染LCD基板,否則可能損壞顯示器表面的偏光片及封口膠。5. 顯示器表面的保護膜直到焊接完成才可揭掉,禁止手指及其它硬物接觸偏光片,禁止水和其他化學物質沾污裝置,因為這些物質會污染顯示器表面。單片機焊接注意事項:80s51單片機與其它單片機,dsp,arm芯片

33、相比較而言是脆弱的,如果焊接時不小心就很可能把芯片損壞!建議用比較好的恒溫可調的烙鐵,功率在30瓦左右,溫度控制在260到300度,建議采用點焊而不用拉焊,焊接時烙鐵放在每個引腳的時間不能太長(最好低于3秒)。上邊提到的方法還不能確保芯片完好,對芯片有危害的還有帶電烙鐵的靜電感應!烙鐵質量不是太好的,焊接時可以把烙鐵電源插頭拔掉。其他的電子器件焊接須知:一般分四步驟進行。準備焊接:清潔被焊元件處的積塵及油污,再將被焊元器件周圍的元器件左右掰一掰,讓電烙鐵頭可以觸到被焊元器件的焊錫處,以免烙鐵頭伸向焊接處時燙壞其他元器件。焊接新的元器件時,應對元器件的引線鍍錫。加熱焊接:將沾有少許焊錫和松香的電

34、烙鐵頭接觸被焊元器件約幾秒鐘。若是要拆下印刷板上的元器件,則待烙鐵頭加熱后,用手或銀子輕輕拉動元器件,看是否可以取下。清理焊接面:若所焊部位焊錫過多,可將烙鐵頭上的焊錫甩掉(注意不要燙傷皮膚,也不要甩到印刷電路板上!),用光烙錫頭"沾"些焊錫出來。若焊點焊錫過少、不圓滑時,可以用電烙鐵頭"蘸"些焊錫對焊點進行補焊。檢查焊點:看焊點是否圓潤、光亮、牢固,是否有與周圍元器件連焊的現(xiàn)象。焊接流程按照附錄I所示的電子密碼鎖的硬件聯(lián)接原理圖按下列順序依次焊接:(1)焊接單片機的晶振電路、復位電路等單片機的最小系統(tǒng)的外圍電路。(2)焊接LCD的相應管腳并把LCD的管

35、腳單片機相連接。(3)焊接鍵盤的按鍵電路。(4)焊接電子密碼鎖的密碼輸入錯誤的報警電路。(5)焊接密碼鎖的開鎖機構電路。(6)焊接其他接口及輔助電路。(7)焊接接地及高電平。5.2、硬件調試問題及解決方法本設計在焊接調試時遇到的問題以及解決方法:單片機的最小系統(tǒng)問題:電源、晶振電路和復位電路都無異常。Lcd焊接時的問題:(1)接通電源后lcd無反應,各個引腳均屬正常。推斷可能是初始化程序出現(xiàn)問題。經(jīng)查找得知是lcd顯示器的15和16管腳控制背光功能,連接好之后還是不能顯示字符。(2)接通電源開門燈和報警電路就會工作,分析原因是單片機剛開始各個管腳輸出高電平。以下為所做實物:實訓總結:(小四號字

36、)(500字)這次電子信息工程實訓,可以說是我第一次做實物。在這次實訓的過程中,我體會到了實踐的重要性,可以說沒有實際動手的能力,真的是有很大的困難。我為自己作為一名學習工程的學生,自己動手能力的欠缺在這次實訓中很徹底的暴露出來。平時學習理論課程的時候,確實沒能徹底的理解,實驗課也是走過場一樣的,沒有很認真的做過。這樣的結果就是在這次實訓的過程中,很多東西我要重新學習,這就使得實訓的進度和質量大大降低。以后要強化動手能力,只有這樣,才能深刻理解理論知識,并且將理論和實際聯(lián)系起來。電子信息工程是一門實踐性很強的課程,以前不知道這個專業(yè)以后能干什么,這次過實訓,我了解到些簡單的應用?,F(xiàn)在的信息化進

37、程正在飛速進行,好多東西都是積少成多,慢慢積累的。我這次做的東西雖然很簡單,對我來說還是有一定難度的。所以對我來說,只要不斷學習,不斷進步就好了。這次做的電子鎖,我自己查了很多資料,也和其他同學請教了很多。在這些同學當中,有的是大一就開始自己做東西,他們的技術已經(jīng)很高了。有的是從大二開始做的,他們也有一定的基礎,可以獨立的做一些東西,完成自己的課題。而我卻從來沒有自己做過一件東西,上課時候也沒有認真的理解,這就造成了很大的差距。古人所說,不積跬步,無以至千里,不積小流,無以成江海。這種微小的差別,經(jīng)過長時間的積累,就會越來越大。所以,任何小事,我們每天做一點,堅持下去,我們就會成就很多。本次實

38、訓的密碼鎖,得到了很多同學的幫助,沒有他們我很難在按時完成任務。這次做的東西雖小,卻反映了一個很大的問題,如果這個問題不得到解決,明年的畢業(yè)設計也是個問題。可見,不管是什么東西,都要提前做準備。只有早作準備,才可以盡早的發(fā)現(xiàn)并解決問題。實訓結束了,但是學習還要繼續(xù),只要活到老,學到老,才能適應時代的進步和知識的更新。在這里,向那些為我提供幫助的人表示感謝。也為我自己開始,為以后的學習計劃進行調整,以適應行業(yè)的發(fā)展。程序:#include <REG51.h>#include<intrins.h>#define LCM_Data P0#define uchar unsign

39、ed char #define uint unsigned int#define w 6/定義密碼位數(shù)sbit lcd1602_rs=P27;sbit lcd1602_rw=P26;sbit lcd1602_en=P25;sbit Scl=P34;/24C02串行時鐘sbit Sda=P35;/24C02串行數(shù)據(jù)sbit ALAM = P21;/報警sbit KEY = P36;/開鎖sbit open_led=P22;/開鎖指示燈bit operation=0;/操作標志位bit pass=0;/密碼正確標志bit ReInputEn=0;/重置輸入充許標志bit s3_keydown=0;

40、/3秒按鍵標志位bit key_disable=0;/鎖定鍵盤標志unsigned char countt0,second;/t0中斷計數(shù)器,秒計數(shù)器void Delay5Ms(void);unsigned char code a=0xFE,0xFD,0xFB,0xF7; /控盤掃描控制表unsigned char code start_line= "password: "unsigned char code name = "=Coded Lock="/顯示名稱unsigned char code Correct = " correct &qu

41、ot; /輸入正確unsigned char code Error = " error " /輸入錯誤unsigned char code codepass= " pass " unsigned char code LockOpen= " open "/OPENunsigned char code SetNew = "SetNewWordEnable"unsigned char code Input = "input: "/INPUTunsigned char code ResetOK = &q

42、uot;ResetPasswordOK "unsigned char code initword= "Init password."unsigned char code Er_try= "error,try again!"unsigned char code again= "input again "unsigned char InputData6;/輸入密碼暫存區(qū)unsigned char CurrentPassword6=1,3,1,4,2,0; /當前密碼值unsigned char TempPassword6;uns

43、igned char N=0;/密碼輸入位數(shù)記數(shù)unsigned char ErrorCont;/錯誤次數(shù)計數(shù)unsigned char CorrectCont;/正確輸入計數(shù)unsigned char ReInputCont; /重新輸入計數(shù)unsigned char code initpassword6=0,0,0,0,0,0;/=5ms延時=void Delay5Ms(void)unsigned int TempCyc = 5552;while(TempCyc-);/=400ms延時=void Delay400Ms(void) unsigned char TempCycA = 5; un

44、signed int TempCycB; while(TempCycA-) TempCycB=7269; while(TempCycB-); /=/=24C02=/=void mDelay(uint t) /延時 uchar i; while(t-) for(i=0;i<125;i+) ; void Nop(void) /空操作 _nop_(); _nop_(); _nop_(); _nop_();/*起始條件*/void Start(void) Sda=1; Scl=1; Nop(); Sda=0; Nop(); /*停止條件*/void Stop(void) Sda=0; Scl=1

45、; Nop(); Sda=1; Nop();/*應答位*/void Ack(void)Sda=0;Nop();Scl=1;Nop();Scl=0;/*反向應答位*/void NoAck(void) Sda=1; Nop(); Scl=1; Nop(); Scl=0; /*發(fā)送數(shù)據(jù)子程序,Data為要求發(fā)送的數(shù)據(jù)*/void Send(uchar Data) uchar BitCounter=8; uchar temp; do temp=Data; Scl=0; Nop(); if(temp&0x80)=0x80) Sda=1; else Sda=0; Scl=1; temp=Data&

46、lt;<1; Data=temp; BitCounter-; while(BitCounter); Scl=0;/*讀一字節(jié)的數(shù)據(jù),并返回該字節(jié)值*/uchar Read(void) uchar temp=0;uchar temp1=0;uchar BitCounter=8;Sda=1;doScl=0;Nop();Scl=1;Nop();if(Sda)temp=temp|0x01;elsetemp=temp&0xfe;if(BitCounter-1)temp1=temp<<1;temp=temp1;BitCounter-;while(BitCounter);retur

47、n(temp);void WrToROM(uchar Data,uchar Address,uchar Num) uchar i; uchar *PData; PData=Data; for(i=0;i<Num;i+) Start(); Send(0xa0); Ack(); Send(Address+i); Ack(); Send(*(PData+i); Ack(); Stop(); mDelay(20); void RdFromROM(uchar Data,uchar Address,uchar Num) uchar i; uchar *PData; PData=Data; for(i

48、=0;i<Num;i+) Start(); Send(0xa0); Ack(); Send(Address+i); Ack(); Start(); Send(0xa1); Ack(); *(PData+i)=Read(); Scl=0; NoAck(); Stop(); /=/=LCD1602=/=#define yi 0x80 /LCD第一行的初始位置,因為LCD1602字符地址首位D7恒定為1(100000000=80)#define er 0x80+0x40 /LCD第二行初始位置(因為第二行第一個字符位置地址是0x40)/-延時函數(shù),后面經(jīng)常調用-void delay(uint

49、xms)/延時函數(shù),有參函數(shù)uint x,y;for(x=xms;x>0;x-) for(y=110;y>0;y-);/-寫指令-write_1602com(uchar com)/*液晶寫入指令函數(shù)*lcd1602_rs=0;/數(shù)據(jù)/指令選擇置為指令lcd1602_rw=0; /讀寫選擇置為寫P0=com;/送入數(shù)據(jù)delay(1);lcd1602_en=1;/拉高使能端,為制造有效的下降沿做準備delay(1);lcd1602_en=0;/en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令/-寫數(shù)據(jù)-write_1602dat(uchar dat)/*液晶寫入數(shù)據(jù)函數(shù)*lcd1602_rs=1;/數(shù)據(jù)/指令選擇置為數(shù)據(jù)lcd1602_rw=0; /讀寫選擇

溫馨提示

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

評論

0/150

提交評論