電子科技學院課程設(shè)計論

上傳人:奇異 文檔編號:20455029 上傳時間:2021-03-22 格式:DOCX 頁數(shù):27 大小:351.04KB
收藏 版權(quán)申訴 舉報 下載
電子科技學院課程設(shè)計論_第1頁
第1頁 / 共27頁
電子科技學院課程設(shè)計論_第2頁
第2頁 / 共27頁
電子科技學院課程設(shè)計論_第3頁
第3頁 / 共27頁

下載文檔到電腦,查找使用更方便

12 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《電子科技學院課程設(shè)計論》由會員分享,可在線閱讀,更多相關(guān)《電子科技學院課程設(shè)計論(27頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、 2019 年電子科技學院課程設(shè)計論文 20 17 屆 電 子 科 技 學 院 課 程 設(shè) 計 論 文 電 子 鎖 設(shè) 計 院 系: 電子科技學院 專 業(yè) : 單片機 指 導 教 師 劉清華 姓 名 劉 洋 2018 年 05 月 江西渝州科技 學院 子科技學院制 摘要 本設(shè)計是基于 51 系列單片機進行的電子鎖系統(tǒng)設(shè)計,可實現(xiàn)密碼輸入、密碼修改、密碼功能、密碼存儲、顯示等功能的一個差不多的電子鎖系統(tǒng),另外本 設(shè)計還能夠通過程序的重新燒寫恢復初始

2、的密碼, 不至于系統(tǒng)輕易的報廢, 提高了系統(tǒng)的穩(wěn)定性和可利用性。 設(shè)計的要緊部分能夠按照軟件和硬件來劃分。 硬件部分包括單片機的復位電路、單片機的晶振電路、 1602 液晶顯示、矩陣鍵盤輸入、 led 和蜂鳴器的提示、以及 I^2C 總線的 AT24C02〔存儲密碼〕;軟件部分那么分為 1602、AT24C02等的驅(qū)動程序和矩陣鍵盤的掃描及蜂鳴器與 led 燈的操縱程序。。 關(guān)鍵詞: STC89C51 AT24C02 1602 液晶顯示 目 錄 前言??????????????????????????? 1 第一章 方案 1.1 示

3、模 方案與 ???????????????? 1 1.2 入模 方案與 ???????????????? 2 1.3 路 最 方案確定????????????????? 2 第二章 主操 器與外 器件 2.1 STC89C52 片機 ??????????????????? 2 2.2 AT24C02??????????????????????? 3 2.2.1 AT24C02 的 寫操作 ??????????????? 3 2.3 1062 ???????????????????????? 6 2.

4、3.1 引腳功能 明?????????????????? 6 2.3.2 指令 明???????????????????? 7 2.3.3 寫操作???????????????????? 9 2.3.4 初始化常用指令????????????????? 9 2.4 矩 ??????????????????????? 10 2.5 其他外 路????????????????????? 11 2.5.1 片機復位 路????????????????? 11 2.5.2 片機晶振 路????????????????? 11 2.5.3 提示

5、路???????????????????? 12 第三章 功能與程序流程 3.1 件 的功能?????????????????? 13 3.2 恢復原始密 程序????????????????? 13 3.3 功能操作 明??????????????????? 14 3.4 主函數(shù)流程 ??????????????????? 14 致 ???????????????????????? 15 參考文獻??????????????????????? 16 附 1 物料清 與按 分布 示????????

6、????? 17 附 2 AT24C02 程序???????????????? 18 附 3 主函數(shù)程序??????????????????? 21 前言 隨著人們生活水平的提高, 如何進行防盜這一問題變得尤為突出, 傳統(tǒng)的機械鎖由于其構(gòu)造簡單, 被撬的事件屢見不鮮。 電子鎖由于其保密性高, 使用靈活性好,安全系數(shù)高,更具人性化等特點得到迅速的推廣。 電子鎖,它也是以 51 系列單片機為核心, 利用單片機的編程來操縱單片機 IO 口電平的準確變化,不但能夠?qū)崿F(xiàn)差不多的密碼鎖功能,還能夠進行密碼的 存儲。假如在要求

