課程設(shè)計——基于單片機的可報警電子開關(guān)_第1頁
課程設(shè)計——基于單片機的可報警電子開關(guān)_第2頁
課程設(shè)計——基于單片機的可報警電子開關(guān)_第3頁
課程設(shè)計——基于單片機的可報警電子開關(guān)_第4頁
課程設(shè)計——基于單片機的可報警電子開關(guān)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、重慶理工大學(xué)專業(yè)綜合設(shè)計設(shè)計題目(基于單片機的可報警電子開關(guān))學(xué)生學(xué)號: 10807050220、21、24 學(xué)生姓名: 牟春 冉國偉 田宏均 專業(yè)班級: 電子信息科學(xué)與技術(shù)7502 指導(dǎo)教師: 王飛 肖漢光 丁朝遠(yuǎn) 起止日期:2011.12.192012.01.06 重慶理工大學(xué)Chongqing University of Technology重慶理工大學(xué)專業(yè)綜合設(shè)計專業(yè)綜合設(shè)計任務(wù)書一、設(shè)計題目:基于單片機的可報警電子開關(guān)二、設(shè)計目的1、掌握單片機基本原理及利用proteus、keil開發(fā)工具進(jìn)行系統(tǒng)開發(fā)。2、掌握矩陣鍵盤的掃描方法與使用。3、熟練掌握可編程邏輯器件的原理圖層次化設(shè)計方法

2、;三、設(shè)計任務(wù)及要求 主要結(jié)構(gòu):本設(shè)計由單片機系統(tǒng)、矩陣鍵盤、1602液晶顯示和報警系統(tǒng)組成。該設(shè)計可實現(xiàn)以下基本功能:1. 通過鍵盤輸入,設(shè)置5位密碼,若密碼正確,則有語音提示并打開相應(yīng)的設(shè)備;2. 密碼可以由用戶自己修改設(shè)定,修改密碼之前必須再次輸入密碼,比對密碼是否正確,正確后才能修改新的密碼。3. 報警功能,若密碼輸入錯誤,則自動開啟報警裝置,發(fā)出警報。四、設(shè)計時間及進(jìn)度安排設(shè)計時間共三周(2011.12.192012.1.5),具體安排如下表:周安排設(shè) 計 內(nèi) 容設(shè)計時間第一周收集、查閱相關(guān)資料,綜合討論最終的解決方案2011.12.192011.12.24第二周購買所需的所有元器件

3、,完成硬件電路的設(shè)計與制作,包括PCB的制作、電路的焊接及初步的調(diào)試工作;軟件程序的編寫與調(diào)試;2011.12.252012.1.1第三周后期的系統(tǒng)調(diào)試以及撰寫作品說明書和設(shè)計報告2012.1.22012.1.5五、指導(dǎo)教師評語及學(xué)生成績指導(dǎo)教師評語:年 月 日成績指導(dǎo)教師(簽字):- I -目 錄專業(yè)綜合設(shè)計任務(wù)書I 緒論1第1章 電子開關(guān)的背景狀況分析21.1 關(guān)于電子開關(guān)21.2 功能介紹2第2章 設(shè)計思路42.1 開鎖機構(gòu)42.2 AT89C51功能引腳說明4第3章 設(shè)計電路53.1 單片機和液晶顯示模塊53.2 語音提示模塊63.3 矩陣鍵盤模塊73.4 報警器模塊73.5 電源模塊

4、63.6 整體電路7第4章 程序設(shè)計94.1 主程序流程圖94.2 源程序94.3 仿真與調(diào)試9結(jié)論11參考文獻(xiàn)12- 21 -基于單片機的可報警電子開關(guān)緒論摘要 在日常的生活和工作中, 住宅與部門的安全防范、單位的文件檔案、財務(wù)報表以及一些個人資料的保存多以加鎖的辦法來解決。若使用傳統(tǒng)的機械式鑰匙開鎖,人們常需攜帶多把鑰匙, 使用極不方便, 且鑰匙丟失后安全性即大打折扣。隨著科學(xué)技術(shù)的不斷發(fā)展,人們對日常生活中的安全保險器件的要求越來越高。為滿足人們對鎖的使用要求,增加其安全性,用密碼代替鑰匙的密碼鎖應(yīng)運而生。密碼鎖具有安全性高、成本低、功耗低、易操作等優(yōu)點。 在安全技術(shù)防范領(lǐng)域,具有防盜報

