AT89C51芯片電子密碼鎖設(shè)計論文_第1頁
AT89C51芯片電子密碼鎖設(shè)計論文_第2頁
AT89C51芯片電子密碼鎖設(shè)計論文_第3頁
AT89C51芯片電子密碼鎖設(shè)計論文_第4頁
AT89C51芯片電子密碼鎖設(shè)計論文_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 . 摘 要 電子密碼鎖是一種通過密碼輸入來控制電路或是芯片工作,從而控制機械開關(guān)的閉合,完成開鎖、閉鎖任務(wù)的電子產(chǎn)品。本設(shè)計采用單片機為主控芯片,結(jié)合外圍電路,通過編程來實現(xiàn)功能。本次課程設(shè)計采用現(xiàn)在流行的、移植方面更加靈活的、方便易懂的 C 語言。整個程序采用結(jié)構(gòu)化模塊化的方法,使得程序在修改方面顯得非常的方便快捷。用戶想要打開鎖必先通過提供的鍵盤輸入正確的密碼才能將鎖打開,如果密碼輸入錯誤,會報警;三次以上,鎖定鍵盤,亮紅燈。密碼輸入正確,亮綠燈。 本次設(shè)計采用的硬件有 AT89C51 芯片,采用它作為運算芯片;采用中斷方式判斷 4*4 矩陣鍵盤是否有按鍵按下,并核對密碼;在顯示方面,每

2、輸入一次數(shù)值,都會在 LCD 上顯示。使得整個設(shè)計更具有視覺性。關(guān)鍵詞:電子密碼鎖、單片機、報警目 錄第 1 章 系統(tǒng)總體設(shè)計 .11.1 系統(tǒng)結(jié)構(gòu).11.2 系統(tǒng)組成 91.3 系統(tǒng)可行性分析 10第 2 章 硬件電路設(shè)計 .112.1 單片機 AT89C52 簡介 112.2 4*4 矩陣鍵盤 152.3 1604LCD 液晶顯示屏 162.4 發(fā)光二極管 LED252.5 蜂鳴器 262.6 電路原理圖 .312.7 電路仿真圖 .32第 3 章 軟件程序設(shè)計 .334.1 軟件設(shè)計流程圖 344.2 程序 35參考文獻(xiàn) 39 . 2 / 39致 40附錄 1:PCB 封裝電路圖 .41

3、附錄 2.1:密碼鎖設(shè)計主程序.42附錄 2.2:鍵掃程序.47附錄 2.3:12864 顯示子程序 .49附錄 2.4:AT2402 存儲子程序 .53 . 第 1 章 系統(tǒng)總體設(shè)計1.1 系統(tǒng)結(jié)構(gòu) AT89C51液晶顯示屏蜂鳴器LED44 鍵盤上拉電阻 圖 11 系統(tǒng)結(jié)構(gòu)圖1.2 系統(tǒng)組成如圖 21 所示系統(tǒng)主要由 AT89C51、1602 液晶顯示器、LED、4*4 矩陣鍵盤、蜂鳴器電路等組成。電源 . 2 / 391.3 系統(tǒng)可行性分析 系統(tǒng)工作原理分析:使用 AT89C51 單片機、4*4 矩陣鍵盤、LED、1602 液晶顯示器等。矩陣鍵盤分別為 0、1、2、3、4、5、6、7、8、

4、9、確認(rèn)鍵組成。系統(tǒng)開始顯示“WELCOMINPUT”提示輸入密碼;輸入密碼時,LCD 顯示電路顯示為“*” ,當(dāng)密碼輸入完畢按下確認(rèn)鍵時,對輸入密碼與設(shè)定的密碼進(jìn)行比較,若密碼正確則 LCD顯示電路顯示為“welcom ight open”提示綠燈亮;若密碼不正確,LCD 顯示電路顯示提示“worry” 。蜂鳴器發(fā)聲,三次紅燈亮,鎖定鍵盤,可以提高系統(tǒng)的安全系數(shù)。第 2 章 硬件電路設(shè)計2.1 單片機 AT89C51 簡介AT89C51 為 ATMEL 所生產(chǎn)的一種低功耗、高性能 CMOS8 位微控制器,具有 8K在系統(tǒng)可編程 Flsah 存儲器。1 AT89S52 主要功能列舉如下:(1)

