數(shù)字式密碼電子鎖電路課程設(shè)計(jì)任務(wù)書_第1頁
數(shù)字式密碼電子鎖電路課程設(shè)計(jì)任務(wù)書_第2頁
數(shù)字式密碼電子鎖電路課程設(shè)計(jì)任務(wù)書_第3頁
數(shù)字式密碼電子鎖電路課程設(shè)計(jì)任務(wù)書_第4頁
數(shù)字式密碼電子鎖電路課程設(shè)計(jì)任務(wù)書_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 課程設(shè)計(jì)任務(wù)書學(xué)生姓名: 柯一凡 專業(yè)班級(jí): 通信1102 指導(dǎo)教師: 許建霞 工作單位: 信息工程學(xué)院 題 目: 數(shù)字式密碼電子鎖電路設(shè)計(jì) 初始條件:protel軟件、pc機(jī)和相關(guān)的參考書籍如:1. protel99 入門與提高.趙品編著.人民郵電出版社.2000.112. protel99 高級(jí)應(yīng)用.趙品編著.人民郵電出版社.2000.113. protel 99 se電路設(shè)計(jì)與仿真應(yīng)用要求完成的主要任務(wù): 1、繪制具有一定規(guī)模、一定復(fù)雜程度的電路原理圖*.sch(自選)。可以涉及模擬、數(shù)字、高頻、單片機(jī)、或者一個(gè)具有完備功能的電子電路系統(tǒng)。(注意:電路選擇不可過分簡(jiǎn)單,元件種類(包括電

2、源和信號(hào)源)少于5種;或者元件個(gè)數(shù)少于10個(gè)將導(dǎo)致不及格。)2、 繪制相應(yīng)電路原理圖的雙面印刷版圖*.pcb3、對(duì)電路原理圖進(jìn)行仿真,給出仿真結(jié)果(如波形*.sdf、數(shù)據(jù))并說明是否達(dá)到設(shè)計(jì)意圖。(注意:仿真提倡對(duì)所繪制的原理圖*.sch進(jìn)行全面仿真,如果不能做到全面仿真成功,則要說明原因,但要完成局部電路的仿真。)時(shí)間安排: 序號(hào)設(shè) 計(jì) 內(nèi) 容所 用 時(shí) 間1選擇合適的電路1天2用protel繪制相應(yīng)的電路雙面印刷版圖,并仿真3天3總結(jié)編寫課程設(shè)計(jì)報(bào)告1天合 計(jì)1周指導(dǎo)教師簽名: 2014年 6 月 10 日系主任(或責(zé)任教師)簽名: 2014年 6 月 10 日 目錄 目錄 i摘要iabs

3、tractii1 設(shè)計(jì)任務(wù)與要求11.1 設(shè)計(jì)任務(wù)11.2 設(shè)計(jì)要求12 原理分析22.1單片機(jī)控制原理22.2模塊硬件電路分析22.2.1單片機(jī)最小系統(tǒng)22.2.2鍵盤矩陣32.2.3 lcm1602液晶顯示42.2.4聲光顯示43 電路原理圖繪制63.1 dxp繪制電路原理圖63.2 dxp繪制pcb圖93.2.1 加載網(wǎng)絡(luò)表93.2.2 pcb板的排版103.2.3 pcb板的布線103.3.4 pcb板的覆銅114 電路仿真及分析135 心得體會(huì)156 參考文獻(xiàn)16附錄17數(shù)字式密碼電子鎖程序源代碼(仿真)18 摘要 本系統(tǒng)以stc89c52單片機(jī)最小系統(tǒng)為核心,結(jié)合矩陣鍵盤、1602