7、較高的情況還能夠利用通信功能來實現(xiàn)遠程通信, 從而達到遠程操縱的功能。再配以相應硬件電路,完成密碼的設(shè)置、存貯、識別和顯示、報 警信號等功能。 單片機接收鍵入的密碼, 并與存貯在 EEPROM中的密碼進行比較,假如密碼正確,那么點亮 led 燈模擬開鎖 ; 假如密碼不正確,那么同意操作人員重新輸入密碼,最多可輸入三次 ; 假如三次都不正確,那么會發(fā)出報警聲,同時關(guān)閉顯示〔鎖死〕,假如要是不記得了密碼后,鎖將不能夠再打開,就只能通過 往 24C02中重新寫入程序, 從而達到恢復初始的值, 也不至于因為密碼的不記得而是電子鎖報廢。 第一章 設(shè)計方案論證 1.1 顯示模塊選擇

8、方案與論證 方案一:用 led 數(shù)碼管顯示,價格相對來說較廉價一些,能夠降低成本,且驅(qū)動程序簡單。 但硬件連接會相對復雜, 同時數(shù)碼管只能進行數(shù)字和簡單的字母顯示,不能很到位的顯示出要顯示的內(nèi)容。 方案二:用 1602 液晶顯示,價格比方案一要略微的高一些,驅(qū)動程序也相關(guān)于更加的復雜些。但能夠很好的顯示字符。 因此為了達到一個更好的顯示效果,因此選擇了第一種顯示方法。 1.2 輸入模塊選擇方案與論證 方案一:用獨立按鍵進行輸入,編寫程序是程序比較簡單但較啰嗦,會浪費許多 IO 口。 方案二:用矩陣鍵盤進行輸入,矩陣鍵盤的掃描程序理解起來要困難一點,但能夠

9、節(jié)省 IO 口。 因此選擇第二方案,更加的合適一些。 2.3 電路設(shè)計最終方案確定 綜以上所述:選擇以矩陣鍵盤作為輸入, 1602 作為顯示的方案。 第二章:主操縱器與外圍器件 2.1 STC89C52單片機 ST89C52 是一種低功耗、高性能 CMOS 8位微操縱器,與工業(yè) 80C51產(chǎn)品指 令和引腳完全兼容。 并具有以下標準功能: 8k 字節(jié) Flash ,256 字節(jié) RAM,32 位 I/O 口線,看門狗定時器, 2 個數(shù)據(jù)指針,三個 16 位定時器 / 計數(shù)器,一個 6 向量 2 級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及

10、時鐘電路。另外, ST89C52可降 至 0Hz 靜態(tài)邏輯操作, 支持 2 種軟件可選擇節(jié)電模式。 空閑模式下, CPU停止工 作,同意 RAM、定時器 / 計數(shù)器、串口、中斷接著工作。掉電保護方式下, RAM 內(nèi)容被保存, 振蕩器被凍結(jié), 單片機一切工作停止, 直到下一個中斷或硬件復位為止。 2.2 AT24C02 2 .2.1 AT24C02是采納 I^2C 總線標準的常用串行 EEPROM存儲芯片,AT24C02 它具有 2Kbits 的存儲容量,有一個 8 字節(jié)的頁寫緩沖器, 有專門的寫保護功能。

11、 圖 1. 直插封裝引腳圖 表 1. 引腳功能表 3.2.1 AT24C02 的讀寫操作 圖 2. 讀時序 字節(jié)寫時序 入 AT24C02的那一個字節(jié)。 主機在收到從機另一個應答信號后, 再發(fā)送數(shù)據(jù)到其內(nèi)部字節(jié)地址說明的存儲單元。