5、擁有靈巧的 8 位 CPU 和在系統(tǒng)可編程 Flash . 3 / 39(2)晶片部具時鐘振蕩器(傳統(tǒng)最高工作頻率可至 12MHz)(3)部程序存儲器(ROM)為 8KB(4) 部數(shù)據(jù)存儲器(RAM)為 256 字節(jié)(5) 32 個可編程 I/O 口線(6) 8 個中斷向量源(7) 三個 16 位定時器/計數(shù)器(8) 三級加密程序存儲器(9) 全雙工 UART 串行通道2.MCS-51 的引腳說明:MCS-51 系列單片機中的 8031、8051 與 8751 均采用 40Pin 封裝的雙列直接 DIP結(jié)構(gòu),右圖是它們的引腳配置,40 個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4

6、 組 8 位共 32 個 I/O 口,中斷口線與 P3 口線復(fù)用?,F(xiàn)在我們對這些引腳的功能加以說明:MCS-51 的引腳說明:MCS-51 系列單片機中的 8031、8051 與 8751 均采用 40Pin 封裝的雙列直接 DIP結(jié)構(gòu),右圖是它們的引腳配置,40 個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4 組 8 位共 32 個 I/O 口,中斷口線與 P3 口線復(fù)用?,F(xiàn)在我們對這些引腳的功能加以說明:如圖 2.1.2圖 2.1.2 89C51 的引腳結(jié)構(gòu) . 4 / 392.2 4*4 矩陣鍵盤矩陣式鍵盤適用于按鍵數(shù)量較多的場合,由行線和列線組成,按鍵位于行列的交叉點上。節(jié)

7、省 I/O 口。矩陣鍵盤工作原理:行線通過上拉電阻接到+5V 上。無按鍵,行線處于高電平狀態(tài),有鍵按下,行線電平狀態(tài)將由與此行線相連的列線電平?jīng)Q定。列線電平為低,則行線電平為低;列線電平為高,則行線電平為高。如圖所示,本系統(tǒng)采用 4*4 矩陣鍵盤,前 11 個按鍵按順序分別為0、1、2、3、4、5、6、7、8、9、確認(rèn)鍵,后面的鍵未定義。用戶只能通過鍵盤輸入密碼。圖 32 4*4 矩陣鍵盤原理圖3.5 1602LCD 液晶顯示屏圖 35 液晶屏電路原理圖 3.5.1 概述LCD 是一種利用液晶的扭曲、向列效應(yīng)制成的新型顯示器。它具有體積小,質(zhì)量輕,功耗低,抵制干擾能力強等優(yōu)點,因而在單片機系統(tǒng)

8、中被廣泛應(yīng)用。LCD 本身不發(fā)光,是通過借助外界光線照射液晶材料而實現(xiàn)顯示的被動顯示器件 . 5 / 393.5.2 基本特性:(1)、低電源電壓(VDD:+3.0-+5.5V)(2)、顯示分辨率:12864 點 (3)、置漢字字庫,提供 8192 個 1616 點陣漢字(簡繁體可選) (4)、置 128 個 168 點陣字符 (5)、2MHZ 時鐘頻率 (6)、顯示方式:STN、半透、正顯 (7)、驅(qū)動方式:1/32DUTY,1/5BIAS (8)、視角方向:6 點 (9)、背光方式:側(cè)部高亮白色 LED,功耗僅為普通 LED 的 1/51/10 (10)、通訊方式:串行、并口可選 (11)