4、lcd和報(bào)警系統(tǒng)組成。系統(tǒng)能完成鎖閉狀態(tài)顯示、密碼輸入錯(cuò)誤超次(大于三次)異常,系統(tǒng)鎖定聲光告警、初始化設(shè)置用戶密碼等基本的密碼鎖的功能。除上述基本的密碼鎖功能外,依據(jù)實(shí)際的情況還可以添加通過超級(jí)密碼重置密碼、鍵盤背光與通過背光顯示密碼、系統(tǒng)產(chǎn)生隨機(jī)密碼等擴(kuò)展空間。protel dxp 6將項(xiàng)目管理方式、原理圖和pcb圖的雙向同步技術(shù)、多通道技術(shù)、自動(dòng)布線技術(shù)以及強(qiáng)大的電路仿真的技術(shù)完美的融合在一起。protel dxp提供了豐富的元件庫,包括原理圖符號(hào)。pcb封裝、si模型及仿真模型,可以方便地進(jìn)行同步修改。這次課程設(shè)計(jì)主要要求掌握原理電路圖設(shè)計(jì)、pcb設(shè)計(jì)和仿真。關(guān)鍵詞:protel dx

5、p,pcb設(shè)計(jì),電子密碼鎖,stc89c52,液晶顯示 abstractthe system stc89c52 microcomputer as the core, combined with matrix keyboards, 1602lcd and alarm system components. system can complete the lock status display, the password input error and ultra (more than three times) abnormal sound and light alarm system lock,

6、initialized to set user passwords, and other basic lock function. in addition to the basic lock function, based on the actual situation can also be added through super password reset your password, keyboard backlight and password through the backlit display, the system generates random passwords for

7、 expansion.protel dxp 6 combine project management, the pcb and schematic map of the two-way synchronization technology, multi-channel technology, automatic routing technology and a strong circuit simulation technology together perfectly. protel dxp provides a rich library, including the principle o

8、f symbols. pcb package, si model and simulation model can easily synchronize edits. the main demands of the curriculum design master principle circuit design, pcb design and simulation.keywords: protel dxp,pcb design tools,electronic code lock,stc89c52, liquid crystal display1 設(shè)計(jì)任務(wù)與要求1.1 設(shè)計(jì)任務(wù) 設(shè)計(jì)一個(gè)以單

9、片機(jī)at89c52為主控芯片,結(jié)合外圍電路,組成電子密碼鎖。用戶想要打開鎖,必先通過提供的鍵盤輸入正確的密碼才能將鎖打開,密碼輸入錯(cuò)誤有提示,為提高安全性,當(dāng)密碼輸入錯(cuò)誤三次將報(bào)警。密碼可以由用戶自己修改設(shè)定,鎖打開后才能修改密碼。修改密碼之前必須再次輸入密碼,在輸入新密碼時(shí)候需要二次確認(rèn),以防止誤操作。完成密碼鎖的功能。1.2 設(shè)計(jì)要求(1) 使用protel制作數(shù)字式密碼電子鎖的電路原理圖(2) 使用protel制作數(shù)字式密碼電子鎖的pcb圖(3) 使用protuse對(duì)數(shù)字式密碼電子鎖電路進(jìn)行仿真2 原理分析2.1單片機(jī)控制原理 本次設(shè)計(jì)選用單片機(jī)stc89c52作為本設(shè)計(jì)的核心元件,利用

10、單片機(jī)靈活的編程設(shè)計(jì)和豐富的i/o端口,及其控制的準(zhǔn)確性,實(shí)現(xiàn)基本的密碼鎖信號(hào)判斷、狀態(tài)保存、電平控制的功能。設(shè)計(jì)從總體可以分為硬件和軟件兩個(gè)部分。在硬件部分中,由單片機(jī)最小系統(tǒng)、矩陣鍵盤、1602液晶顯示、聲光顯示這幾個(gè)部分,其相關(guān)控制如圖2-1;在軟件部分中,由矩陣鍵盤鍵值讀取、1602液晶顯示函數(shù)、延時(shí)模塊、密碼讀取模塊、密碼設(shè)置模塊、密碼比較模塊、聲光狀態(tài)模塊等幾部分組成。單片機(jī)最小系統(tǒng)聲光顯示模塊1602液晶顯示模塊矩陣鍵盤 圖2-1 硬件模塊關(guān)系2.2模塊硬件電路分析2.2.1單片機(jī)最小系統(tǒng)此為一個(gè)單片機(jī)最小系統(tǒng),其有p0p3 四組i/o口,可以進(jìn)行相關(guān)的電平狀態(tài)讀取與控制操作。開

