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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

13、入程序的方式不同,89C51只支持并行寫入,同時需要VPP燒寫高壓。89S51則支持Isp在線編程寫入技術(shù)。串行寫入、速度更快、穩(wěn)定性更好,燒寫電壓也僅僅需要45V即可。(10)電源范圍:89S51電源范圍寬達45.5V,而89C51在低于4.8V和高于5.3V的時候則無法正常工作。(11)燒寫壽命更長:89S51標(biāo)稱的1000次,實際最少是100010000次,這樣更有利于初學(xué)者反復(fù)燒寫,降低學(xué)習(xí)成本。綜上所述本設(shè)計選定AT89S51。液晶顯示LCD1602的介紹1、LM1602字符型模塊的性能重量輕:<100g;體積小:<11mm 厚;功耗低:1015mW;顯示內(nèi)容: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ù),三條控線??膳c微處理器或微控制相連,通過送入數(shù)據(jù)和指令,就可使模塊正常工作。 LCD 驅(qū)動器和控制器A LCD 驅(qū)動器KS0065KS0065 是用低功耗CMOS 技術(shù)制造的大規(guī)模LCD 驅(qū)動IC。它既可當(dāng)行驅(qū)動用,也可以當(dāng)列驅(qū)動用,由20×2Bin 二進制移位寄存器、20×2Bin 數(shù)據(jù)鎖存器和20×2Bin 驅(qū)動器組成功能:a 40 通道點陣LCD 驅(qū)動;b 可選擇當(dāng)做行驅(qū)動或列驅(qū)動;c 輸入/輸出

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

17、5×10 點字符;c 顯示數(shù)據(jù)RAM 容量:80×8Bin(80 字符);d 字符發(fā)生器ROM 能提供戶所需字符庫或標(biāo)準(zhǔn)庫;字符容量:192 個字符(5×7 點字符);32 個字符(5×10 點字符);e DDRAM 和CGRAM 都能從Mpu 讀取數(shù)據(jù);f 輸出信號:16 個行掃信號(common singnal),40 個列掃信號(sengment singnal)g 電源復(fù)位電路;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ù)參數(shù)a 極限參數(shù)b電參數(shù)2 硬件電路的設(shè)計本設(shè)計單片機硬件資源的分配:P0.0P0.7用于LCD液晶顯示作用。P2.6、P2.7用于蜂鳴器和報警燈的控制。P2.0用于開鎖電路的控制。P1.0P1.7用于鍵盤電路的控制。P3.3P3.5用于LCD顯示模塊的控制端口的控制。2.1 最小系統(tǒng)的設(shè)計當(dāng)MCS-5l系列單片機的復(fù)位引腳RST(全稱RESET)出現(xiàn)2個機器周期以上的高電平時,單片機就執(zhí)行復(fù)位操作。如果RST持續(xù)為高電平,單片機就處于循環(huán)復(fù)位狀態(tài)。根據(jù)應(yīng)用的要求,復(fù)位

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

38、訓(xùn)的密碼鎖,得到了很多同學(xué)的幫助,沒有他們我很難在按時完成任務(wù)。這次做的東西雖小,卻反映了一個很大的問題,如果這個問題不得到解決,明年的畢業(yè)設(shè)計也是個問題。可見,不管是什么東西,都要提前做準(zhǔn)備。只有早作準(zhǔn)備,才可以盡早的發(fā)現(xiàn)并解決問題。實訓(xùn)結(jié)束了,但是學(xué)習(xí)還要繼續(xù),只要活到老,學(xué)到老,才能適應(yīng)時代的進步和知識的更新。在這里,向那些為我提供幫助的人表示感謝。也為我自己開始,為以后的學(xué)習(xí)計劃進行調(diào)整,以適應(yīng)行業(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;/操作標(biāo)志位bit pass=0;/密碼正確標(biāo)志bit ReInputEn=0;/重置輸入充許標(biāo)志bit s3_keydown=0;

40、/3秒按鍵標(biāo)志位bit key_disable=0;/鎖定鍵盤標(biāo)志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; /當(dāng)前密碼值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();/*應(yīng)答位*/void Ack(void)Sda=0;Nop();Scl=1;Nop();Scl=0;/*反向應(yīng)答位*/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)常調(diào)用-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;/拉高使能端,為制造有效的下降沿做準(zhǔn)備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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論