9、、置 DC-DC 轉(zhuǎn)換電路,無需外加負(fù)壓 (12)、無需片選信號,簡化軟件設(shè)計(13)、工作溫度: 0 - +55 ,存儲溫度: -20 - +60模塊接口說明:*注釋 1:如在實際應(yīng)用中僅使用串口通訊模式,可將 PSB 接固定低電平,也可以將模塊上的 J8 和“GND”用焊錫短接。*注釋 2:模塊部接有上電復(fù)位電路,因此在不需要經(jīng)常復(fù)位的場合可將該端懸空。*注釋 3:如背光和模塊共用一個電源,可以將模塊上的 JA、JK 用焊錫短接。3.5.3 并行接口管腳號管腳名稱電平管腳功能描述1VSS0V電源地2VCC3.0+5V電源正3V0-對比度(亮度)調(diào)整4RS(CS)H/LRS=“H”,表示 D

10、B7DB0 為顯示數(shù)據(jù)RS=“L”,表示 DB7DB0 為顯示指令數(shù)據(jù)5R/W(SID)H/LR/W=“H”,E=“H”,數(shù)據(jù)被讀到 DB7DB0R/W=“L”,E=“HL”, DB7DB0 的數(shù)據(jù)被寫到 IR 或 DR6E(SCLK)H/L使能信號 . 6 / 397DB0H/L三態(tài)數(shù)據(jù)線8DB1H/L三態(tài)數(shù)據(jù)線9DB2H/L三態(tài)數(shù)據(jù)線10DB3H/L三態(tài)數(shù)據(jù)線11DB4H/L三態(tài)數(shù)據(jù)線12DB5H/L三態(tài)數(shù)據(jù)線13DB6H/L三態(tài)數(shù)據(jù)線14DB7H/L三態(tài)數(shù)據(jù)線15PSBH/LH:8 位或 4 位并口方式,L:串口方式(見注釋 1)16NC-空腳17/RESETH/L復(fù)位端,低電平有效(見

11、注釋 2)18VOUT-LCD 驅(qū)動電壓輸出端19AVDD背光源正端(+5V)(見注釋 3)20KVSS背光源負(fù)端(見注釋 3)*注釋 1:如在實際應(yīng)用中僅使用并口通訊模式,可將 PSB 接固定高電平,也可以將模塊上的 J8和“VCC”用焊錫短接。*注釋 2:模塊部接有上電復(fù)位電路,因此在不需要經(jīng)常復(fù)位的場合可將該端懸空。 *注釋 3:如背光和模塊共用一個電源,可以將模塊上的 JA、JK 用焊錫短接。四.模塊主要硬件構(gòu)成說明3.5.4 控制器接口信號說明 1、RS,R/W 的配合選擇決定控制界面的 4 種模式RSR/W功能說明00MPU 寫指令到指令暫存器(IR)01讀出忙標(biāo)志(BF)與地址記

12、數(shù)器(AC)的狀態(tài) . 7 / 3910MPU 寫入數(shù)據(jù)到數(shù)據(jù)暫存器(DR)11MPU 從數(shù)據(jù)暫存器(DR)中讀出 2、E 信號E 狀態(tài)執(zhí)行動作結(jié)果高低I/O 緩沖DR配合/W 進(jìn)行寫數(shù)據(jù)或指令高DRI/O 緩沖配合 R 進(jìn)行讀數(shù)據(jù)或指令低/低高無動作 3 、忙標(biāo)志:BF BF 標(biāo)志提供部工作情況.BF=1 表示模塊在進(jìn)行部操作,此時模塊不接受外部指令和數(shù)據(jù).BF=0 時,模塊為準(zhǔn)備狀態(tài),隨時可接受外部指令和數(shù)據(jù).利用 STATUS RD 指令,可以將 BF 讀到 DB7 總線,從而檢驗?zāi)K之工作狀態(tài). 4、字型產(chǎn)生 ROM(CGROM): 字型產(chǎn)生 ROM(CGROM)提供 8192 個此觸