11、關(guān)sw_rst為復(fù)位開關(guān),當(dāng)其接通,單片機(jī)rst9復(fù)位端至于高電位,滿足一定時(shí)長(zhǎng)后,單片機(jī)會(huì)進(jìn)行復(fù)位操作,重新開始工作。y1、c1.2、c1.3組成了單片機(jī)的振蕩電路,為單片機(jī)系統(tǒng)提供穩(wěn)定可靠地時(shí)鐘信號(hào),協(xié)助單片機(jī)完成相關(guān)操作。header9為一組排阻,座位上拉電阻。由于stc89c52使用串口方式下載程序,因此需要使用max232完成程序下載的處理工作。 圖2-2 單片機(jī)最小系統(tǒng)原理圖 圖2-3 串口電路 2.2.2鍵盤矩陣設(shè)計(jì)準(zhǔn)備使用4×4鍵盤,對(duì)應(yīng)的電路如圖2-4所示。09輸入相應(yīng)的數(shù)字。在輸入密碼是lr分別實(shí)現(xiàn)輸入位置的左右移動(dòng),b為退格鍵,c為清除鍵,清楚當(dāng)前所有的輸入字符

12、,s為功能擴(kuò)展鍵,暫時(shí)未定義,e為確認(rèn)鍵。由于本設(shè)計(jì)所用到的按鍵數(shù)量較多而不適合用獨(dú)立按鍵式鍵盤。采用的是矩陣式按鍵鍵盤,它由行線和列線組成,也稱行列式鍵盤,按鍵位于行列的交叉點(diǎn)上,密碼鎖的密碼由鍵盤輸入完成,與獨(dú)立式按鍵鍵盤相比,要節(jié)省很多i/o口。 圖2-4 4×4鍵盤矩陣2.2.3 lcm1602液晶顯示圖2-5為1602液晶的引腳分布。1,2為液晶顯示供電,3接滑動(dòng)變阻器改變3的相對(duì)電位,調(diào)節(jié)顯示對(duì)比度。4,5,6為液晶的控制端,調(diào)節(jié)工作狀態(tài)。714為液晶的數(shù)據(jù)輸入端,15、16為液晶背光的電源接口。17,18可以懸空不接。 圖2-5 lcm1602液晶顯示2.2.4聲光顯示

13、光顯示有紅綠兩種顏色的發(fā)光二極管組成,負(fù)極接單片機(jī)引腳,正極結(jié)一個(gè)限流電阻后接地。當(dāng)單片機(jī)輸出高電平,其不亮,當(dāng)單片機(jī)輸出低電平,二極管點(diǎn)亮。聲信號(hào)告警有長(zhǎng)鳴蜂鳴器與一個(gè)三極管、電阻組成,三極管在單片機(jī)的控制下驅(qū)動(dòng)蜂鳴器正常工作。長(zhǎng)鳴蜂鳴器,在給予有效電平時(shí)可以不間斷的以一定的頻率發(fā)出蜂鳴。 圖2-6 蜂鳴器工作電路3 電路原理圖繪制3.1 dxp繪制電路原理圖進(jìn)入protel dxp 2004后,依次點(diǎn)擊工具欄上的file/new/pcb project,新建一個(gè)后綴名為prjpcb的工程文件。圖3-1 新建prjpcb工程文件接下來在剛建立的prjpcb的工程文件下點(diǎn)擊file/new/s

14、chematic新建一個(gè)后綴名為schdoc的原理圖,建立原理圖與工程的關(guān)聯(lián)。圖3-2 新建原理圖在繪制原理圖時(shí),protel dxp 2004在工具欄上提供了常用元件的快捷方式,例如電阻、電解電容、瓷片電容以及常用的與、或、非等組合邏輯門,使用起來很方便。如果要使用其他元件則可以使用place/part命令打開元件選擇窗口。若使用的是比較基本的元件可以在protel dxp 2004默認(rèn)提供的元件庫miscellaneous devices.lntlib中直接瀏覽。protel dxp 2004將元件的原理圖符號(hào),元件描述、封裝號(hào)以及si仿真模型都集中在一起顯示,使用起來很方便,也在一定程度