5、警功能的電子開關(guān)逐漸代替?zhèn)鹘y(tǒng)的機械式密碼鎖,克服了機械式密碼鎖密碼量少、安全性能差的缺點,使密碼鎖無論在技術(shù)上還是在性能上都大大提高一步。隨著大規(guī)模集成電路技術(shù)的發(fā)展,特別是單片機的問世,出現(xiàn)了帶微處理器的智能密碼鎖,它除具有電子密碼鎖的功能外,還引入了智能化管理、專家分析系統(tǒng)等功能,從而使密碼鎖具有很高的安全性、可靠性,應(yīng)用日益廣泛。 本系統(tǒng)由單片機系統(tǒng)、矩陣鍵盤、LED顯示和報警系統(tǒng),修改用戶密碼等功能。除上述基本的密碼鎖功能外,依據(jù)實際的情況還可以添加遙控功能。本系統(tǒng)成本低廉,功能實用。 關(guān)鍵詞 AT89S51 LCD 電子開關(guān) 矩陣鍵盤 第1章 電子開關(guān)的背景狀況分析 1.1 關(guān)于電子

6、開關(guān)隨著電子工業(yè)的發(fā)展,數(shù)字電子技術(shù)已經(jīng)深入到了人們生活的各個層面,在國內(nèi)外各種各樣的電子產(chǎn)品也正在日新月異地向著高精尖技術(shù)發(fā)展。在安全技術(shù)防范領(lǐng)域,具有防盜報警功能的電子密碼鎖代替?zhèn)鹘y(tǒng)的機械式密碼鎖,克服了機械式密碼鎖密碼量少、安全性能差的缺點,使密碼鎖無論在技術(shù)上還是在性能上都大大提高一步。從目前的技術(shù)水平和市場認(rèn)可程度看,國內(nèi)外使用最為廣泛的是鍵盤式電子密碼鎖,該產(chǎn)品主要應(yīng)用于保險箱、保險柜和金庫,還有一部分應(yīng)用于保管箱和運鈔車。鍵盤式電子密碼在鍵盤上輸入,與打電話差不多,因而易于掌握,其突出優(yōu)點是“密碼”是記在被授權(quán)人腦子里的數(shù)字和字符,既準(zhǔn)確又可靠,不會丟失(除了忘記),難以被竊(除

7、非自己泄露)。但是密碼不能太簡單,太簡單了就容易被他人在鍵盤上試探出來,或者可能被旁觀者窺測出來,造成保密性不足。當(dāng)然,密碼又不能太復(fù)雜,太復(fù)雜了可能自己都糊涂了,或者輸入密碼操作成功率低,造成使用不便。因此,為了發(fā)揚優(yōu)點、克服弱點,鍵盤式電子密碼也在不斷發(fā)展中,如“任意設(shè)定密碼”技術(shù)使得被授權(quán)人可以根據(jù)自己的需要或喜好設(shè)定密碼,常用常新;而“更改密碼”技術(shù)使得本次輸入的密碼將自動更改成下次應(yīng)輸入的密碼,更改的規(guī)律不為他人所知,因而不怕旁觀者窺測,顯示的窄小角度只能由操作者正面看得到,因而即使旁觀者看見操作動作也難以窺測出密碼??傊M管新式電子防盜鎖層出不窮,但鍵盤式電子密碼防盜鎖仍然“老樹

8、發(fā)新芽”,不僅在市場上居于主流地位,而且,還經(jīng)常作為其他類型電子防盜鎖的輔助輸入手段。在日常的生活和工作中, 住宅與部門的安全防范、單位的文件檔案、財務(wù)報表以及一些個人資料的保存多以加鎖的辦法來解決。若使用傳統(tǒng)的機械式鑰匙開鎖,人們常需攜帶多把鑰匙, 使用極不方便, 且鑰匙丟失后安全性即大打折扣。隨著科學(xué)技術(shù)的不斷發(fā)展,人們對日常生活中的安全保險器件的要求越來越高。為滿足人們對鎖的使用要求,增加其安全性,用密碼代替鑰匙的密碼鎖應(yīng)運而生。密碼鎖具有安全性高、成本低、功耗低、易操作等優(yōu)點。 在安全技術(shù)防范領(lǐng)域,具有防盜報警功能的電子密碼鎖逐漸代替?zhèn)鹘y(tǒng)的機械式密碼鎖,克服了機械式密碼鎖密碼量少、安全