13、發(fā)器是用于模塊屏幕顯示開和關(guān)的控制。DFF=1 為開顯示(DISPLAY ON),DDRAM 的容就顯示在屏幕上,DFF=0 為關(guān)顯示(DISPLAY OFF)。DFF 的狀態(tài)是指令 DISPLAY ON/OFF 和 RST 信號控制的。 5、顯示數(shù)據(jù) RAM(DDRAM)模塊部顯示數(shù)據(jù) RAM 提供 642 個位元組的空間,最多可控制 4 行 16 字(64 個字)的中文字型顯示,當(dāng)寫入顯示數(shù)據(jù) RAM 時,可分別顯示 CGROM 與 CGRAM 的字型;此模塊可顯示三種字型,分別是半角英數(shù)字型(16*8)、CGRAM 字型與 CGROM 的中文字型,三種字型的選擇,由在 DDRAM 中寫入

14、的編碼選擇,在 0000H0006H 的編碼中(其代碼分別是 0000、0002、0004、0006 共 4 個)將選擇 CGRAM 的自定義字型,02H7FH 的編碼中將選擇半角英數(shù)字的字型,至于 A1 以上的編碼將自動的結(jié)合下一個位元組,組成兩個位元組的編碼形成中文字型的編碼 BIG5(A140D75F),GB(A1A0-F7FFH)。 6、字型產(chǎn)生 RAM(CGRAM) 字型產(chǎn)生 RAM 提供圖象定義(造字)功能, 可以提供四組 1616 點的自定義圖象空間,使用者可以將部字型沒有提供的圖象字型自行定義到 CGRAM 中,便可和CGROM 中的定義一樣地通過 DDRAM 顯示在屏幕中。

15、. 8 / 39 7、地址計數(shù)器 AC 地址計數(shù)器是用來貯存 DDRAM/CGRAM 之一的地址,它可由設(shè)定指令暫存器來改變,之后只要讀取或是寫入 DDRAM/CGRAM 的值時,地址計數(shù)器的值就會自動加一,當(dāng) RS 為“0”時而 R/W 為“1”時,地址計數(shù)器的值會被讀取到 DB6DB0 中。 8、光標(biāo)/閃爍控制電路 此模塊提供硬體光標(biāo)與閃爍控制電路,由地址計數(shù)器的值來指定 DDRAM 中的光標(biāo)或閃爍位置。3.6 發(fā)光二極管 LED圖 36 二極管 LED LED 是單片機應(yīng)用系統(tǒng)中常用的輸出設(shè)備,LED 由發(fā)光二極管構(gòu)成,具有結(jié)構(gòu)簡單、價格便宜等特點。在本次設(shè)計中用到了兩個 LED。它們由

16、引腳控制,當(dāng)密碼正確時相應(yīng)的引腳變?yōu)榈碗娖綇亩l(fā)光,綠燈亮。錯誤時紅燈亮。 3.8 蜂鳴器圖 38 蜂鳴器由于蜂鳴器使用 P1 口驅(qū)動要加上上拉電阻如圖 38。當(dāng)密碼輸入錯誤,P1 口變?yōu)楦唠娖綇亩狗澍Q器發(fā)聲。 . 9 / 39 . 10 / 393.9 電路原理圖電路仿真圖 . 11 / 39第 4 章 軟件程序設(shè)計本系統(tǒng)軟件設(shè)計由主程序,初始化程序,LCD 顯示程序,鍵盤掃描程序組成。主要程序設(shè)計流程圖如下所示: . 12 / 394.1軟件設(shè)計流程圖 . 13 / 39開始輸入密碼正確否?開鎖判斷按鍵1 鍵更改密碼鍵上鎖結(jié)束輸入密碼正確否?輸入新密碼再次輸入一致否?修改密碼YesNoN