15、上避免了protel 99 se中不知道元件封裝號(hào)的問題。如果需要修改,可以在model name框中自行修改。圖3-3 添加元件 如果是尋找不那么常用的元件可以在元件庫管理器中選擇libraries/search/search libraries命令,再輸入元件名稱查找。根據(jù)電路要求可以在dxp中加載相應(yīng)的元件庫,dxp中帶有非常豐富的元件庫,并且按照芯片的生產(chǎn)公司的名稱分開放置,便于查找。如果沒有相應(yīng)的元件,還可以通過pcb庫文件編輯器來自己編輯。圖3-4 加載元件庫 在依照電路安放好所有元件之后再開始連線。點(diǎn)擊工具欄上的place wire圖標(biāo)進(jìn)行連線操作,將各元件的引腳連接起來。在連線

16、時(shí)需要注意導(dǎo)線交叉時(shí)是否導(dǎo)通的問題。如圖3.5所示,第一條水平導(dǎo)線與豎直導(dǎo)線導(dǎo)通,但在繪圖時(shí)經(jīng)常忽略這一點(diǎn),處理成第二條水平線。所以在畫圖時(shí)應(yīng)該在連接處用place菜單下的manualjunction工具添加一個(gè)電氣結(jié)點(diǎn)。 圖3-5 連線時(shí)的結(jié)點(diǎn)處理完成所有連線之后,選擇file/new/textdocument命令,開啟一個(gè)數(shù)據(jù)庫文本;再選擇project/project options命令設(shè)置工程檢查參數(shù),在執(zhí)行project/compile document檢查系統(tǒng)錯(cuò)誤。如果提示錯(cuò)誤則返回修改原理圖,如果沒有錯(cuò)誤,則選擇design/netlist for document/protel

17、命令生成網(wǎng)絡(luò)表。 圖3-6 數(shù)字式密碼電子鎖原理圖3.2 dxp繪制pcb圖3.2.1 加載網(wǎng)絡(luò)表生成網(wǎng)絡(luò)表之后,就進(jìn)入了pcb板繪制的階段。選擇file/new/pcb生成一個(gè)后綴為pcbdoc的文件。pcb板分為很多層,主要有top-layer、bottom-layer、mechanical、top overlay、keep-out-layer和multi-layer。按步驟設(shè)置pcb板的mechanical物理邊界以及keep-out layer電氣邊界。先執(zhí)行design/board sharp/redefine board sharp命令,此時(shí)光變變成十字形。然后在mechanica

18、l層面上劃定pcb板的物理邊界,最后在禁止布線層(keep-out layer)上面劃定電器邊界。在正確設(shè)置完成pcb板之后,在pcbdoc文件下選擇design/import changes from命令加載網(wǎng)絡(luò)表(或者在schdoc文件下選擇design/update pcb document命令),屏幕上顯示詳細(xì)的網(wǎng)絡(luò)連接信息。點(diǎn)擊validate changes按鈕可以檢查裝入的元件封裝、電器規(guī)則以及元件的網(wǎng)絡(luò)連接是否正確,如果正確,屏幕上將顯示綠色打勾標(biāo)記。再點(diǎn)擊execute changes按鈕完成元件網(wǎng)絡(luò)表的加載。 3.2.2 pcb板的排版 網(wǎng)絡(luò)表加載完成之后,pcb根據(jù)網(wǎng)絡(luò)表

