版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、本科生畢業(yè)設計本科生畢業(yè)設計 基于單片機的電子密碼鎖 a electron cipher lock based on mcu 學生姓名xxx 所在專業(yè)電子信息工程 所在班級電子 1033 班 申請學位工學學士 指導教師xxxx職稱講師 副指導教師職稱 答辯時間2007 年 06 月 8 日 目目 錄錄 設計總說明設計總說明.i design introduction.iii 第第 1 1 章章 緒論緒論.1 1.1背景.1 1.2電子鎖.1 1.3電子密碼鎖的特點.1 1.4電子密碼鎖的發(fā)展趨勢.2 第第 2 2 章章 系統(tǒng)總體設計系統(tǒng)總體設計.3 2.1系統(tǒng)結構.3 2.2 系統(tǒng)組成.3 2
2、.3 系統(tǒng)可行性分析.3 第第 3 3 章章 硬件電路設計硬件電路設計.5 3.1單片機 at89c51 簡介.5 3.1.1 主要特性.5 3.1.2 管腳說明.5 3.1.3 震蕩特性.7 3.1.4 芯片擦除.7 3.2 44 矩陣鍵盤.7 3.3復位電路.8 3.4 振蕩電路.8 3.5 數(shù)碼管.9 3.6 發(fā)光二極管 led.10 3.7 電動鎖.10 3.8 蜂鳴器.11 3.9 完整電路圖.12 第第 4 4 章章 軟件程序設計軟件程序設計.14 4.1軟件設計流程圖.15 4.2 具體功能軟件實施.16 第第 5 章章 結束語及展望結束語及展望.21 第第 6 6 章章 鳴謝鳴
3、謝.22 第第 7 7 章章 參考文獻參考文獻.23 附附 錄錄.22 設計總說明 在日常的生活和工作中, 住宅與部門的安全防范、單位的文件檔案、財務報表以及一些個人資 料的保存多以加鎖的辦法來解決。若使用傳統(tǒng)的機械式鑰匙開鎖,人們常需攜帶多把鑰匙, 使用極 不方便, 且鑰匙丟失后安全性即大打折扣。隨著科學技術的不斷發(fā)展,人們對日常生活中的安全保 險器件的要求越來越高。為滿足人們對鎖的使用要求,增加其安全性,用密碼代替鑰匙的密碼鎖應 運而生。密碼鎖具有安全性高、成本低、功耗低、易操作等優(yōu)點。 在安全技術防范領域,具有防盜報警功能的電子密碼鎖逐漸代替?zhèn)鹘y(tǒng)的機械式密碼鎖,克服了 機械式密碼鎖密碼量
4、少、安全性能差的缺點,使密碼鎖無論在技術上還是在性能上都大大提高一步。 隨著大規(guī)模集成電路技術的發(fā)展,特別是單片機的問世,出現(xiàn)了帶微處理器的智能密碼鎖,它除具 有電子密碼鎖的功能外,還引入了智能化管理、專家分析系統(tǒng)等功能,從而使密碼鎖具有很高的安 全性、可靠性,應用日益廣泛。 隨著人們對安全的重視和科技的發(fā)展,許多電子智能鎖(指紋識別、ic 卡辨認)已在國內(nèi)外 相繼面世。但是這些產(chǎn)品的特點是針對特定的指紋和有效卡,只能適用于保密要求的箱、柜、門等。 而且指紋識識別器若在公共場所使用存在容易機械損壞,ic 卡還存在容易丟失、損壞等特點。加 上其成本較高,一定程度上限制了這類產(chǎn)品的普及和推廣。鑒于
5、目前的技術水平與市場的接收程度, 電子密碼鎖是這類電子防盜產(chǎn)品的主流。 基于以上思路,本次設計使用 atmel 公司的 at89c51 實現(xiàn)一基于單片機的電子密碼鎖的設計, 其主要具有如下功能: (1)設置 6 位密碼,密碼通過鍵盤輸入,若密碼正確,則將鎖打開。 (2)密碼可以由用戶自己修改設定(只支持 6 位密碼) ,鎖打開后才能修改密碼。修改密碼 之前必須再次輸入密碼,在輸入新密碼時候需要二次確認,以防止誤操作。 (3)報警、鎖定鍵盤功能。密碼輸入錯誤數(shù)碼顯示器會出現(xiàn)錯誤提示,若密碼輸入錯誤次 數(shù)超過 3 次,蜂鳴器報警并且鎖定鍵盤。 電子密碼鎖的設計主要由三部分組成:44 矩陣鍵盤接口電
6、路、密碼鎖的控制電路、輸出八 段顯示電路。另外系統(tǒng)還有 led 提示燈,報警蜂鳴器等。 密碼鎖設計的關鍵問題是實現(xiàn)密碼的輸入、清楚、更改、開鎖等功能: (1)密碼輸入功能:按下一個數(shù)字鍵,一個“”就顯示在最右邊的數(shù)碼管上,同時將 先前輸入的所有“”向左移動一位。 (2)密碼清除功能:當按下清除鍵時,清除前面輸入的所有值,并清除所有顯示。 (3)密碼更改功能:將輸入的值作為新的密碼。 (4)開鎖功能:當按下開鎖鍵,系統(tǒng)將輸入與密碼進行檢查核對,如果正確鎖打開,否 則不打開。 主要的設計實施過程:首先,選用 atmel 公司的單片機 at89c51,以及選購其他電子元器件。 第二步,使用 dxp
7、2004 設計硬件電路原理圖,并設計 pcb 圖完成人工布線(后因 pcb 板損壞決定 采用萬能板焊接的方法) 。第三步,使用 keil uvision3 軟件編寫單片機的 c 語言程序、仿真、軟 件調(diào)試。第四部,使用 proteus 軟件進行模擬軟、硬件調(diào)試。最后,聯(lián)合軟、硬件調(diào)試電路板,完 成本次畢業(yè)設計。 關鍵詞:44 矩陣鍵盤;at89c51;密碼鎖;密碼二次確 基于單片機的電子密碼鎖基于單片機的電子密碼鎖 電子信息工程,xxxxx,xxxx 指導教師:xxxxx 第 1 章 緒論 1.1背景 隨著社會物質(zhì)財富的日益增長,安全防盜已成為社會問題。而鎖自古以來就是把 守門戶的鐵將軍,人們
8、對它要求甚高,既要安全可靠地防盜,又要使用方便,這也是 制鎖者長期以來研制的主題。目前國內(nèi),大部分人使用的還是傳統(tǒng)的機械鎖。然而, 眼下假冒偽劣的機械鎖泛濫成災,互開率非常之高。所謂互開率,是各種鎖具的一個 技術質(zhì)量標準,也就是1把鑰匙能開幾把鎖的比率。經(jīng)國家工商局、國家內(nèi)貿(mào)局、中國 消協(xié)等部門對鎖具市場的調(diào)查,發(fā)現(xiàn)個別產(chǎn)品的互開率居然超標26倍。 為何彈子鎖的“互開率”會如此之高?據(jù)有關專家人士剖析,彈子鎖質(zhì)量好壞主 要取決于彈子數(shù)量的多少以及彈子的大小,而彈子的多少和大小受一定條件的限制。 此外,即使是一把質(zhì)量過關的機械鎖,通過急開鎖,甚至可以在不損壞鎖的前提下將 鎖打開。機械鎖的這些弊端
9、為一種新型的鎖-電子密碼鎖,提供了發(fā)展的空間。 1.2電子鎖 電子鎖是采取電子電路控制,以電磁鐵或者衛(wèi)星電機和鎖體作為執(zhí)行裝置的機電 一體化鎖具,相比傳統(tǒng)的機械鎖具,電子鎖不使用金屬鑰匙,保密性、精度都有很大 提高。 電子鎖的發(fā)明思路,源自古代發(fā)明的自動機械,例如古希臘數(shù)學家赫倫的液壓自 動門,中國古代諸葛亮的木牛流馬,它們以重力或蒸汽壓力驅(qū)動,最廣泛的用途乃是 用在古代墓道的地下機關。電子工業(yè)的誕生,使得以微小電量驅(qū)動機械成為可能,于 是有了電子鎖一日千里的躍進。 1.3電子密碼鎖的特點 電子密碼鎖是一種通過密碼輸入來控制電路或是芯片工作,從而控制機械開關的 閉合,完成開鎖、閉鎖任務的電子產(chǎn)
10、品。它的種類很多,有簡易的電路產(chǎn)品,也有基 于芯片的性價比較高的產(chǎn)品?,F(xiàn)在應用較廣的電子密碼鎖是以芯片為核心,通過編程 來實現(xiàn)的。其性能和安全性已大大超過了機械鎖,主要特點如下: 1保密性好,編碼量多,遠遠大于彈子鎖。隨機開鎖成功率幾乎為零。 2密碼可變。 用戶可以經(jīng)常更改密碼,防止密碼被盜,同時也可以避免因人員 的更替而使鎖的密級下降。 3誤碼輸入保護。當輸入密碼多次錯誤時,報警系統(tǒng)自動啟動,防止試探密碼。 1.4電子密碼鎖的發(fā)展趨勢 從目前的技術水平和市場認可程度看,使用最為廣泛的是鍵盤式電子密碼鎖,該 產(chǎn)品主要應用于保險箱、保險柜和金庫,還有一部分應用于保管箱和運鈔車。鍵盤式 電子密碼在
11、鍵盤上輸入,與打電話差不多,因而易于掌握,其突出優(yōu)點是“密碼”是記在 被授權人腦子里的數(shù)字和字符,既準確又可靠,不會丟失(除了忘記) ,難以被竊(除 非自己泄露) 。但是密碼不能太簡單,太簡單了就容易被他人在鍵盤上試探出來,或者 可能被旁觀者窺測出來,造成保密性不足。當然,密碼又不能太復雜,太復雜了可能 自己都糊涂了,或者輸入密碼操作成功率低,造成使用不便。因此,為了發(fā)揚優(yōu)點、 克服弱點,鍵盤式電子密碼也在不斷發(fā)展中,如“任意設定密碼”技術使得被授權人可以 根據(jù)自己的需要或喜好設定密碼,常用常新;而“自動更改密碼”技術使得本次輸入的密 碼將自動更改成下次應輸入的密碼,更改的規(guī)律不為他人所知,因
12、而不怕旁觀者窺測; 獨出心裁的“鍵盤亂序顯示”技術使得鍵盤上的固定鍵位每次顯示出的字符不固定,并且 顯示的窄小角度只能由操作者正面看得到,因而即使旁觀者看見操作動作也難以窺測 出密碼;“多重密碼設定”技術使得單組密碼不一定有效,適合多人分權使用,需要輸入 兩組以上的密碼才被認可,大大提高了保密性,如果限定輸入這些密碼的先后順序或 時間區(qū)段,則保密性還可提高。在輸入密碼的過程中,為了限制試探密碼的企圖,通 常輸入錯誤碼若干次或若干時間內(nèi)輸入不正確,即“封鎖”鍵盤,不再接受輸入操作。總 之,盡管新式電子防盜鎖層出不窮,但鍵盤式電子密碼防盜鎖不僅在市場上居于主流 地位,而且,還經(jīng)常作為其他類型電子防
13、盜鎖的輔助輸入手段。 第 2 章 系統(tǒng)總體設計 2.1系統(tǒng)結構 at89c51 數(shù)碼管 蜂鳴器 led 44 鍵盤 復位電路 圖 21 2.2 系統(tǒng)組成 如圖 21 所示系統(tǒng)主要由 at89c51(51 系列)、八位數(shù)碼管、蜂鳴器、led、44 矩陣鍵盤、復位電路等組成。 2.3 系統(tǒng)可行性分析 系統(tǒng)工作原理分析:使用 at59c51 單片機、44 矩陣鍵盤、led、蜂鳴器等。矩 陣鍵盤分別為 0、1、2、3、4、5、6、7、8、9、*、cle、enter、modify。系統(tǒng) 開始顯示“input”提示輸入密碼;輸入密碼時,led 顯示電路顯示為“-” ,當密碼 輸入完畢按下 enter 鍵時
14、,對輸入密碼與設定的密碼進行比較,若密碼正確則 led 顯 示電路顯示為“pass”提示鎖打開;若密碼不正確,led 顯示電路顯示提示 “error” ,若連續(xù) 3 次輸入不正確,則發(fā)出警報聲同時鎖定鍵盤。 電源 在輸入正確密碼后,按下修改鍵時,led 顯示電路顯示“old”提示“輸入舊密碼” ,此時輸入正確的舊密碼,則顯示電路會有提示輸入新密碼在輸入新密碼后,顯示電 路會再次提示“再次輸入新密碼”若兩次輸入密碼不一致,則修改密碼失敗,一致則 成功。在修改密碼的過程中,如果一開始輸入的舊密碼錯誤顯示電路會顯示提示,同 時系統(tǒng)返回到開始。 若在“再次輸入新密碼”的時候輸入新密碼與前次不一致,則會
15、返回到系統(tǒng)開始。 修改密碼完成后,系統(tǒng)自動清零上鎖。要再次開鎖則需要輸入正確的密碼。 系統(tǒng)中 cel 鍵用于退格,在輸入密碼時,若輸入錯誤且未按下 enter 鍵,按下 cle 可以刪除剛輸入的密碼,然后再次輸入。 為了防止惡意嘗試,系統(tǒng)才用若連續(xù)輸入 3 次錯誤密碼則發(fā)出報警聲,且鎖定鍵 盤,可以提高系統(tǒng)的安全系數(shù),同時也能夠保護合法用戶的正常使用。 第 3 章 硬件電路設計 3.1 單片機 at89c51 簡介 at89c51 是美國 atmel 公司生產(chǎn)的低電壓,高性能 cmos8 位單片機,片內(nèi)含 4k bytes 的可反復擦寫的只讀程序存儲器(eprom)和 128bytes 的隨機
16、存取數(shù)據(jù)序存器 (ram) ,器件采用 atmel 公司的高密度/非易失性存儲技術生產(chǎn),兼容標準 mcs-51 指 令系統(tǒng),片內(nèi)置通用 8 位中央處理器(cpu)和 flash 存儲單元,at89c51 單片機為許 多嵌入式控制系統(tǒng)提供了一種靈活行高且價廉的方案。 3.1.1 主要特性 8031 cpu 與 mcs-51 兼容 4k 字節(jié)可編程 flash 存儲器(壽命:1000 寫/ 擦循環(huán)) 全靜態(tài)工作:0hz-24khz 三級程序存儲器保密鎖定 128*8 位內(nèi)部 ram 32 條可編程 i/o 線 兩個 16 位定時器/計數(shù)器 6 個中斷源 可編程串行通道 低功耗的閑置和掉電模式 片內(nèi)
17、振蕩器和時鐘電路 圖 31 3.1.2 管腳說明 vcc:供電電壓。 gnd:接地。 p0 口:p0 口為一個 8 位漏級開路雙向 i/o 口,每腳可吸收 8ttl 門電流。當 p1 口 的管腳第一次寫 1 時,被定義為高阻輸入。p0 能夠用于外部程序數(shù)據(jù)存儲器,它可以 被定義為數(shù)據(jù)/地址的第八位。在 fiash 編程時,p0 口作為原碼輸入口,當 fiash 進 行校驗時,p0 輸出原碼,此時 p0 外部必須被拉高。 p1 口:p1 口是一個內(nèi)部提供上拉電阻的 8 位雙向 i/o 口,p1 口緩沖器能接收輸出 4ttl 門電流。p1 口管腳寫入 1 后,被內(nèi)部上拉為高,可用作輸入,p1 口被
18、外部下拉為 低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在 flash 編程和校驗時,p1 口作 為第八位地址接收。 p2 口:p2 口為一個內(nèi)部上拉電阻的 8 位雙向 i/o 口,p2 口緩沖器可接收,輸出 4 個 ttl 門電流,當 p2 口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并 因此作為輸入時,p2 口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。 p2 口當用于外部程序存儲器或 16 位地址外部數(shù)據(jù)存儲器進行存取時,p2 口輸出地址 的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器 進行讀寫時,p2 口輸出其特殊功能寄存器的內(nèi)容。p
19、2 口在 flash 編程和校驗時接收高 八位地址信號和控制信號。 p3 口:p3 口管腳是 8 個帶內(nèi)部上拉電阻的雙向 i/o 口,可接收輸出 4 個 ttl 門電 流。當 p3 口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于 外部下拉為低電平,p3 口將輸出電流(ill)這是由于上拉的緣故。 p3 口也可作為 at89c51 的一些特殊功能口,如下表所示: 管腳 備選功能: p3.0 rxd(串行輸入口) p3.1 txd(串行輸出口) p3.2 /int0(外部中斷 0) p3.3 /int1(外部中斷 1) p3.4 t0(記時器 0 外部輸入) p3.5 t1(記
20、時器 1 外部輸入) p3.6 /wr(外部數(shù)據(jù)存儲器寫選通) p3.7 /rd(外部數(shù)據(jù)存儲器讀選通) p3 口同時為閃爍編程和編程校驗接收一些控制信號。 rst:復位輸入。當振蕩器復位器件時,要保持 rst 腳兩個機器周期的高電平時間。 ale/prog:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。 在 flash 編程期間,此引腳用于輸入編程脈沖。在平時,ale 端以不變的頻率周期輸出 正脈沖信號,此頻率為振蕩器頻率的 1/6。因此它可用作對外部輸出的脈沖或用于定時 目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個 ale 脈沖。如想禁 止 ale 的輸出
21、可在 sfr8eh 地址上置 0。此時, ale 只有在執(zhí)行 movx,movc 指令是 ale 才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài) ale 禁止,置位 無效。 /psen:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周 期兩次/psen 有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/psen 信號將不出現(xiàn)。 /ea/vpp:當/ea 保持低電平時,則在此期間外部程序存儲器(0000h-ffffh),不 管是否有內(nèi)部程序存儲器。注意加密方式 1 時,/ea 將內(nèi)部鎖定為 reset;當/ea 端保 持高電平時,此間內(nèi)部程序存儲器。在 flash 編程
22、期間,此引腳也用于施加 12v 編程 電源(vpp)。 xtal1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。 xtal2:來自反向振蕩器的輸出。 3.1.3 震蕩特性 xtal1 和 xtal2 分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振 蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,xtal2 應不接。有 余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何 要求,但必須保證脈沖的高低電平要求的寬度。 3.1.4 芯片擦除 整個 perom 陣列和三個鎖定位的電擦除可通過正確的控制信號組合,并保持 ale 管腳處于低電平 10ms 來
23、完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空 存儲字節(jié)被重復編程以前,該操作必須被執(zhí)行。 此外,at89c51 設有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟 件可選的掉電模式。在閑置模式下,cpu 停止工作。但 ram,定時器,計數(shù)器,串口和 中斷系統(tǒng)仍在工作。在掉電模式下,保存 ram 的內(nèi)容并且凍結振蕩器,禁止所用其他 芯片功能,直到下一個硬件復位為止。 3.2 44 矩陣鍵盤 如圖所示,本系統(tǒng)采用 44 矩陣鍵盤,16 個按鍵分為輸入數(shù)字鍵: *、0、#、1、2、3、4、5、6、7、8、9;功能鍵 lock、modify、cel、enter。矩陣鍵盤。 圖 32
24、3.3復位電路 圖 33 時鐘電路工作后,在 rest 管腳上加兩個機器周期的高電平,芯片內(nèi)部開始進行初 始復位(如圖 33) 。 3.4 振蕩電路 圖 34 本設計晶振選擇頻率為 12mhz,電容選擇 30pf 如圖(34)。經(jīng)計算得單片機工 作胡機器周期為: 12(112m)=1us。 3.5 數(shù)碼管 圖 35 本設計采用兩個 4 位 8 段共陰極數(shù)碼管。由于由單片機直接驅(qū)動的直流電流不夠, 數(shù)碼管亮度顯得不足,所以加上三極管 s9013 用以放大電流。 因為 led 數(shù)碼管合適的驅(qū)動電流大約為 9ma 到 20ma 左右,為了適 led 數(shù)碼管工作 電流在 10ma 左右,具體計算如下:
25、 ib=(5v-1.4v-0.7v)/27k=0.110-3a ie= ib(+1)=10 ma 使用的 9013 的放大倍數(shù) 為 100. 圖6 3.6 發(fā)光二極管 led 圖 3 由于 led 使用 p0 口驅(qū)動要加上上拉電阻如圖 37。 3.7 電動鎖 圖 3 由于電動鎖使用 p0 口驅(qū)動要加上上拉電阻如圖 38。 3.8 蜂鳴器 圖 39 由于蜂鳴器使用 p0 口驅(qū)動要加上上拉電阻如圖 39。 3.9 完整電路圖 圖 39 3.10 使用到的元器件列表 元器件規(guī)格/型號數(shù)量 四位八段共陰數(shù)碼管3461afr1-b101 四位八段共陰數(shù)碼管sr420361 三極管sr90138 三極管s
26、9651 電阻27k8 電阻10k 電阻1k 電解電容0.47uf/50v1 瓷片電容30pf2 單片機at89c511 表 31 第 4 章 軟件程序設計 本系統(tǒng)程序部分使用 c 語言編寫,c 語言是一種高級程序設計語言,它的優(yōu)點是 簡潔明了、可移植性高。 主要完成,開始時數(shù)碼管顯示提示“input”輸入密碼。輸入密碼后按下確認鍵, 系統(tǒng)會將所輸入與系統(tǒng)密碼進行比對。若輸入密碼正確則顯示“pass”開鎖。然后可 以選擇上鎖或者修改密碼。 開鎖后,按下上鎖“l(fā)ock”鍵,系統(tǒng)上鎖并返回;選擇修改密碼則可以對系統(tǒng)進 行修改密碼操作。在修改密碼前要輸入正確舊的密碼。正確輸入舊密碼之后,會有提 示輸
27、入兩次新密碼,若兩次密碼一致,則修改成功。期間操作出現(xiàn)失誤,系統(tǒng)會返回 初始狀態(tài),操作錯誤超過 3 次,系統(tǒng)會鎖定鍵盤,并報警用以防止惡意試探密碼。 4.1 軟件設計流程圖 開始 輸入密碼 正確否? 開鎖 判斷按鍵 lock modify 鍵 上鎖 結束 輸入密碼 正確否? 輸入新密碼 再次輸入 一致否? 修改密碼 yes no no yes no yes 圖 41 4.2 具體功能軟件實施 4.2.1 開始等待流程 系統(tǒng)開始一直顯示提示“input”,并判斷有否按鍵,當有鍵按下跳出等待。 開始 顯示“input” 判斷是否 有按鍵? 結束 no yes 圖 42 4.2.2 密碼檢查功能 本
28、系統(tǒng)使用數(shù)組 password6存儲密碼,系統(tǒng)初始化對數(shù)組負值 password6 5,6,7,9,10,11相當于鍵盤上的 1,2,3,4,5,6。輸入密碼的時候,先將輸入的 每一位密碼分別放置在數(shù)組 check6中,然后再將 check6與 password6的每一位 分別對照。若每一位都相等,密碼檢查通過。 開始 輸入一位密碼, 數(shù)碼管顯示 “” k=6? k=0 按鍵為 cel? 結束 yes no no yes 圖 43 4.2.3 顯示功能 本系統(tǒng)使用共陰極數(shù)碼管顯示(如圖 35)。選碼由 p3 口輸出高電平有效,選 位由 p1 口輸出低電平有效。顯示原理如下圖及下表: 圖 4 表
29、 4 4 位數(shù)碼管上的管腳單片機輸出管腳 a11p3.7 b7p3.2 c4p3.1 d2p3.5 e1p3.6 f10p3.3 g5p3.0 h3p3.4 顯示方式分別有靜態(tài)顯示與動態(tài)顯示兩種。 在顯示提示信息如:輸入密碼“input”,操作通過“pass”,操作錯誤“error”, 輸入舊密碼“old”,輸入新密碼“ne”,再次輸入“again”等信息時使用的是動態(tài)顯 示。 由于 8 個顯示器的段碼同名端是連接在一起的,如果選碼的管腳(本系統(tǒng)中為 p1)都 為 0,那么 8 個顯示器則顯示同一字符。要使各個數(shù)碼管出現(xiàn)不同字符必須采用“分時 動態(tài)掃描”的方法顯示。即每次點亮一個 led 顯示
30、器,延時一段時間再點亮下一個 led 顯示器周而復始,8 個 led 顯示器輪流動態(tài)掃描。利用人視覺余輝的暫留效應,看 起來好像幾個顯示器上“同時”顯示不同的字符。如子程序 view_input_password(): void view_input_password(void) for(i=0;i200;i+) p3=0x48;p1=0xfe;/第四個顯示器顯示 i for(i=0;i200;i+) p3=0x43;p1=0x7f;/第五個顯示器顯示 n for(i=0;i200;i+) p3=0xcd;p1=0xbf;/第六個顯示器顯示 p for(i=0;i200;i+) p3=0x62
31、;p1=0xdf;/第七個顯示器顯示 u for(i=0;i200;i+) p3=0x69;p1=0xef;/第八個顯示器顯示 t 靜態(tài)顯示應用在輸入密碼時數(shù)碼管的顯示進行輸入密碼操作時,每輸入一位密碼 數(shù)碼管顯示一個“”,實施方法為:當有第一個按鍵時,第八個數(shù)碼管的片選信號 為低電平,其他為高。當有第二個按鍵時,第八、第七個數(shù)碼管的片選信號為低,其 他為高,如此類推。 如子程序 input_view(): void input_view(void) /k 為判斷輸入第幾位的變量 switch(k) case 0:p1=0xef;p3=0x01;/顯示由右至左 1 個“” case 1:p1=
32、0xcf;p3=0x01;/顯示由右至左 2 個“” case 2:p1=0x8f;p3=0x01;/顯示由右至左 3 個“” case 3:p1=0x0f;p3=0x01;/顯示由右至左 4 個“” case 4:p1=0x0e;p3=0x01;/顯示由右至左 5 個“” case 5:p1=0x0a;p3=0x01;/顯示由右至左 6 個“” 4.2.4 鍵盤掃描 如圖 3-2,本系統(tǒng)使用 44 矩陣鍵盤當沒有鍵按下時,行線和列線之間是不相連 的,若第 n 行與第 m 列的鍵被按下,那么第 n 行與第 m 列的線就被接通。 根據(jù)上述原理,本系統(tǒng)的鍵盤掃描方法是利用 p2 口的低四位作為行掃
33、描線,p2 口 的高四位作為列回掃線。具體實施方法為:先使 p2.0 口輸出低電平,p2 口其他口輸出 高電平,然后對 p2.4、p2.5、p2.6、p2.7 四個口分別作判斷。若此四口都為高電平, 則沒有鍵按下;若有鍵按下,p2.4、p2.5、p2.6、p2.7 四個口必定有一個口輸入為低 電平,再判斷 p2.4、p2.5、p2.6、p2.7 哪個口為低電平則可判斷按鍵在哪列上。如 p2.4、p2.5、p2.6、p2.7 沒有低電平,再使 p2.1 為低電平,其他口為高電平,依次掃 描下去,找到按鍵所在的行,再判斷 p2 口的高四位哪一位為低,便可知道鍵在哪一列 上。鍵盤掃描子程序 key(
34、)如下: /*加上行掃描信號后,判斷 p2 口高四位同時給標記變量 falg 賦值并跳出循環(huán)*/ void key(void) while(1) p2=0xfe;if(p2_4=0)falg=1;break; if(p2_5=0)falg=2;break; if(p2_6=0)falg=3;break; if(p2_7=0)falg=4;break; p2=0xfd;if(p2_4=0)falg=5;break; if(p2_5=0)falg=6;break; if(p2_6=0)falg=7;break; if(p2_7=0)falg=8;break; p2=0xfb;if(p2_4=0)f
35、alg=9;break; if(p2_5=0)falg=10;break; if(p2_6=0)falg=11;break; if(p2_7=0)falg=12;break; p2=0xf7;if(p2_4=0)falg=13;break; if(p2_5=0)falg=14;break; if(p2_6=0)falg=15;break; if(p2_7=0)falg=16;break; 4.2.5 修改密碼 本系統(tǒng)設定的修改密碼過程為,在輸入正確的密碼后,按 modify,此時提示輸入 舊密碼“old”,輸入正確的舊密碼后,可以輸入新密碼。此時鍵入的六位新密碼將保 存到數(shù)組 check6中。
36、然后顯示器提示再次輸入,輸入完畢后,第二次輸入的密碼將 保存在 check26中,然后將 check6中六位分別與 check26中的六位比對,若兩次 密碼輸入一直,即將新的密碼,也就是 check26和 check26中的六位賦值到 password6中。此時修改密碼工作完成,系統(tǒng)將跳翻到開始,即提示輸入密碼 “input”。 第 5 章 結束語及展望 通過這次畢業(yè)設計,讓我復習了很多學過的舊知識,同時鍛煉了自己的動手能力 和查閱資料。尤其是解決在實際中解決排查問題的能力。 1、通過這次的設計,我熟悉了使用 protel 的技巧,學會了制作電路板的一些技 巧,并且熟悉了如何選購使用電子元器件
37、。 2、在設計中,我學到了如何使用 c 語言對單片機進行編寫程序,熟悉了使用 keil c 軟件,并且加深了對單片機的編程技巧。 3、在做這個設計的過程中,我遇到了不少的問題。這鍛煉了我篩選、查閱資 料,并將理論結合到自己的設計中的能力。一步一步的排除故障原因,找 到故障的原因并解決故障。 4、這次的設計使我對模擬電子、數(shù)字電子知識加深了了解,尤其是在對電路 進行調(diào)試的時候,出現(xiàn)了很多這些方面的問題,通過對以往知識的復習鞏 固,將問題解決。 這次的設計有很多的不足,和市場上的產(chǎn)品有一定的差距,例如沒有使用液晶顯 示屏,電動鎖的部分在實物中使用一個 led 代替等,還可以做得更好,還請老師同學
38、們提出寶貴意見! 第 6 章 鳴謝 在本次設計完成之際,在這里要衷心感謝我的畢業(yè)設計知道老師 xxx 老師在設計 中對我的指導、幫助,并且提出了很多非常寶貴的意見。感謝在本次設計中給予我?guī)?助的 xxx、xxx 等各位同學。還要感謝大學四年來教導我的各位老師,不計較浪費自己 學習時間幫助我的同學。感謝答辯小組的老師百忙之中對我本次設計的閱覽與指導! 第 7 章 參考文獻 1 當方微型計算機控制技術m中國水利水電出版社,2001 年 2 胡漢才單片機原理及其借口技術m清華大學出版社,1996 年 3 趙新民智能儀器設計基礎m哈爾濱工業(yè)大學出版社,1999 年 4 潘新,民王,燕芳微型計算機控制技
39、術m電子工業(yè)出版社,2003 年 5 李鐘實實用電子報警器精選百例m北京:科技技術文獻出版社,2002 年 6 陳愛弟protel99se 實用培訓教程m人民郵電出版社,2000 年。 7 閻石數(shù)字電子技術基礎m高等教育出版社,1998 年 8 童詩白模擬電子技術基礎m高等教育出版涉,1998 年 9 候振鵬嵌入式 c 語言程序設計m北京:人民郵電出版社,2006 年 10 徐士良c 語言程序設計教程m北京:人民郵電出版社,2001 年 11 附 錄 電子密碼鎖源程序: #include void view_input_password(void); void view_input_error
40、(void); void key1(void); void key2(void); void key3(void); void newpassword(void); void again(void); void key(void); void input_view(void); void voice(void); void view_again(void); void oldpassword(void); unsigned int x,y,i,j,k,falg; unsigned int counter=0; unsigned int password6=5,6,7,9,10,11; unsi
41、gned int check6; unsigned int check26; void delay(); void newpassword(void); main() p0=0; ea=0; start:falg=0; delay(); while(1) p0=0; key1(); if(counter=3) /輸入錯誤超過 3 次報警 p0_1=1;p0_2=0; voice(); counter=0; for(i=0;i255;i+) for(j=0;j255;j+) view_input_error(); p3_0=1; goto start; for(k=0;k6;k+) key();
42、 checkk=falg; if(falg=8)k=0;p1=0 xff;goto start;/取消 if(falg=4) /輸入未夠 6 位都視作錯誤 k=0;p1=0 xff;counter+;p0_1=1;p0_2=0;voice(); for(y=0;y100;y+) view_input_error();goto start; input_view(); delay(); key(); if(falg=8)k=0;p1=0xff;continue; if(falg=4)/按下確認鍵盤,密碼開始比對 for(k=0;k6;k+) if(checkk=passwordk)falg=1;
43、continue; if(checkk!=passwordk) falg=0;counter+;p0_1=1;p0_2=0;voice(); for(i=0;i100;i+) view_input_error();goto start; if(falg=1)/6 位都正確,開鎖 p0_1=0;p0_2=1;voice(); for(k=0;k100;k+) for(i=0;i200;i+) p3=0xcd;p1=0x7f;/p for(i=0;i200;i+) p3=0xcf;p1=0xbf;/a for(i=0;i200;i+) p3=0xab;p1=0xdf;/s for(i=0;i200
44、;i+) p3=0xab;p1=0xef;/s break; if(falg!=1)p0_1=1;p0_2=0;voice();for(i=0;i100; i+) view_input_error();goto start; while(1) p1=0xff;voice(); key(); if(falg=16)p3=0 xff;p1=0x00;p0_2=0;delay();g oto start;/上鎖鍵 if(falg=12)/修改鍵 delay(); key2(); for(k=0;k6;k+) key(); checkk=falg; input_view(); delay(); if(
45、falg=8)k=0;continue; if(falg=4)k=0;counter=0;goto start; key(); if(falg=8)k=0;continue; if(falg=4) for(i=0;i6;i+) if(checki=passwordi)falg=1;continue; if(checki!=passwordi) counter=0;falg=0; for(j=0;j500;j+) for(k=0;k500;k+) view_input_error(); goto start; falg=0; for(k=0;k70;k+) p0=0xff; for(i=0;i2
46、00;i+) p3=0xcd;p1=0x7f;/p for(i=0;i200;i+) p3=0xcf;p1=0xbf;/a for(i=0;i200;i+) p3=0xab;p1=0xdf;/s for(i=0;i200;i+) p3=0xab;p1=0xef;/s while(1) p1=0xff; key3(); for(k=0;k6;k+) key(); checkk=falg; input_view(); delay(); if(falg=8)k=0;p1=0 xff;continue; if(falg=4)k=0;falg=0;counter=0; for(j=0;j50;j+) v
47、iew_input_error(); goto start; if(k=6)for(j=0;j50;j+)again();break; delay(); while(1) for(k=0;k6;k+) key(); check2k=falg; input_view(); delay(); if(falg=8)k=0;continue; if(falg=4)k=0;falg=0;counter=0; for(j=0;j25;j+) view_input_error(); goto start; if(k=6)break; delay(); key(); if(falg=4) for(i=0;i6
48、;i+) if(check2i=checki)continue; if(check2i!=checki) counter=0;falg=0; for(j=0;j500;j+) view_input_error(); goto start; for(i=0;i6;i+) passwordi=checki; goto start; /*鍵盤掃描子程序*/ void key(void) while(1) p2=0xfe;if(p2_4=0)falg=1;break; if(p2_5=0)falg=2;break; if(p2_6=0)falg=3;break; if(p2_7=0)falg=4; b
49、reak; p2=0xfd;if(p2_4=0)falg=5; break; if(p2_5=0)falg=6; break; if(p2_6=0)falg=7; break; if(p2_7=0)falg=8; break; p2=0xfb;if(p2_4=0)falg=9; break; if(p2_5=0)falg=10;break; if(p2_6=0)falg=11;break; if(p2_7=0)falg=12;break; p2=0xf7;if(p2_4=0)falg=13;break; if(p2_5=0)falg=14;break; if(p2_6=0)falg=15;br
50、eak; if(p2_7=0)falg=16;break; /*輸入密碼顯示子程序*/ void input_view(void) switch(k) case 0:p1=0xef;p3=0x01;break; case 1:p1=0xcf;p3=0x01;break; case 2:p1=0x8f;p3=0x01;break; case 3:p1=0x0f;p3=0x01;break; case 4:p1=0x0e;p3=0x01;break; case 5:p1=0x0a;p3=0x01;break; /*顯示“input”子程序*/ void view_input_password(vo
51、id) for(x=0;x200;x+) p3=0x48;p1=0xfe;/i for(x=0;x200;x+) p3=0x43;p1=0x7f;/n for(x=0;x200;x+) p3=0xcd;p1=0xbf;/p for(x=0;x200;x+) p3=0x62;p1=0xdf;/u for(x=0;x200;x+) p3=0x69;p1=0xef;/t /*沒有輸入時一直顯示“input”*/ void key1(void) while(1) view_input_password(); p2=0xfe;if(p2_4=0)falg=1;break; if(p2_5=0)falg=
52、2;break; if(p2_6=0)falg=3;break; if(p2_7=0)falg=4; break; p2=0xfd;if(p2_4=0)falg=5; break; if(p2_5=0)falg=6; break; if(p2_6=0)falg=7; break; if(p2_7=0)falg=8; break; p2=0xfb;if(p2_4=0)falg=9; break; if(p2_5=0)falg=10;break; if(p2_6=0)falg=11;break; if(p2_7=0)falg=12;break; p2=0xf7;if(p2_4=0)falg=13;break; if(p2_5=0)falg=14; break; if(p2_6=0)falg=15; break; if(p2_7=0)falg=16; break; /*顯示“error”子程序*/ void view_input_error(void) for(x=0;x200;x+) p3=0xe9;p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年房地產(chǎn)市場調(diào)研報告合同
- 平移的教學反思6篇
- 幼兒園電的教案6篇
- 《秋天的樹葉》教案6篇
- 水力學外出實習心得5篇
- 2024至2030年中國異徑輻條行業(yè)投資前景及策略咨詢研究報告
- 2024至2030年中國全銅高溫電磁閥數(shù)據(jù)監(jiān)測研究報告
- 2024至2030年鉛圈項目投資價值分析報告
- 2024年中國白色陶瓷漁竿導環(huán)市場調(diào)查研究報告
- 2024至2030年塑料擠出門窗異型材生產(chǎn)線項目投資價值分析報告
- 2024年第九屆“鵬程杯”六年級語文邀請賽試卷(復賽)
- 國開2024年《建筑結構#》形考作業(yè)1-4答案
- DL-T1475-2015電力安全工器具配置與存放技術要求
- 漏檢分析改善措施
- 新制定《公平競爭審查條例》學習課件
- GB/T 44051-2024焊縫無損檢測薄壁鋼構件相控陣超聲檢測驗收等級
- TD/T 1060-2021 自然資源分等定級通則(正式版)
- 完整加快發(fā)展新質(zhì)生產(chǎn)力課件
- 三位數(shù)除以兩位數(shù)300題-整除-有標準答案
- 辦公室裝修工程施工方案講義
- 奇異的仿生學 知到智慧樹網(wǎng)課答案
評論
0/150
提交評論