17、oYesNoYes圖 41 軟件設(shè)計流程圖 . 14 / 394.2 具體功能軟件實施4.2.1 開始等待流程 系統(tǒng)開始一直顯示提示“請輸入密碼”,并判斷有否按鍵,當(dāng)有鍵按下跳出等待。開始顯示“輸入密碼”判斷是否有按鍵?結(jié)束NoYes圖 42 開始等待流程4.2.2 密碼檢查功能本系統(tǒng)使用數(shù)組 PASSWORD6存儲密碼,系統(tǒng)初始化對數(shù)組負(fù)值 PASSWORD61,6,7,9,10,11相當(dāng)于鍵盤上的 1,2,3,4,5,6。輸入密碼的時候,先將輸入的每一位密碼分別放置在數(shù)組 key6中,然后再將 key6與 PASSWORD6的每一位分別對照。若每一位都相等,密碼檢查通過。 . 15 / 3

18、9開始輸入一位密碼,顯示屏顯示“*”K=6?k=0按鍵為?結(jié)束YesNoNoYes圖 43 密碼檢查4.2.3 鍵盤掃描如圖 3-2,本系統(tǒng)使用 44 矩陣鍵盤當(dāng)沒有鍵按下時,行線和列線之間是不相連的,若第 N 行與第 M 列的鍵被按下,那么第 N 行與第 M 列的線就被接通。根據(jù)上述原理,本系統(tǒng)的鍵盤掃描方法是利用 P1 口的低四位作為行掃描線,P1 口的高四位作為列回掃線。具體實施方法為:先使 P1.0 口輸出低電平,P1 口其他口輸出高電平,然后對 P1.4、P1.5、P1.6、P1.7 四個口分別作判斷。若此四口都為高電平,則沒有鍵按下;若有鍵按下,P1.4、P1.5、P1.6、P1.

19、7 四個口必定有一個口輸入為低電平,再判斷 P1.4、P1.5、P1.6、P1.7 哪個口為低電平則可判斷按鍵在哪列上。如 P1.4、P1.5、P1.6、P1.7 沒有低電平,再使 P1.1 為低電平,其他口為高電平,依次掃描下去,找到按鍵所在的行,再判斷 P2 口的高四位哪一位為低,便可知道鍵在哪一列上。鍵盤掃描子程序 key()如下:/* . 16 / 3934 矩陣鍵盤輸入函數(shù)*/ #ifndef _keypad_h_#define _keypad_h_#include#include#include#define uchar unsigned char#define uint unsi

20、gned intuchar idata com1,com2;uchar key_scan() uchar temp; uchar ; P1=0 xf8; delay(5); if(P1!=0 xf8) com1=P1; P1=0 x0f; com2=P1; P1=0 xf8;delay(5); while(P1!=0 xf8); temp=com1|com2;while(P1&0 xf0)!=0 xf0);while(P1&0 xf0)!=0 xf0); . 17 / 39if(temp=0 xee)=0 x01;if(temp=0 xed)=0 x02;if(temp=0 xeb)=0 x0

21、3;if(temp=0 xde)=0 x04;if(temp=0 xdd)=0 x05;if(temp=0 xdb)=0 x06;if(temp=0 xbe)=0 x07;if(temp=0 xbd)=0 x08;if(temp=0 xbb)=0 x09;if(temp=0 x7e)=0 x0a; /10 為鍵值,其代碼功能為清除 if(temp=0 x7d)=0 x00;if(temp=0 x7b)=0 x0b; /其代碼功能為輸入密碼結(jié)束并確認(rèn) ,即開鎖 return();#endif4.2.5 修改密碼本系統(tǒng)設(shè)定的修改密碼過程為,在輸入正確的密碼后,按“確認(rèn)”鍵,此時提示輸入舊密碼“請輸