12、AT24C02再次應答,并在主機產(chǎn)生停止信號后開始內(nèi)部數(shù)據(jù)的擦寫。在內(nèi)部擦寫的過程中, AT24C02不對主機有任何的請求。 圖 3. 頁寫時序 圖 4. 馬上地址讀時序 圖 5. 選擇性讀時序 選擇性讀。選擇性讀操作同意主機對 24C02寄存器的任意字節(jié)進行讀操作。 主機首先通過發(fā)送起始信號、 從機地址和它想讀取的字節(jié)數(shù)據(jù)的地址、 執(zhí)行一個偽寫操作。在 24C02應答之后,主

13、機重新發(fā)送起始信號和從機地址, 如今 R/W位置 1, 24C02響應并發(fā)送應答信號,然后輸出所要求的一個 8 字節(jié)數(shù)據(jù),主器件不發(fā)送應答信號但產(chǎn)生一個停止信號。 圖 6. 連續(xù)讀時序 圖 7.AT24C02的連接電路 2.31602 液顯 2.3.1 引腳功能說明 第 3 腳: VL 為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比 度最高,對比度過高

14、時會產(chǎn)生“鬼影” ,使用時能夠通過一個 10K 的電位器調(diào)整對比度。 第 4 腳: RS為寄存器選擇, RS=1:選擇數(shù)據(jù)寄存器, RS=0:選擇指令寄存器。 第 5 腳: R/W為讀寫信號線, 當 RW=1:時進行讀操作, RW=0:時進行寫操作。 當 RS=RW=0能夠?qū)懭胫噶罨蛘唢@示地址, 當 RS=0,RW=1時能夠讀忙信號, 當 RS=1,R/W=0:時能夠?qū)懭霐?shù)據(jù)。 第 6 腳: E 端為使能端, 當 E 端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。

15、 圖 8.1602 顯示電路 3.3.2 指令說明 表 2.1602 指令功能表〔 1〕 指令 1:清顯示,指令碼 01H,光標復位到地址 00H位置。 指令 2:光標復位,光標返回到地址 00H。 指令 3:光標和顯示模式設(shè)置 I/D :光標移動方向, I/D=1: 右移, I/D=0: 左移

16、 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平那么無效。 指令 4:顯示開關(guān)操縱。 D:操縱整體顯示的開與關(guān) D=1:表示開顯示, D=0:表示關(guān)顯示 C:操縱光標的開與關(guān) C=1:表示有光標, C=0:表示無光標 B:操縱光標是否閃爍 B=1:閃爍, B=0:不閃爍。 指令 5:光標或顯示移位 S/C=1:時移動顯示的文字, S/C=0:時移動光標。 指令 6:功能設(shè)置命令 DL: DL=1:為 4 位總線, DL=0:為 8 位總線 N=0:單行顯示, N=1:雙行顯示 F=0:顯示 5x7 的

17、點陣字符, F=1:顯示 5x10 的點陣字符。 表 3.1602 功能指令表 〔2〕 指令 7:字符發(fā)生器 RAM地址設(shè)置。 指令 8:DDRAM地址設(shè)置。 指令 9:讀忙信號和光標地址 BF:為忙標志位, BF=1:表示忙,如今模塊不能接收命令或者數(shù)據(jù), BF=0:表示不忙。 指令 10:寫數(shù)據(jù)。指令 11:讀數(shù)據(jù)。 2.3.3 讀寫操作時序圖

18、圖 9. 讀操作時序圖 圖 10. 寫操作時序圖 2.3.4 初始化常用指令 寫指令 38H:顯示模式設(shè)置〔設(shè)置 16X2顯示 5X7點陣, 8 位數(shù)據(jù)接口〕。 寫指令 08H:顯示關(guān)閉 寫指令 01H:顯示清屏 寫指令 06H:顯示光標移動設(shè)置〔寫一個字符后地址指針加 1〕寫指令 0CH:顯示開及光標設(shè)置 2.4 矩陣鍵盤 矩陣鍵盤和獨立按鍵的接法有很大的區(qū)別,但它們掃描的方法在本質(zhì)上是一樣 的。獨立按鍵是通過一端接地, 通過單片機去掃描判斷是否有按鍵按下。 如檢測到有 IO 端口為低時,那么說明有按鍵按下。而矩陣鍵