19、產(chǎn)生預(yù)拉線,在屏幕上會(huì)出現(xiàn)排列整齊的所有元件以及設(shè)置過的pcb板,然后pcb根據(jù)預(yù)拉線一條一條變?yōu)殂~膜走線。選定所有的元件拖至pcb板上,執(zhí)行tools/auto placement/auto placer/cluster placer命令,dxp開始自動(dòng)排版。一般來說dxp的自動(dòng)排版后的pcb板已經(jīng)比較理想了,但是仍然可以手動(dòng)排版進(jìn)行進(jìn)一步美化。 圖3-7 pcb手動(dòng)排版3.2.3 pcb板的布線 在元件排版完畢之后,就可以進(jìn)入到最后的布線階段。protel dxp 2004沿襲了protel99 se強(qiáng)大的自動(dòng)布線功能,不僅布線快速而且合理,通過率很高。我們可以執(zhí)行auto route/a

20、ll命令,選擇default 2 layer board選項(xiàng),再點(diǎn)擊route all完成雙層pcb板的布線。 圖3-8 dxp自動(dòng)布線后的pcb板dxp在完成自動(dòng)布線之后顯示一共布線總數(shù),并且全部成功,至此基于dxp的pcb板設(shè)計(jì)全部制作完成。3.3.4 pcb板的覆銅選擇工具欄上的按鈕,將彈出一個(gè)對(duì)話框,如圖3-9所示,在connect to net中選擇gnd點(diǎn)擊ok,鼠標(biāo)將變成光標(biāo),用光標(biāo)將需要覆銅的區(qū)域圈起來,則得到覆銅后的頂層圖,如圖3-9所示,在設(shè)計(jì)工作區(qū)的板層標(biāo)簽選中bottomlayer,執(zhí)行以上相同步驟,得到覆銅后的底層圖,如圖3-9。 圖3-9 覆銅參數(shù)設(shè)置 圖3-10

21、覆銅后的頂層圖4 電路仿真及分析(1) 密碼鎖開始菜單 圖4-1 密碼鎖開始菜單(2) 密碼鎖設(shè)置初始密碼 圖4-2 設(shè)置初始密碼(3) 成功設(shè)置密碼 圖4-3 設(shè)置密碼成功提示(4) 輸入錯(cuò)誤提示 圖4-4 密碼輸入錯(cuò)誤提示 結(jié)論:由此可以看出,此設(shè)計(jì)的矩陣鍵盤鍵值讀取,1602液晶顯示模塊,密碼讀取模塊,密碼設(shè)置模塊比較模塊,聲光狀態(tài)模塊都能正常工作,設(shè)計(jì)成功。5 心得體會(huì)作為電路設(shè)計(jì)必須使用的軟件,protel dxp被現(xiàn)代電子設(shè)計(jì)者們廣泛的使用,我們作為電子信息工程專業(yè)的學(xué)習(xí)者,理應(yīng)熟練掌握這種實(shí)用性好、專業(yè)性強(qiáng)的軟件。經(jīng)過對(duì)protel dxp一周的學(xué)習(xí)和應(yīng)用,從開始的無法上手,到現(xiàn)

22、在的馬馬虎虎,雖然不能說做的很好,但是自己看到了自己的進(jìn)步,從這點(diǎn)上還是很高興的。本設(shè)計(jì)從經(jīng)濟(jì)實(shí)用的角度出發(fā),采用美國(guó)atmel公司的單片機(jī)at89c52作為主控芯片與數(shù)據(jù)存儲(chǔ)器單元,結(jié)合外圍的鍵盤輸入、顯示、報(bào)警、開鎖等電路并用c編寫主控芯片的控制程序,研制了一款可以多次更改密碼具有報(bào)警功能的電子密碼鎖。設(shè)計(jì)完全可行可以達(dá)到設(shè)計(jì)目的。使用單片機(jī)制作的電子密碼鎖具有軟硬件設(shè)計(jì)簡(jiǎn)單,易于開發(fā),成本較低,安全可靠,操作方便等特點(diǎn)。可應(yīng)用于住宅、辦公室的保險(xiǎn)箱及檔案柜等需要防盜的場(chǎng)所,有一定的實(shí)用性。該電路設(shè)計(jì)還具有按鍵有效提示,輸入錯(cuò)誤提示,控制開鎖電路,控制報(bào)警電路,修改密碼等多種功能。可在意外