22、入密碼”,輸入正確的舊密碼后,可以輸入新密碼。此時鍵入的六位新密碼將保存到數(shù)組 key6中。然后顯示器提示再次輸入,輸入完畢后,第二次輸入的密碼將保存在 iic6中,然后將 key6中六位分別與 iic6中的六位比對,若兩次密碼輸入一直,即將新的密碼,也就是 iic6和 iic6中的六位賦值到 PASSWORD6中。此時修改密碼工作完成,屏幕顯示“密碼修改成功”。系統(tǒng)將跳翻到開始,即提示輸入密碼“INPUT”。 . 18 / 39參考文獻(xiàn)1 當(dāng)方微型計算機控制技術(shù)M中國水利水電,2001 年2 胡漢才單片機原理與其借口技術(shù)M清華大學(xué),1996 年3 新民智能儀器設(shè)計基礎(chǔ)M工業(yè)大學(xué),1999 年

23、4 新,民王,燕芳微型計算機控制技術(shù)M電子工業(yè),2003 年5 鐘實實用電子報警器精選百例M:科技技術(shù)文獻(xiàn),2002 年6 愛弟Protel99se 實用培訓(xùn)教程M人民郵電,2000 年。7 閻石數(shù)字電子技術(shù)基礎(chǔ)M高等教育,1998 年8 童詩白模擬電子技術(shù)基礎(chǔ)M高等教育出版涉,1998 年9 候振鵬嵌入式 C 語言程序設(shè)計M:人民郵電,2006 年10 徐士良C 語言程序設(shè)計教程M:人民郵電,2001 年11 Brian W. Kernighan.TheThe C C ProgrammingProgramming Language.Language. Prentice Hall PTR,19

24、8812Janice Mazidi.80518051 MicrocontrollerMicrocontroller andand EmbeddedEmbedded Systems.Systems. Prentice Hall,199913 .21ic.14 .mcuwork.15 .cndzz.16 .elecfans. . 19 / 39致通過這次畢業(yè)設(shè)計,讓我復(fù)習(xí)了很多學(xué)過的舊知識,同時鍛煉了自己的動手能力和查閱資料。尤其是解決在實際中解決排查問題的能力。1、通過這次的設(shè)計,我熟悉了使用 Protel 的技巧,學(xué)會了制作電路板的一些技巧,并且熟悉了如何選購使用電子元器件。2、在設(shè)計中,我學(xué)

25、到了如何使用 C 語言對單片機進(jìn)行編寫程序,熟悉了使用 KEIL C 軟件,并且加深了對單片機的編程技巧。3、在做這個設(shè)計的過程中,我遇到了不少的問題。這鍛煉了我篩選、查閱資料,并將理論結(jié)合到自己的設(shè)計中的能力。一步一步的排除故障原因,找到故障的原因并解決故障。4、這次的設(shè)計使我對模擬電子、數(shù)字電子知識加深了了解,尤其是在對電路進(jìn)行調(diào)試的時候,出現(xiàn)了很多這些方面的問題,通過對以往知識的復(fù)習(xí)鞏固,將問題解決。 通過次畢業(yè)設(shè)計,將我從所學(xué)到的專業(yè)知識,基本都應(yīng)用上去,感大學(xué)三年來,老師對我的教育,讓我對掌握了基本的專業(yè)技能。同時也感戴老師對我畢業(yè)設(shè)計的指導(dǎo),在此表示衷心的感! 這次的設(shè)計有很多的不

26、足,和市場上的產(chǎn)品有一定的差距,還請老師同學(xué)們提出寶貴意見! . 20 / 39附錄 1:PCB 封裝電路圖 . 21 / 39附錄 2.1:密碼鎖設(shè)計主程序/*函數(shù)庫函數(shù):密碼鎖設(shè)計主程序設(shè) 計 者:電信 0902 黃柏成時 間:2012 年 5 月 13 日*/#include#include#include#include#define uchar unsigned char#define uint unsigned intuchar idata key6=0,0,0,0,0,0;uchar idata iic6=1,1,1,0,0,0;void press(uchar *s) ucha