19、盤上面的按鍵兩端〔分為 行和列〕都接在單片機上,是通過人為的讓其一端〔行或列〕為高或為低來進行掃描,再反操作〔列或行〕 。在通過列和行的總體情況判斷是否有按鍵按下。 矩陣鍵盤的電路連接圖如下: 圖 11. 矩陣鍵盤電路連接圖 2.5 其他外圍電路 2.5.1 單片機復位電路

20、 圖 12. 復位電路 在系統(tǒng)運行的過程中, 有時可能對系統(tǒng)需要進行復位, 為了幸免對硬件系統(tǒng)經(jīng)常加電和斷電造成的損害, 設(shè)計了手動的復位電路。 如下圖。這種電路的設(shè)計,在系統(tǒng)的運行過程中需要復位時, 只需使開關(guān)閉合, 在 RST端就會出現(xiàn)一定時間的高電平信號,從而使單片機實現(xiàn)復位。 3.5.2 單片機晶振電路 圖 13. 晶振電路 單片機必須在時鐘的驅(qū)動下才能進行工作。 MCS-51系列單片機內(nèi)部都有一個時鐘振蕩電路, 只需外接晶振

21、源, 就能產(chǎn)生一定頻率的時鐘信號送到單片機的內(nèi)部的各個單元, 決定單片機的工作速度。 如圖確實是內(nèi)部時鐘工作方式的電路圖,這是一種常用的方式。 這種方式是外界振蕩源, 本設(shè)計就采納這種外接晶振的方法。電路中的兩個電容的作用有兩個:一是關(guān)心振蕩器起振〔 C1C2的值大,起振的速度慢;反之,速度快?!常欢菍φ袷幤鞯念l率起到微調(diào)的作用〔 C1C2 的值大,頻率略有減少,反之,頻率略有提高〕。 C1C2的值采納 20pF。 2.5.3 提示電路 圖 14. 提

22、示電路 提示電路要緊由蜂鳴器報警電路和 led 燈指示電路組成。 當密碼輸入正確時, 蜂鳴器發(fā)出 ‘滴’的一聲, 當密碼輸入錯誤的時候蜂鳴器發(fā)出短暫 〔2~3 秒的延時〕 的報警聲,當密碼輸入錯誤超過三次以上時蜂鳴器發(fā)出較長的報警聲。 Led 燈是用來指示模擬鎖的狀態(tài)的, led 亮了代表鎖是打開狀態(tài),相反的燈不亮的話確實是代表鎖是關(guān)閉狀態(tài)。 第三章功能與程序流程圖 3.1 軟件功能簡述 1、密碼更改功能:首先,系統(tǒng)應該有一個默認的初始密碼 (123456) ,這是在開機的時候就差不多自己擁有的。 更改功能要緊是為了滿足需要, 自行對初始密碼進行修改。該功能要做的

23、確實是將新輸入的密碼作為新的密碼。 〔必須實在鎖關(guān)閉的狀態(tài)下〕 2、密碼輸入功能:用戶輸入密碼。該功能要做的確實是將輸入的密碼與原始的密碼進行一個對比,假如一致的話就開鎖。 3、取消功能:要緊用于在誤輸后能夠即使的取消并更改。 4、斷電密碼保護:將輸入的密碼存儲在 24C02中,當斷電后再次上電時將密碼讀出來。就能保證原來的密碼的不丟失。 5、LCD顯示功能:當進行某一項操作后, LCD上有提示字符,同時 LED閃爍提示 ( 要緊是為了模擬鎖的開與關(guān) ) ,蜂鳴器開始產(chǎn)生相應的聲音。 3.2 恢復原始密碼程序 在使用的過程中難免會有不記得密碼, 或者是因為操