9、性能差的缺點,使密碼鎖無論在技術(shù)上還是在性能上都大大提高一步。隨著大規(guī)模集成電路技術(shù)的發(fā)展,特別是單片機的問世,出現(xiàn)了帶微處理器的智能密碼鎖,它除具有電子密碼鎖的功能外,還引入了智能化管理、專家分析系統(tǒng)等功能,從而使密碼鎖具有很高的安全性、可靠性,應(yīng)用日益廣泛。 在國內(nèi)外電子防盜鎖應(yīng)用于金融業(yè),其根本的作用是“授權(quán)”,即被“授權(quán)”的人才可以存取錢、物。廣義上講,金融業(yè)的“授權(quán)”主要包括以下三種層次的內(nèi)容:1、授予保管權(quán),如使用保管箱、保險箱和保險柜;2、授予出入權(quán),如出入金庫、運鈔車和保管室;3、授予流通權(quán),如自動存取款。目前,金融行業(yè)電子防盜鎖的應(yīng)用主要集中在前兩個層面上。下面將介紹幾種在金

10、融行業(yè)中使用較多的電子防盜鎖以及它們的技術(shù)發(fā)展方向。 當(dāng)然,以上所說的授權(quán)技術(shù)再高超,都必須由精良的“鎖具”擔(dān)當(dāng)承載結(jié)構(gòu)部件,實現(xiàn)開啟、閉鎖的功能,而且承擔(dān)實體防護(hù)作用,抵抗住或盡量延遲破壞行為,讓電子防盜鎖“軟、硬不吃”。一般情況下,鎖具防盜的關(guān)鍵是鎖身外殼、閉鎖的部件(如伸縮的鎖舌或鎖栓、鎖扣盒鎖扣板以及依靠電磁力直接閉鎖的電磁部件等)的強度(應(yīng)有足夠的機械強度和剛度,能夠承受一定數(shù)值、一定方向的靜壓力和沖擊力以及力矩)、鎖止型式(能承受某些方式和工具的作用)、配合間隙(防止采用機械的、電子的方法探入鎖具內(nèi)部而被開啟)和布局(將薄弱的、與鎖的開啟直接相關(guān)的零部件和電路置于殼體保護(hù)之下,并且

11、不易被識別出來)。 提高電子防盜鎖之防護(hù)能力的必然途徑是報警,在許多場所有人值守、有電視監(jiān)控,具有報警功能,可以綜合物理防范和人力防范兩種作用。報警的前提是具備探測功能,根據(jù)電子防盜鎖的使用場所和防護(hù)要求,可選擇多種多樣的探測手段。在中國的城市金融業(yè)中,實現(xiàn)聯(lián)網(wǎng)報警已經(jīng)成為對各金融網(wǎng)點的基本要求。 根據(jù)國內(nèi)外的實踐經(jīng)驗,安全防范風(fēng)險等級很有必要,即依據(jù)使用的防盜報警器材的性能.、安裝布局和人員值守狀況等,可以評估被防護(hù)物或區(qū)域的防護(hù)能力,得出風(fēng)險等級,其中,電子防盜鎖的性能至關(guān)重要。 1.2 功能介紹1. 設(shè)置5位密碼,密碼通過鍵盤輸入,若密碼正確,則將鎖打開 2. 密碼可以由用戶自己修改設(shè)定

12、(只支持6位密碼),修改密碼之前必須再次輸入密碼,在輸入新密碼時候需要確認(rèn),以防止誤操作 3. 報警功能。密碼輸入正確或錯誤報警設(shè)備會出現(xiàn)相關(guān)提示 4. 電子密碼鎖的設(shè)計主要由三部分組成:4×4矩陣鍵盤接口電路、密碼鎖的控制電路、LCD輸出電路。另外系統(tǒng)還有LED提示燈,報警設(shè)備等 密碼鎖設(shè)計的關(guān)鍵問題是實現(xiàn)密碼的輸入、清楚、更改、開鎖等功能: 1. 密碼輸入功能:按下一個數(shù)字鍵,一個“*”就顯示在LCD上,以保證密碼的安全性 2. 密碼清除功能:當(dāng)按下清除鍵時,清除前面輸入的一個鍵值 3. 密碼更改功能:將輸入的值作為新的密碼 4. 開鎖功能:當(dāng)按下開鎖鍵,系統(tǒng)將輸入與密碼進(jìn)行檢查