23、泄密的情況下隨時(shí)修改密碼。保密性強(qiáng),靈活性高,特別適用于家庭、辦公室、學(xué)生宿舍及賓館等諸多場(chǎng)所。與此同時(shí)本次課程設(shè)計(jì)也使我學(xué)到了關(guān)于protel軟件的安裝、電子線路原理圖的設(shè)計(jì)、電路原理圖元件庫文件的設(shè)計(jì)、電子線路pcb電路板設(shè)計(jì)、pcb元件封裝庫設(shè)計(jì)。但是這些內(nèi)容對(duì)于我們今后的所用是遠(yuǎn)遠(yuǎn)不夠的。為此,在以后的時(shí)間里要進(jìn)一步的去學(xué)習(xí)和思考,對(duì)protel要有近一步的認(rèn)識(shí),更好能熟練地掌握各種操作此軟件。6 參考文獻(xiàn)1 伍時(shí)和等數(shù)字電子技術(shù)基礎(chǔ)北京:清華大學(xué)出版社,2009.42 張?zhí)旆驳?1單片機(jī)c語言開發(fā)詳解北京:電子工業(yè)出版社,2008.63 李東生,許四毛. protel電路設(shè)計(jì)教程.

24、北京:電子工業(yè)出版社,2010.4 朱定華,蔡苗. protel原理圖和印制板設(shè)計(jì).北京:清華大學(xué)出版社,2011. 5 陳汝全電子技術(shù)常用器件應(yīng)用手冊(cè)2版北京:機(jī)械工業(yè)出版社,2006.6 余孟嘗數(shù)字電子技術(shù)基礎(chǔ)簡(jiǎn)明教程.2版北京:高等教育出版社,2007.7 謝自美.電子線路設(shè)計(jì).實(shí)驗(yàn).測(cè)試.武漢:華中科技大學(xué)出版,2006.附錄名稱型號(hào)數(shù)量備注單片機(jī)芯片stc89c521石英晶振12m1瓷片電容3321054電解電容4.7uf1電位器10k1電阻1k410k110k排阻1led紅色1綠色1長(zhǎng)鳴蜂鳴器1三極管85501lcd顯示模塊16021按鍵開關(guān)17自鎖開關(guān)1排針若干導(dǎo)線若干萬用表1電

25、工工具1套數(shù)字式密碼電子鎖程序源代碼(仿真)#include"reg52.h"#include "string.h"#define lcd_data p0 /lcd的數(shù)據(jù)口/輸入方式設(shè)置#define lcd_ac_auto_increment0x06 /數(shù)據(jù)讀、寫操作后,ac自動(dòng)增一#define lcd_ac_auto_decrease0x04 /數(shù)據(jù)讀、寫操作后,ac自動(dòng)減一#define lcd_move_enable0x05 /數(shù)據(jù)讀、寫操作,畫面平移#define lcd_move_disenable 0x04 /數(shù)據(jù)讀、寫操作,畫面不動(dòng)/設(shè)

26、置顯示、光標(biāo)及閃爍開、關(guān)#define lcd_display_on 0x0c /顯示開#define lcd_display_off 0x08 /顯示關(guān)#define lcd_cursor_on 0x0a /光標(biāo)顯示#define lcd_cursor_off 0x08 /光標(biāo)不顯示#define lcd_cursor_blink_on 0x09 /光標(biāo)閃爍#define lcd_cursor_blink_off 0x08 /光標(biāo)不閃爍/光標(biāo)、畫面移動(dòng),不影響ddram#define lcd_left_move 0x18 /lcd顯示左移一位#define lcd_right_move 0x

27、1c /lcd顯示右移一位#define lcd_cursor_left_move 0x10 /光標(biāo)左移一位#define lcd_cursor_right_move 0x14 /光標(biāo)右移一位/工作方式設(shè)置#define lcd_display_double_line0x38 /兩行顯示#define lcd_display_single_line 0x30 /單行顯示unsigned char code tab44='1','2','3','c', '4','5','6','