24、作方法不對導致密碼錯亂的時候,因此我們制作了一個能夠恢復初始值〔 123456〕的函數(shù)〔類似于常常說的刷機〕。如此就能夠就更更句人性化一點,不至于使整個東西不能再用。 #include “AT24C02.h” ucharpassword[16]={1,2,3,4,5,6\0,\0,\0,\ 0,\0,\0,\0,\0,\0,\0}; voidmain() { for(i=0;i<16;i++) { writeadd(23,password[i]) } 3.3 功能操作說明 板子上的紙片是作為提示作用的, 用于顯示

25、按鍵的功能。 一上電之后能夠直截了當輸密碼,也能夠更改密碼〔需要在閉鎖的狀態(tài)下進行〕 。改密碼需要之前的密碼,只有在原始密碼輸入正確的前提下才能輸入新的密碼, 假如三次不正確那么會關(guān)閉系統(tǒng)同時蜂鳴器會進行報警。 具體的操作能夠按照顯示提示進行。 按鍵的操作能夠參照附錄 1 中的按鍵功能分配圖示。 3.4 主函數(shù)流程圖 圖 15. 主函數(shù)流程圖 致謝 首先我們要感謝劉清華老師的大力關(guān)心和支持。 在整個電子設(shè)計和論文設(shè)計過程當中,為我的課程設(shè)計帶來了很大關(guān)心, 從論文設(shè)計的選題, 構(gòu)思到最后定稿以及后續(xù)的修改校正的各個環(huán)節(jié)給予細心的指導, 使我得以最

26、終完成論文設(shè)計。 同時在我們完成課程設(shè)計的過程中提供了許多指導性的意見, 使我們受益匪淺。 在此,我衷心感謝劉老師給予我的關(guān)心和教育。 此外,衷心感謝我們小組的其他成員以及所有對本課題的研究設(shè)計和論文撰寫有過關(guān)心的同學, 因為有大伙的共同努力才使得本次課程設(shè)計能夠?qū)嶍樌耐瓿?,大伙都辛苦了? 參考文獻 [1] 郭天祥 . 《 51 單片機 C語言教程》 . 電子工業(yè)出版社 [2] 譚浩強 . 《 C程序設(shè)計》 . 清華大學出版社 [3] 陸旭明 . 《單片機設(shè)計應用和仿真》 . 北京大學出版社 [4] 王振紅、張常年

27、 . 《綜合電子設(shè)計和實踐》 . 清華大學出版社 [5] 朱春平 . 《單片機應用技術(shù)》 . 中國勞動社會保障出版社 [6] 劉守義 . 《單片機應用技術(shù)》 . 西安電子科技大學出版社 [7] 李全利 . 《單片機原理和應用技術(shù)》 . 高等教育出版社 [8] 華成英、童詩白 . 《模擬電子技術(shù)基礎(chǔ)》 . 高等教育出版社 [9] 謝嘉奎 . 《電子線路》 . 高等教育出版社 [10] 求是科技 .《單片機典型模塊設(shè)計實例導航》 . 人民郵電出版 社 附錄 1 物料清單與按鍵分布圖示

28、 表 4. 物料清單 表 5. 按鍵分布 元件名稱 數(shù)量 1602 1 塊 STC89C52 1 片 按鈕按鍵 17 個 瓷片電容 2 個 AT24C02 1 片 極性電容 1 個〔 10uf 〕 電阻 假設(shè)干 三極管 1 個〔 pnp〕 蜂鳴器 1 個 Led 燈 1 個〔紅〕 萬能板 1 塊 USB線 1 根 單行排座 假設(shè)干 0 4 8 退格 1 5 9 確認 2 6 關(guān)鎖 輸入 3 7 未用 改密

29、 附錄 2AT24C02驅(qū)動程序 #ifndef__24C02_h__ #define__24C02_h__ #defineucharunsignedchar #defineuintunsignedint sbitSDA=P2^6; sbitSCL=P2^7; /*************** 微秒級延時,用于 I2C 總線操作 ****************/ voiddelays() { ;; } /******* 延時函數(shù) **********/ voiddelayms(uintxms