27、r dat;/* write_(0 x98+2); P1=0 xf8;/保存第一位密碼 while(P1=0 xf8); dat=key_scan(); if(dat!=0 x0a)&(dat!=0 x0b) *s=dat; write_date(0 x2a); . 22 / 39 s+; /* P1=0 xf8; /保存第二位密碼 while(P1=0 xf8); dat=key_scan(); if(dat!=0 x0a)&(dat!=0 x0b) *s=dat; write_date(0 x2a); s+;/* P1=0 xf8; /保存第三位密碼 while(P1=0 xf8); da

28、t=key_scan(); if(dat!=0 x0a)&(dat!=0 x0b) *s=dat; write_date(0 x2a); s+;/* P1=0 xf8; /保存第四位密碼 while(P1=0 xf8); dat=key_scan(); if(dat!=0 x0a)&(dat!=0 x0b) *s=dat; write_date(0 x2a); s+;/* P1=0 xf8; /保存第五位密碼 while(P1=0 xf8); dat=key_scan(); if(dat!=0 x0a)&(dat!=0 x0b) *s=dat; . 23 / 39 write_date(0 x

29、2a); s+;/* P1=0 xf8; /保存第六位密碼 while(P1=0 xf8); dat=key_scan(); if(dat!=0 x0a)&(dat!=0 x0b) *s=dat; write_date(0 x2a); /* doP1=0 xf8;/鍵入 Enter 鍵盤繼續(xù)執(zhí)行下面語句,否則等待 while(P1=0 xf8); dat=key_scan(); while(dat!=0 x0b);void Delay10ms(void) /延時 10ms uint i,j,k;for(i=10;i0;i-)for(j=4;j0;j-)for(k=248;k0;k-);/* 電

30、子密碼鎖主函數(shù)*/void main() uchar dat; uchar i=0,j=0; Init_12864(); for(i=0;i150;i+)Delay10ms(); . 24 / 39/*若密碼不正確,循環(huán)執(zhí)行 dowhile()*do System(); /顯示:請輸入密碼字幕 press(key);if(key0=iic0)&(key1=iic1)&(key2=iic2)&(key3=iic3)&(key4=iic4)&(key5=iic5) /密碼比較,若密碼正確責(zé)進(jìn)入系統(tǒng),若密碼不正確則顯示密碼錯誤,重新輸入密碼 true(); do P1=0 xf8;/鍵入 1 或 2

31、 繼續(xù)執(zhí)行下面語句,否則等待 while(P1=0 xf8); dat=key_scan(); while(dat!=0 x01&dat!=0 x02); if(dat=1) /開鎖 unlock(); for(i=0;i100;i+)Delay10ms(); continue; if(dat=2)/修改密碼 do System(); press(key); again(); press(iic); if(key0=iic0)&(key1=iic1)&(key2=iic2)&(key3=iic3)&(key4=iic4)&(key5=iic5) . 25 / 39 succeed();/修改密

32、碼成功 for(i=0;i100;i+)Delay10ms(); break; else /修改密碼不成功,重新修改 repeat(); for(i=0;i100;i+)Delay10ms(); while(1); else /密碼不正確,重新輸入密碼 j+;if(j=3)j=0; error();for(i=0;i50;i+)Delay10ms(); while(1); . 26 / 39附錄 2.2:鍵掃程序/*函數(shù)名:44 矩陣鍵盤輸入函數(shù)設(shè)計者:電信 0902 黃柏成時間:2012 年 5 月 13 日*/ #ifndef _keypad_h_#define _keypad_h_#in

33、clude#include#include#define uchar unsigned char#define uint unsigned intuchar idata com1,com2;uchar key_scan() uchar temp; uchar ; P1=0 xf8; delay(5); if(P1!=0 xf8) com1=P1; P1=0 x0f; com2=P1; . 27 / 39 P1=0 xf8;delay(5); while(P1!=0 xf8); temp=com1|com2;while(P1&0 xf0)!=0 xf0);while(P1&0 xf0)!=0 x