28、;b', '7','8','9','s', 'l','0','r','e' /鍵盤鍵值表unsigned char input_password9=0,0,0,0,0,0,0,0,'0' /臨時(shí)讀入密碼數(shù)組unsigned char normal_password9="12345678" /密碼存儲(chǔ)數(shù)組unsigned char temp_normal_password9="12345678"/臨時(shí)設(shè)定密

29、碼數(shù)組unsigned char lock=0,miss=0,key=0;/系統(tǒng)環(huán)境變量 分別為鎖狀態(tài)、連續(xù)錯(cuò)誤次數(shù)、讀入鍵值sbit beep=p32;/蜂鳴器控制變量sbit ledr=p34;/開鎖指示燈控制變量sbit lede=p36;/閉鎖指示燈控制變量sbit lcd_busy=lcd_data7; /lcd忙信號(hào)位sbit lcd_rw=p20; /lcd讀寫控制sbit lcd_rs=p21; /lcd寄存器選擇sbit lcd_en=p22; /lcd使能信號(hào)*/void lcd_cls(void);void lcd_write_data(unsigned char);vo

30、id lcd_initial(void);void lcd_set_position(unsigned char);void lcd_prints(unsigned char *);void lcd_printc(unsigned char); voiddidi();/蜂鳴報(bào)警模塊函數(shù)voidverify_password ();/開鎖判斷模塊函數(shù)void load();/初始化函數(shù)void first();voidread_password ();/讀入密碼模塊函數(shù)voidset_password();/設(shè)定密碼模塊函數(shù)void delay(unsigned char a);/毫秒延時(shí)模塊函

31、數(shù)unsigned char kbscan(); /鍵盤掃描模塊函數(shù)void lcd_check_busy(void) /檢測(cè)lcd狀態(tài) while(1) lcd_en=0; lcd_rs=0; lcd_rw=1; lcd_data=0xff; lcd_en=1; if(!lcd_busy)break; lcd_en=0;void lcd_cls(void) /lcd清屏 lcd_check_busy(); lcd_rs=0; lcd_rw=0; lcd_data=1; lcd_en=1; lcd_en=0; void lcd_write_instruction(unsigned char l

32、cd_instruction) /寫指令到lcd lcd_check_busy(); lcd_rs=0; lcd_rw=0; lcd_data=lcd_instruction; lcd_en=1; lcd_en=0; void lcd_write_data(unsigned char lcd_data) /輸出一個(gè)字節(jié)數(shù)據(jù)到lcd lcd_check_busy(); lcd_rs=1; lcd_rw=0; lcd_data=lcd_data; lcd_en=1; lcd_en=0; void lcd_set_position(unsigned char x) /lcd光標(biāo)定位到x處 lcd_w

33、rite_instruction(0x80+x);/*void lcd_go_home(void) /lcd光標(biāo)歸位 lcd_write_instruction(lcd_go_home);*/void lcd_printc(unsigned char lcd_data) /輸出一個(gè)字符到lcd lcd_write_data(lcd_data);void lcd_prints(unsigned char *lcd_string) /輸出一個(gè)字符串到lcd unsigned char i=0; while(lcd_stringi!=0x00) lcd_write_data(lcd_stringi)

34、; i+; void lcd_initial(void) /初始化lcd lcd_write_instruction(lcd_ac_auto_increment|lcd_move_disenable); lcd_write_instruction(lcd_display_on|lcd_cursor_off); lcd_write_instruction(lcd_display_double_line); lcd_cls();/*function:delay(unsigned char t)*input variables:t<256*return variables:none*usage

35、:通過讀入的時(shí)間值進(jìn)行延時(shí)*notes: none*/void delay(unsigned char a)unsigned char i;while(a-)for(i=110;i>0;i-);/*function:kbscan()*input variables:none*return variables:key*usage:將讀出的按鍵保存在全局變量key,并將其當(dāng)做函數(shù)值返回*notes: none*/unsigned char code kbscan() /鍵盤掃描模塊函數(shù) unsigned char hang,lie;if(p1!=0x0f)delay(5);/軟件消抖if(p

36、1!=0x0f)/判斷是否有按鍵switch(p1&0x0f)case 0x0e:hang=0;break;case 0x0d:hang=1;break;case 0x0b:hang=2;break;case 7:hang=3;break;/掃描行p1=0xf0;p1=0xf0;switch(p1&0xf0)case 0xe0:lie=0;break;case 0xd0:lie=1;break;case 0xb0:lie=2;break;case 0x70:lie=3;break;/掃描列p1=0x0f;while(p1!=0x0f);key=tabhanglie;/確定按鍵鍵