30、) { uinti,j; for(i=0;i

31、s(); } /********** 停止信號 ***********/ voidstop() { SDA=0; delays(); SCL=1; delays(); SDA=1; delays(); } /************  應答信號 **************/ voidrespons() { uchari; SCL=1; delays();  // 等待  SDA拉低,拉低后那么不成立, while((SDA=

32、=1)&&(i<250))i++;// 否那么一直等到一定時間后默認應答 SCL=0; delays(); } /*********** 寫一個字 *************/ voidwritebyte(uchardat) { uchari,temp; temp=dat; for(i=0;i<8;i++) { SCL=0; // 低電平,使數(shù)據(jù)能過發(fā)生改變 delays(); temp=temp<<1; SDA=CY;  // 將數(shù)據(jù)傳給數(shù)據(jù)線 delays(); SCL=1;

33、 // 高電平時,數(shù)據(jù)穩(wěn)定,寫數(shù)據(jù) delays(); } SCL=0; delays(); SDA=1; // 數(shù)據(jù)線在不用的情況下將其釋放 delays(); } /************** 讀一個字 ****************/ ucharreadbyte() { uchari,k; SCL=0; delays(); SDA=1; delays(); for(i=0;i<8;i++) { SCL=1; delays(); k=(

34、k<<1|SDA); SCL=0; delays(); } returnk; } /*********** 往 AT24C02里面寫數(shù)據(jù) ********/ voidwriteadd(ucharaddress,uchardate) { start(); writebyte(0xa0); // 寫地址并說明接下來的確實是寫操作 respons(); writebyte(address); respons(); writebyte(date); respons(); stop(); } /*

35、******************** ucharreadadd(ucharaddress)// 讀數(shù)據(jù) { uchardate; start(); respons(); writebyte(0xa0); respons(); writebyte(address); respons(); start(); respons(); writebyte(0xa1); // 改變方向,需要重新進行開始,寫地址并說明接下來是讀操作 respons(); date=readbyte(); stop();

36、returndate; } #endif 附錄 3 主函數(shù)代碼 #include// 頭文件 #include// 包含字符串復制的頭文件 #include “24C02.h” #defineucharunsignedchar // 用 uchar 代替 unsignedchar #defineuintunsignedint//  用  uint  代替  unsignedint sbitRS=P2^0;  /

37、/P2^0  為數(shù)據(jù)命令選擇選擇 sbitRW=P2^1; sbitEN=P2^2; sbitLED=P1^0; sbitBUZ=P2^4; voidcompare();  // 讀寫標志 // 使能 // 燈亮滅表示門開關(guān) // 定義蜂鳴器 // 比較函數(shù)聲明 voidclr();  // 清除函數(shù)聲明 uchary=0,key,equal=17,m=0;temp,f=0;// 定義變量 static Ucharpassword[16]={1,2,3,4,5,6,\0,\0,\0,

38、\0,\0, \0,\0,\0,\0,\0}; ucharbuf[16]={\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0, \0,\0,\0,\0,\0}; ucharclear[16]={\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0 ,\0,\0,\0,\0,\0}; // 定義字符數(shù)組 ucharcodeenter[]={ “Inputapassword ”}; ucharcodekeys[]={ “ Enter ”}; ucharcodewrong[]={ “Tryagain. ” };

39、 ucharcoderight[]={ “Thelockisopen ”}; ucharcodebye[]={ “Byebye! ”}; ucharcodenew[]={ “newpassword” }; ucharcodeinit[]={ “ initialpassword ”}; ucharcodesuc[]={ “setsuccess ”};// 定義字符串數(shù)組 voiddelay(uintx)// 延時 { ucharj; uinti; for(i=0;i

40、 ; } ucharkeyscan() // 鍵盤掃描函數(shù),將相應的鍵值返回 { uchari,j,temp,scan[]={0xef,0xdf,0xbf,0x7f}; for(i=0;i<4;i++) // 列掃描 { P3=scan[i]; emp=0x01; for(j=0;j<4;j++) // 行掃描 { if(!(P3&temp)) // 判斷是那一列 return(i+j*4); temp<<=1; } } return16