13、核對,如果正確鎖打開,否則不打開 主要的設(shè)計實施過程:首先,選用ATMEL公司的單片機AT89S51,以及選購其他電子元器件。第二步,使用Proteus7設(shè)計硬件電路原理圖,并設(shè)計PCB圖完成人工布線(因PCB板損壞決定采用萬能板焊接的方法)。第三步,使用Keil uVision3軟件編寫單片機的C語言程序、仿真、軟件調(diào)試。第四部,使用PROTEUS軟件進(jìn)行模擬軟、硬件調(diào)試。最后,聯(lián)合軟、硬件調(diào)試電路板,完成本次綜合設(shè)計。 第2章 設(shè)計思路2.1 開鎖機構(gòu) 用戶通過LCD提示信息,用鍵盤輸入正確密碼,從而達(dá)到開鎖的目的。其原理如下 圖 2-1 當(dāng)用戶輸入的密碼正確并且是在按下確定鍵的話,單片機

14、便輸出開門信號,送到開鎖驅(qū)動電路,然后驅(qū)動電磁鎖和語音模塊,達(dá)到開門的目的.當(dāng)密碼輸入錯誤,輸出報警信號,驅(qū)動報警模塊。在本次設(shè)計中,基于節(jié)省材料的原則,暫時用發(fā)光二極管代替電磁鎖,發(fā)光管亮,表示開鎖;滅,表示沒有開鎖。 2.2 AT89G51引腳功能說明 Vcc:電源電壓 GND:地 P0口:P0口是一組8位漏極開路型雙向I0口,也即地址數(shù)據(jù)總線復(fù)用口。作為輸出口用時,每位能驅(qū)動8個TTL邏輯門電路,對端口寫“l(fā)”可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。在F1ash編程時,P0口接收指令字節(jié),而在程序

15、校驗時,輸出指令字節(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)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內(nèi)部存在上拉電