37、值elsekey=0;/無按鍵return (key);/*function:load()*input variables:none*return variables:none*usage:系統(tǒng)初始化*notes: none*/void load()/初始化函數(shù)unsigned char i;beep=1;ledr=0;lede=1;key=0;p1=0xf0;p0=0xff;for(i=0;i<9;i+)input_passwordi='0'/系統(tǒng)變量數(shù)組清零normal_password9='0'lcd_initial();lcd_set_positi

38、on(1);lcd_prints("why's electron");lcd_set_position(0x40);lcd_prints(" cipher lock");/提示信息lcd顯示while(kbscan()=0);/按任意值返回return;/*function:first()*input variables:none*return variables:none*usage:等待清屏函數(shù)*notes: none*/void first()while(kbscan()=0);lcd_cls();return;/*function:rea

39、d_password()*input variables:none*return variables:none*usage:讀入通過鍵盤輸入的密碼*notes: none*/void read_password()/讀入密碼模塊函數(shù)unsigned char i=0;lcd_set_position(0x40);lcd_prints(" ");for(i=0;i<9;i+)input_passwordi='0'/讀入密碼數(shù)組初始化for (i=0;i<9;)while(kbscan()=0);if(i=8 &&(key>=&

40、#39;0'&&key<='9') continue;/判斷是否輸入最長(zhǎng)密碼switch(key)/判斷按鍵種類case 'l':if(i>0)i-;break; /讀入位置左移case 'r':if(i<7)i+;break; /讀入位置右移case 'e':return;case 'c':lcd_set_position(0x40);lcd_prints(" ");for(i=9;i>0;i-)input_passwordi='0

41、9;input_passwordi='0'break;/清空讀入內(nèi)容case 'b':if(i>0)i-;input_passwordi=0;lcd_set_position(0x44+i);lcd_printc(' ');/進(jìn)行退格操作break;case 's': break; /功能鍵處理default: input_passwordi=key;/有效數(shù)字密碼保存lcd_set_position(0x44+i);lcd_printc(input_passwordi+);key=0;/鍵值清零/*function:voi

42、d set_password()*input variables:none*return variables:none*usage:設(shè)置密碼鎖系統(tǒng)的密碼*notes: none*/void set_password()/設(shè)定密碼模塊函數(shù)unsigned char i,j;/局部循環(huán)、判斷變量while(1)lcd_cls();lcd_set_position(1);lcd_prints("set password");lcd_set_position(0x40);lcd_prints(" ");/提起信息顯示read_password();/讀入密碼st

43、rncpy(temp_normal_password,input_password,9);/讀入密碼保存在臨時(shí)設(shè)定密碼數(shù)組for(i=0;i<9;i+)input_passwordi='0'/讀入密碼數(shù)組初始化lcd_set_position(0x44);while(kbscan()=0);lcd_cls();lcd_set_position(1);lcd_prints("input again");read_password(); /進(jìn)行設(shè)定密碼確認(rèn)j=strcmp(input_password,temp_normal_password)=0;/判斷

44、兩次密碼是否相同for(i=0;i<9;i+)input_passwordi='0'if(j)lcd_cls();lcd_set_position(2);lcd_prints("set password");lcd_set_position(0x42);lcd_prints("successfully");strncpy(normal_password,temp_normal_password,9);for(i=0;i<9;i+)temp_normal_passwordi='0'while(kbscan()=0);break;/如果相同保存密碼進(jìn)行提示elselcd_cls();

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論