41、; } // 寫命令 voidWcom(ucharinst) { RS=0;// 寫入命令 RW=0; P0=inst; EN=1; delay(5); EN=0; } // 寫數(shù)據(jù) voidWdata(uchardates) { RS=1; RW=0; P0=dates;// 寫入數(shù)據(jù) EN=1; delay(5); } EN=

42、0; voidinitial()//1602 初始化函數(shù) { EN=0; Wcom(0x38); // 兩行顯示,數(shù)據(jù)總線為八位。 Wcom(0x0c); // 開顯示器 Wcom(0x06); // Wcom(0x01);// 清屏 } // 輸入第一行的英文字母 voidstring(uchar*pstr)// 定義 pstr 為指針型變量 { Wcom(0x01); Wcom(0x80); while(*pstr!=\0) { Wdat

43、a(*pstr); pstr++; } } voidbackspace() // 退格函數(shù) { if(y!=0) { y--;  // 此行無字符時就不能退咯 buf[y]=\0;  // 將退格字符清零 Wcom(0xc0+y); Wdata(0x10);//  將* 號清除 } } voidinput()// 鍵值存入數(shù)組 { key=keyscan(); if(key<10&&key!=equal)//

44、防止輸入一個數(shù)字存入多次 { buf[y]=key+48; // 將鍵值變?yōu)閿?shù)字對應的字符 Wcom(0xc0+y); if(temp==15) // 改密碼時顯示數(shù)字 Wdata(buf[y]); else Wdata(*); // 輸密碼時顯示“ * ” y++; equal=key; delay(10); } elseif(key==12)// 退格鍵 { delay

45、(10); while(keyscan()==12) // 等待釋放 ; backspace(); // 執(zhí)行退格函數(shù) } delay(100); // 防止因手抖動而退幾格 } voidcorrect() // 密碼正確 { f=1; // 密碼正確標志位被置一 if(temp!=15) { string(right); LED=0; // 燈亮表示門開 } } void

46、error() // 密碼錯誤 { string(wrong); if(m==2) // 三次發(fā)出報警聲 { string(bye); BUZ=0; delay(2000); Wcom(0x08); delay(10000); BUZ=1; } } voidcompare() // 判斷密碼是否正確 { ucharl; for(l=0;l<16;l++) { if(password[l]!=buf[l]) break; } if(l==16) // 表示密碼正確

47、{ BUZ=0; delay(500); BUZ=1; correct(); } else { error(); } } voidclr() { for(y=0;y<16;y++) { buf[y]=\0; if(temp==15&&f==1) password[y]=\0; } y=0; } voiddecide() { for(m=0;m<3;m++) { clr();// 清晰緩沖數(shù)組 while(key!=14)

48、 input(); // 按輸入健時執(zhí)行下一條語句 while((key=keyscan())==14) ; // 等待確認鍵 ? compare(); if(f==1)// 輸入密碼正確跳出 break; } } voidmain() { Uchari; For(i=0;i<16;i++) { Password[i]=readadd[23+i]; Delayms(20); } initial();//1602 初始化函數(shù) string(enter); while(

49、1) { temp=keyscan(); if(temp<10) { decide(); // 判斷是否大于三次 } if(temp==15) { string(init); clr(); decide(); if(f==1) { string(new); clr(); while(key!=13)  // 存密碼 { input(); strcpy(password,buf); For(i=0;i<16;i++) { Writeadd(23+i,password[i]); Delayms(20); } } string(suc); delay(2000); string(enter); } } if(keyscan()==10)// {  鎖門 Wcom(0x01); string(enter); LED=1; f=0; delay(1); } } }

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!

五月丁香婷婷狠狠色,亚洲日韩欧美精品久久久不卡,欧美日韩国产黄片三级,手机在线观看成人国产亚洲