16、阻,某個引腳被外部信號拉低時會輸出一個電流(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口寫入“l(fā)”時,它們被內(nèi)部上拉電阻拉高并可作為輸入端口。作輸入端時,被外部拉低的P3

17、口將用上拉電阻輸出電流(IIL)。P3口除了作為一般的I0口線外,更重要的用途是它的第二功能,如下表所示:P3口還接收一些用于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 輸出固定的正脈沖信號,

18、因此它可對外輸出時鐘或用于定時目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。對F1ash存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH 單元的D0 位置位,可禁止ALE 操作。該位置位后,只有一條M0VX和M0VC指令A(yù)LE才會被激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應(yīng)設(shè)置ALE無效。 PSEN:程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當(dāng)AT89S51 由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次PSEN有效,即輸出兩個脈沖。當(dāng)訪問外部數(shù)據(jù)存儲器,沒有兩次有效的PSEN信號

19、。 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:振蕩器反相放大器的輸出端。 第3章 設(shè)計電路3.1 單片機加液晶顯示模塊 顯示設(shè)計采用字符型液晶屏設(shè)計,以方便人機更好的交互,電路框架圖如下 圖 3-11602LCD采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,

20、各引腳接口說明如表編號符號引腳說明編號符號引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負(fù)極 圖 3-2第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:R/W為讀寫信號線,高電平

21、時進(jìn)行讀操作,低電平時進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時可以讀忙信號,當(dāng)RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負(fù)極。3.2 語音提示模塊圖 3-33.3矩陣鍵盤模塊圖 3-4本設(shè)計就采用行列式鍵盤,同時也能減少鍵盤與單片機接口時所占用的I/O線的數(shù)目,在按鍵比較多的時候,通常采用這樣方法。 每一條水平(行線)與垂直線(列線)的交叉處不相通,而是通過一個按鍵來連通,利用這種行列式矩陣結(jié)構(gòu)

22、只需要N條行線和M條列線,即可組成具有N×M個按鍵的鍵盤。 在這種行列式矩陣鍵盤非鍵盤編碼的單片機系統(tǒng)中,鍵盤處理程序首先執(zhí)行等待按鍵并確認(rèn)有無按鍵按下的程序段。鍵盤掃描原理把每個鍵都分成水平和垂直的兩端接入,比如說掃描碼是從垂直的入,那就代表那一行所接收到的掃描碼是同一個bit,而讀入掃描碼的則是水平,掃描的動作是先輸入掃描碼,再去讀取輸入的值,經(jīng)過比對之后就可知道是哪個鍵被按下。 比如說掃描碼送入01111111,前面的0111是代表此時掃描第一行P3.0列,而后面的1111是讓讀取的4行接腳先設(shè)為VDD,若此時第一行的第三列按鍵被按下,那讀取的結(jié)果就會變成01111101(注意

23、1111變成1101),其中LSB的第三個bit會由1變成0,這是因為這個按鍵被按下之后,會被垂直的掃描碼電位short,而把讀取的LSB的bit電位拉到0,此即為掃描原理。 由於這種按鍵是機械式的開關(guān),當(dāng)按鍵被按下時,鍵會震動一小段時間才穩(wěn)定,為了避免讓8051誤判為多次輸入同一按鍵, 我們必須在偵測到有按鍵被按下,就Delay一小段時間,使鍵盤以達(dá)穩(wěn)定狀態(tài),再去判讀所按下的鍵,就可以讓鍵盤的輸入穩(wěn)定。3.4 報警器模塊圖 3-53.5 電源模塊圖 3-63.6 整體電路 圖 3-7第4章 軟件程序設(shè)計 因設(shè)計主要是作用C語言來開發(fā)的8051項目程序,所以首先必須有一個可以在Windows

24、XP或Windows 98操作系統(tǒng)下執(zhí)行的8051C語言編譯器,本設(shè)計采用Keil C編譯器進(jìn)行編程,因為它可以支持很多不同種類的8051。主程序主要完成初始化、設(shè)置中斷向量、檢查有無按鍵按下、以及調(diào)用顯示等等。主程序的流程圖如下所示。 4.1 主程序流程圖 圖 4-14.2 源程序#include <reg51.h>#define uint unsigned int#define uchar unsigned char#define KEY P2#define No_key 20 #define lcddata P0 sbit lcden= P12;sbit lcdrs= P10

25、;sbit lcdrw= P11;sbit light= P13;sbit light1= P14;sbit light2= P15;sbit light3= P16;uchar j ; uchar aa;uchar code table= " Welcome home!"uchar code table1="The key is right!" ;uchar code table2="Enter The key :" ;uchar code table3="Enter New Key: "uchar code t

26、able4="RESET Key is OK!"uchar code table5="Enter Old Key :"uchar code table6="The key is error"uchar code key_table16 = 1,2,3,10,4,5,6,11,7,8,9,12,0,13,14,15;uchar password=1,2,3,4,5;uchar save4;uchar conflag ;uchar conflag1;uchar lockflag;uchar startflag;uchar keyscan(

27、);void delay(uint z);void wright_com(uchar com);void wright_data(uchar date);void init();void display_OK();void delete();void reset();void enter_code(uchar t);void confirm();void confirm1();void succeed_an();void succeed_an1();void fail_an();void lockkey();void alarm();void display_enter();void rese

28、tmima();void mima_enter(uchar n);void reset1();void display_resetmima();void reset2();void display_error();void main(void)uchar temp;init();while(1)if(lockflag)temp=keyscan();if(temp!=No_key)aa=0; else temp=keyscan();if(temp!=No_key)if(temp=10)reset();startflag=1; if(startflag)enter_code(temp);if(te

29、mp=13)confirm();if(conflag)succeed_an();elsefail_an();if(temp=14)delete();if(temp=11)reset1();if(temp=12)confirm1();while(conflag1=1) conflag1=2; display_OK(); if(conflag1=2)reset2();startflag=1; if(startflag)enter_code(temp);if(temp=15)resetmima(); elsefail_an();void display_enter()uchar num;wright

30、_com(0x80);for(num=0;num<18;num+)wright_data(table2num);void display_resetmima()uchar num;wright_com(0x80);for(num=0;num<18;num+)wright_data(table3num);void display_resetmima1()uchar num;wright_com(0x80);for(num=0;num<18;num+)wright_data(table5num);void display_OK() uchar num;wright_com(0x8

31、0);for(num=0;num<18;num+)wright_data(table1num);void display_ROK() uchar num;wright_com(0x80);for(num=0;num<18;num+)wright_data(table4num);void display_error() uchar num;wright_com(0x80);for(num=0;num<18;num+)wright_data(table6num);void delete()wright_com(0x80+0x40+j);wright_data(' '

32、;);save-j=0;wright_com(0x80+0x40+j);void reset()uchar num;display_enter();wright_com(0x80+0x40);for(num=0;num<5;num+)savenum=0;wright_data(' ');light=1;light2=1;light3=1;wright_com(0x80+0x40);lockflag=0;conflag=0;j=0;void reset1()uchar num;display_resetmima1();wright_com(0x80+0x40);for(nu

33、m=0;num<5;num+)savenum=0;wright_data(' ');light=1;wright_com(0x80+0x40);lockflag=0;conflag=0;j=0;void reset2()uchar num;display_resetmima();wright_com(0x80+0x40);for(num=0;num<5;num+)savenum=0;wright_data(' ');light=1;wright_com(0x80+0x40);lockflag=0;conflag=0;j=0;void resetmim

34、a()password0=save0;password1=save1;password2=save2;password3=save3;password4=save4;display_ROK(); void succeed_an()light=0; display_OK();void fail_an()alarm();lockkey();display_error();void alarm()light2=0;light3=0;void lockkey()lockflag=1;void enter_code(uchar t)if(t>=0&&t<6)if(j=0)wr

35、ight_com(0x80+0x40) ;wright_data('*');elsewright_data('*');savej+=t; /*校對密碼以確定是不是正確的*/void confirm()uchar k;for(k=0;k<5;k+)if(passwordk!=savek)break;if(k=5) conflag=1; elseconflag=0;void confirm1()uchar k;for(k=0;k<5;k+)if(passwordk!=savek)break;if(k=5) conflag1=1; elseconflag1

36、=0;/*中斷服務(wù)程序*/void timer0() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256; if(lockflag)aa+;light1=0;if(aa>=60)aa=0;light1=1;lockflag=0;/*初始化*/void init()uchar num;TMOD=1;TH0=(65536-50000)/256;TL0=(65536-50000)%256;ET0=1;EA=1; TR0=1;/*1602初始化*/lcdrw=0;lcden=0;wright_com(0x38); wright_com(0

37、x0c); wright_com(0x01); wright_com(0x80);for(num=0;num<14;num+) wright_data(tablenum);delay(1);/*1602寫入指令*/void wright_com(uchar com) lcdrs=0;lcddata=com;delay(1);lcden=1;delay(1);lcden=0;/*1602寫入數(shù)據(jù)*/void wright_data(uchar date)lcdrs=1;lcddata=date;delay(1);lcden=1;delay(1);lcden=0;/*延時函數(shù)*/void d

38、elay(uint z)uint x,y;for(x=z;x>0;x-);for(y=110;y>0;y-);/*4x4矩陣鍵盤掃描函數(shù)*/uchar keyscan()uchar temp,num=No_key; /*掃描第一行*/KEY=0xfe;temp=KEY;temp=temp&0xf0;while(temp!=0xf0)delay(5); temp=KEY;temp=temp&0xf0;while(temp!=0xf0) temp=KEY;switch(temp)case 0xee:num=7;break;case 0xde:num=8;break;ca

39、se 0xbe:num=9;break;case 0x7e:num=14;break;while(temp!=0xf0)temp=KEY;temp=temp&0xf0;/*掃描第二行*/KEY=0xfd;temp=KEY;temp=temp&0xf0;while(temp!=0xf0)delay(5);temp=KEY;temp=temp&0xf0;while(temp!=0xf0)temp=KEY;switch(temp)case 0xed:num=4;break;case 0xdd:num=5;break;case 0xbd:num=6;break;case 0x7

40、d:num=11;break; while(temp!=0xf0)temp=KEY;temp=temp&0xf0; /*掃描第三行*/KEY=0xfb;temp=KEY;temp=temp&0xf0;while(temp!=0xf0)delay(5);temp=KEY;temp=temp&0xf0;while(temp!=0xf0)temp=KEY;switch(temp)case 0xeb:num=1;break;case 0xdb:num=2;break;case 0xbb:num=3;break;case 0x7b:num=12;break;while(temp!=0xf0)temp=KEY;temp=temp&0xf0;KEY=0xf7;temp=KEY;temp=t

溫馨提示

  • 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

提交評論