34、f0);if(temp=0 xee)=0 x01;if(temp=0 xed)=0 x02;if(temp=0 xeb)=0 x03;if(temp=0 xde)=0 x04;if(temp=0 xdd)=0 x05;if(temp=0 xdb)=0 x06;if(temp=0 xbe)=0 x07;if(temp=0 xbd)=0 x08;if(temp=0 xbb)=0 x09;if(temp=0 x7e)=0 x0a; /10 為鍵值,其代碼功能為清除 if(temp=0 x7d)=0 x00;if(temp=0 x7b)=0 x0b; /其代碼功能為輸入密碼結(jié)束并確認(rèn) ,即開鎖 ret

35、urn();#endif . 28 / 39附錄 2.3:12864 顯示子程序/*函數(shù)庫名稱:12864 顯示函數(shù) 設(shè) 計 者:電信 0902 黃柏成時 間: 2012 年 5 月 13 日 */ #ifndef _12864_h_#define _12864_h_#include#include#include#define uchar unsigned char#define uint unsigned int#define PORT P0sbit rs=P30;sbit rw=P31;sbit en=P35;/*驅(qū)動函數(shù) void delay(uint z)uint x,y;for(x

36、=z;x0;x-)for(y=110;y0;y-); . 29 / 39/*12864 液晶驅(qū)動*/void write_(uchar )delay(5);rs=0;rw=0;P0=;en=1;delay(5);en=0;void write_date(uchar date)delay(5);rs=1;rw=0;P0=date;en=1;delay(5);en=0;/*顯示函數(shù)*/void display(uchar y, uchar x, uchar *p) switch (y) case 1:write_(0 x7f+x);break; case 2:write_(0 x8f+x);bre

37、ak; case 3:write_(0 x87+x);break; case 4:write_(0 x97+x);break; default:break;while(*p) write_date(*p+); . 30 / 39/* void init_clear() /清屏函數(shù) write_(0 x34);delay(5);write_(0 x30);delay(5);write_(0 x01);delay(5);write_(0 x06);delay(5);write_(0 x0c);void Init_12864() /初始化,顯示實驗名稱 init_clear();display(1,

38、1,工學(xué)院 2012 屆);display(2,1,電子密碼鎖設(shè)計);display(3,1,BY 電信 0902 黃柏成);display(4,1,指導(dǎo)老師:戴日光);void System() /在顯示屏上顯示初始字幕:請輸入密碼 init_clear(); display(2,1,請輸入密碼:);display(3,1,);display(4,2, );void error() /密碼錯誤,重新輸入密碼 init_clear(); display(2,3,密碼錯誤); . 31 / 39display(3,2,重新輸入密碼);void true() /請選擇 1 開鎖 2 修改密碼 in

39、it_clear(); display(1,1,請選擇: );display(2,1,1 開鎖);display(3,1,2 修改密碼); void unlock()/開鎖畫面 init_clear();display(1,1,祝老師工作順利); display(2,3,身體健康);display(3,1,祝我畢業(yè)答辯 ok);display(4,1,哈哈-);void again() /請再次輸入密碼 init_clear(); display(2,1,請再次輸入密碼: );display(3,1,);display(4,2, ); void repeat()/密碼確認(rèn)錯誤,請重新修改密碼

40、init_clear(); display(2,2,密碼確認(rèn)錯誤 );display(3,2,請重新修改密碼); void succeed()/修改密碼成功 init_clear(); display(2,3,修改密碼成功); . 32 / 39#endif附錄 2.4:AT2402 存儲子程序/* 函數(shù)庫名稱:密碼保護(hù)部分 ,將新密碼寫入 IIC 器件實時保護(hù) 設(shè) 計 者:電信 0902 黃柏成 時 間:2012 年 5 月 13*/ #ifndef _24C01_h_#define _24C01_h_#include#include#include#define uchar unsigned char#define uint unsigned int#define AddWr 0 xa0#define AddRd 0 xa1#define _Nop _nop_bit ack;sbit SDA=P34;sbit SCL=P33;/*驅(qū)動程序 void Start() /

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論