用24C04與1602LCD設計電子密碼鎖.doc_第1頁
用24C04與1602LCD設計電子密碼鎖.doc_第2頁
用24C04與1602LCD設計電子密碼鎖.doc_第3頁
用24C04與1602LCD設計電子密碼鎖.doc_第4頁
用24C04與1602LCD設計電子密碼鎖.doc_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

畢業(yè)設計 論文 畢業(yè)設計 論文 學學 生生 姓姓 名 名 趙軍成 學學 號 號 21 專專 業(yè)業(yè) 應用電子技術 系系 部部 電子工程學院 設計設計 論文論文 題目題目 用 24C04 與 1602LCD 設計電子密碼鎖 課程設計 指指 導導 教教 師師 陳愛文 年 月 日 目 錄 0 1 引言 2 2 設計任務和要求 3 2 1 系統(tǒng)總結構設計圖 3 2 2 單元電路設計與參數(shù)計算 4 2 3 各模塊的功能 4 2 3 2 矩陣鍵盤鍵值讀取 5 2 3 3 1602液晶顯示模塊 5 2 4 延時模塊 6 2 4 2密碼設置模塊 6 2 4 3 密碼比較模塊 7 2 4 4改密處理 7 2 5 單片機及其外圍電路 8 2 6 時鐘電路 9 2 7 矩陣鍵盤電路的設計 10 2 8 操作面板 11 2 9 液晶顯示電路 11 2 9 2 液晶顯示子程序 13 2 10 系統(tǒng)軟件設計 14 2 11 系統(tǒng)主程序 14 2 12 初始化及按鍵識別 15 2 13 源程序如下所示 16 3 實現(xiàn)與檢測 28 3 1 原理圖及元器件清單 28 3 2 綜合邏輯功能檢測 29 參考文獻 30 摘要摘要 隨著信息技術的不斷發(fā)展 信息化時代也逐步進入普通家庭 人們對個人的信息 安全以及隱私等私密信息的安全要求不斷提高 傳統(tǒng)的機械鎖已經(jīng)不能滿足要求 針對 此現(xiàn)狀設計一款安全可靠廉價的電子密碼鎖有著十分重要的意義 本設計以 AT89C51 為 主控芯片 帶有一個密碼輸入鍵盤 外圍時鐘復位電路 存儲單元 24C04 顯示單元 1602LCD 通過 LED 燈的亮與滅表示電子鎖的鎖閉與打開 利用單片機靈活的編程設計和 豐富的 IO 端口 能實現(xiàn)密碼鎖的基本功能 用戶可以任意設置密碼增加了密碼鎖的保密 性 同時如果增加指紋識別 光電識別能進一步增加密碼鎖的保密性 為了提高可讀性 采用了 1602 作為顯示單元 使用戶對密碼鎖的運行情況一目了然 關鍵詞 單片機 電子密碼鎖 24C04 1602LCD 匯編語言 程序設計 1 引言引言 隨著人們生活水平的提高 如何實現(xiàn)家庭防盜這一問題也變的尤其的突出 鎖是置于 可啟閉的器物上 用以關住某個確定的空間范圍或某種器具的 必須以鑰匙或暗碼打開扣 件 傳統(tǒng)的機械鎖由于其構造的簡單 被撬的事件屢見不鮮 鎖具發(fā)展到現(xiàn)在已有若干 年的歷史了 人們對它的結構 機理也研究得很透徹 因此 不用鑰匙就能打開的方法 和工具也層出不窮 盜賊還想方設法利用高科技手段撬門開鎖 使廣大居民防不勝防 傳統(tǒng)鎖具都存在致命的弱點 第一 鎖芯采用常見的銅 鋁 鋅等材料 抵抗不了強力 破壞 第二 鎖具制作工藝 技術落后 無法阻止技術手段的開啟 目前 市場上很多 國內外的鎖具 實際上都不具備真正的防盜功能 在慣偷面前 兩根鋼絲或幾件簡單的 工具就可以把這些鎖打開 主要是鎖具的技術原理太過簡單 隨著科技的進步 鎖已發(fā) 展到了密碼鎖 磁性鎖 電子鎖 激光鎖 聲控鎖等等 在傳統(tǒng)鑰匙的基礎上 加了一 組或多組密碼 不同聲音 不同磁場 不同聲波 不同光束光波 不同圖像 如指紋 眼底視網(wǎng)膜等 來控制鎖的開啟 從而大大提高了鎖的安全性 使不法之徒無從下手 人們也就能對自身財產(chǎn)安全有了更多的保障 當今安全信息系統(tǒng)應用越來越廣泛 特別 在保護機密 維護隱私和財產(chǎn)保護方面起到重大作用 而基于電子密碼鎖的安全系統(tǒng)是 其中的組成部分 因此研究它具有重大的現(xiàn)實意義 電子鎖可以在日常生活和現(xiàn)代辦公中 住宅與辦公室的安全防范 單位的文件檔案 財務報表以及一些個人資料的保存等多種場合使用 大大提高了主人物資的安全性 目 前使用的密碼鎖種類繁多 各具特色 本文從經(jīng)濟實用的角度出發(fā) 采用 AT89S51 單機 研制了一款具有防盜自動報警功能的電子密碼鎖 同時通過 LCD1602 增強了可讀性 該 密碼鎖設計方法合理 簡單易行 成本低 符合住宅 辦公室用鎖要求 具有一定的推 廣價值 1 系統(tǒng)設置 6 位密碼 密碼通過鍵盤輸入 若密碼正確 則將鎖打開 2 密碼 由用戶自己設定 在開鎖狀態(tài)下 用戶可自行修改密碼 3 具有自動報警功能 一是密碼輸入錯誤 3 次 則報警 保證了系統(tǒng)的安全性 系 統(tǒng)工作時 用戶通過按鍵輸入 6 位密碼 單片機將輸入密碼與設定密碼進行比較 若密 碼正確 則發(fā)出開鎖信號 將門打開 系統(tǒng)不報警 若密碼不正確 系統(tǒng)提示重新輸入 密碼 重新輸入密碼的次數(shù)不能超過 3 次 若 3 次輸入的密碼都不正確 則發(fā)出報警信 號 本文注重實踐和理論相結合 按照單片機初學者的學習過程 由淺入深逐步講解了設計 電子鎖的整個設計過程及應用到的編程軟件 整個設計報告工分為 4 個部分 各部分的安排 如下 第一部分 是設計電子鎖的背景及目的 第二部分 介紹了這個方案的設計任務要求 第三部分 介紹了電子鎖的原理圖及元器件清單 第四部分 介紹了電子鎖的性能測試與分析 2 2 設計任務和要求設計任務和要求 設計任務是利用開發(fā)板設計一個電子鎖 設計要求 自己在自己電腦上寫好要連接的電子鎖的程序 再在實驗室里將已經(jīng)調試成 功的電子鎖的程序下載到開發(fā)板上 觀察并記錄開發(fā)板上的等的運行情況 如果不是如預期 那樣運行 要找出原因并進行調試 最后對自己的實驗設計進行驗收 2 1 系統(tǒng)總結構設計圖 本設計由主控芯片 51 單片機 24C04 斷電存儲電路 單片機時鐘電路 LCD1602 顯示電路 鍵盤和開鎖電路組成 單片機負責控制整個系統(tǒng)的執(zhí)行過程 開鎖控制電路 89S51 單片機 24C02 掉電存儲 LCD1602 顯示電路 矩陣 鍵盤 控制 指示電路 輸入錯誤鎖定鍵盤 延時報警控制電路 2 2 單元電路設計與參數(shù)計算 圖 2 2 1 電子鎖的仿真圖 2 3 各模塊的功能 1 鍵盤輸入模塊 分為密碼輸入按鍵與幾個功能按鍵 用于完成密碼鎖輸入功能 2 密碼存儲模塊 用于完成掉電存儲功能 使修改的密碼斷電后仍能保存 3 蜂鳴器報警電路 用于完成輸錯密碼時候的警報功能 4 晶振電路 用于單片機的起振 5 復位電路 完成系統(tǒng)的復位 6 顯示模塊 用于完成對系統(tǒng)狀態(tài)顯示及操作提示功能 7 LED 顯示模塊 用于輔助報警與輸入提示 8 開鎖電路 應用繼電器及發(fā)光二極管模擬開鎖 完成開鎖及開鎖提示 2 3 2 矩陣鍵盤鍵值讀取 矩陣鍵盤接 P1 口 行接低 4 位 列接高 4 為 先讓行為高 列為低 若有鍵按下 則 所在行為低 得到按鍵的所在行數(shù) 之后令 P1 口 行為低 列為高 運用相似的方法得到 所按鍵的所在列數(shù) 及確定按鍵位置 返回鍵值 由于機械鍵盤會出現(xiàn)信號抖動的情況 固 在發(fā)現(xiàn)有按鍵后延時 5 毫秒再次確定 若讓有按鍵 證明按鍵穩(wěn)定 否則認為接收到的是抖 動信號 不予處理 2 3 3 1602 液晶顯示模塊 1602 具有三個工作狀態(tài)控制端 調節(jié)他們的高低變化配合數(shù)據(jù)口的信息 可以顯示 2 16 的字母或者數(shù)字 通過子函數(shù)可以實現(xiàn)檢測初始化 LCD 寫指令到 LCD LCD 狀態(tài) LCD 清屏 輸入一個字節(jié)數(shù)據(jù)到 LCD LCD 光標定位到 x 處 LCD 光標歸位 輸入一個字符到 LCD 輸入一個字符串到 LCD 等功能 液晶顯示子程序在每次更新顯示內容時都會被調用 其流程如圖所示 開始 清顯示 寫指令入IR 字符地址入DPTR 字符 00H 寫結束 字符代碼送入P0口寫數(shù)據(jù)入DR 地址 1 返回 液晶顯示子程序流程圖 每次更新顯示內容前 需清顯示清空 LCD 原先的顯示內容 清屏指令的指令碼為 01H 即將 P0 口賦值 01H 然后寫入指令寄存器 IR LCD1602 要顯示的內容是根據(jù)其控制器內置的字符碼表 事先列出要顯示的 ASCII 字符 串 每次送一個字符的 ASCII 碼入 P0 口 然后寫入數(shù)據(jù)寄存器 DR 最后將字符地址加一 LCD1602 會將寫入的 ASCII 碼對應的字符依次顯示出來 由于顯示字符串的長度不盡相同 約定每串字符以 00H 結尾 程序檢測到字符碼為 00H 時 即停止寫入 返回 LCD 顯示的內 容在下次更新前會一直保持 2 4 延時模塊 一個程序會有許多地方需要進行延時操作 例如矩陣鍵盤的消抖延時 一般延時可以通 過空循環(huán)與中斷響應兩種方法進行 由于本程序對于時間精度要求不高 故使用相對簡單的 空循環(huán)的方法進行延時 進過實驗 單片機每空循環(huán) 110 次耗時 1ms 故用兩次循環(huán) 里面 一次空循環(huán) 110 外面的一次由輸入決定循環(huán)次數(shù) 這樣就會進行輸入數(shù)值時長的延時 2 4 4 密碼讀取模塊 首先預讀入密碼的字符數(shù)組清零 顯示位置清空 然后讀取鍵值 先判斷此時是否是在 第九個鍵值輸入了數(shù)字鍵值 如果是不響應重新讀入 這樣可以防止讀入字符串溢出 造成 密碼讀取錯誤 然后通過 switch 語句 5 處理鍵值 字母鍵值 并將讀取位置 顯示位置進 行相關調整 如果輸入的是數(shù)字有效鍵值 存入當前指向的字符數(shù)組空間 其后將鍵值變量 清零準備讀取下一個鍵值 進行循環(huán)讀取 直到成功讀取 8 位密碼或者因為輸入了確定鍵提 前完成讀取工作 2 4 2 密碼設置模塊 在系統(tǒng)進行初始化時 要求設置密碼 整體思路是要求讀取一組密碼 保存在臨時空間 然后再次讀取密碼 如果相同 證明設置成功 將新密碼覆蓋進標準密碼數(shù)組里 如果兩次 的密碼不同 顯示錯誤信息 要求重新輸入 第一次讀入密碼 第二次讀入密碼 保存密碼 提示成功 判斷兩次密碼 相同 不相同 圖 2 3 5 密碼設置模塊 2 4 3 密碼比較模塊 該模塊將輸入密碼字符串與設定密碼字符串比較 如果相同 執(zhí)行開鎖動作并將輸入錯 誤次數(shù)清零 如果不同 累計錯誤次數(shù) 如果是第三次輸入錯誤 系統(tǒng)鎖死并發(fā)出聲光告警 如果小于三次 顯示密碼錯誤信息 返回密碼輸入環(huán)節(jié) 邏輯框圖如圖 2 3 6 圖 2 3 6 密碼比較模塊 2 4 4 改密處理 如圖 可以看出 改密鍵的處理流程跟開鎖鍵類似 都需檢查密碼是否正確 錯誤的話 提示重新輸入 只有輸入密碼正確才可以進行改密 然后再按更改鍵 密碼更改程序被調用 進而更改密碼 此過程 LCD 都會顯示信息 模塊啟動 驗證密碼 判斷錯誤 次數(shù) 顯示錯誤信息并 返回 發(fā)出報警 系統(tǒng)鎖死 發(fā)出報警 系統(tǒng)鎖死 連續(xù)錯誤次 數(shù)小于三次 連續(xù)錯誤次數(shù) 小于三次 密碼正確 密碼錯誤 開始 密碼正確 提示 輸入新密碼 密碼錯誤重新輸入 再次 輸入新密碼 對比兩次 輸入相同 更改成功 否 否 是 改密流程圖 2 5 單片機及其外圍電路 復位電路 2 6 時鐘電路 時鐘電路為單片機產(chǎn)生時序脈沖 單片機所有運算與控制過程都是在統(tǒng)一的時序脈沖的驅動 下的進行的 如果單片機的時鐘電路停止工作 晶振停振 那么單片機也就停止運行了 當采用內部時鐘時 連接方法如下圖所示 在晶振引腳XTAL1 19腳 和XTAL2 18腳 引腳 之間接入一個12MHZ晶振 兩個引腳對地分別再接入一個電容即可產(chǎn)生所需的時鐘信號 電 容的容量一般在幾十皮法 C1 C2 Y1 XTA L1 XTA L2 2 7 矩陣鍵盤電路的設計 為了加強密碼的保密性 采用一個 4 4 的矩陣式鍵盤可以任意設置用戶密碼 1 16 位 長度 從而提高了密碼的保密性 同時也能減少與單片機接口時所占用的 I O 口線的數(shù)目 節(jié)省了單片機的寶貴資源 在按鍵比較多的時候 通常采用這種方法 每一行與每一列的交叉處不相同 而是通過一個按鍵來連通 利用這種行列式矩陣結構 只需要 N 根行線與 M 根列線 即可組成具有 N M 個按鍵的矩陣鍵盤 在這種行列式矩陣鍵盤編碼的單片機系統(tǒng)中 鍵盤處理程序首先執(zhí)行等待按鍵并確認有 無按鍵按下的程序段 當確認有按鍵按下后 下一步就是要識別哪一個按鍵被按下 對鍵的識別方法通常有兩 種 一種是通用的組行掃描查詢法 另一種是速度較快的線反轉法 此系統(tǒng)中 我們采用線反轉法 首先辨別鍵盤中有無按鍵被按下 在單片機 I O 口向鍵 盤送全掃描字 然后讀入行線狀態(tài)來判斷 具體方法是 向行線輸出全掃描字 00H 把全部 列線置成低電平 然后將列線的電平狀態(tài)讀入累加器 A 中 如果有按鍵被按下 總會有一根 行線電瓶被拉至低電平從而使行線不全為 1 判斷鍵盤中哪一個按鍵被按下通常是通過將列線逐列至低電平后 檢查行輸入狀態(tài)來實 現(xiàn)的 方法是 依次給列線送低電平 然后檢查所有行線狀態(tài) 如果全為 1 則所按下的按 鍵不在此列 如果不全為 1 則所按下的按鍵必在此列 而且是在與零電平行線相交的交點 上的那個按鍵 2 8 操作面板 10 個數(shù)字鍵用來輸入密碼 另外 6 個功能鍵分別是 更正 改密 鎖定 其中更正鍵 的功能是當輸入密碼錯誤的時候 清除前面已經(jīng)輸入的數(shù)據(jù) 重新輸入 在輸入密碼狀態(tài)下 0 9 數(shù)字鍵為有效鍵 有時間和次數(shù)限制功能 只有三次輸入密碼機會 每次限制在 10 秒 內完成 輸入密碼有誤或每次輸入密碼超時 則被認為是密碼輸入錯誤 當 3 次輸入都錯誤 時 程序將返回起始狀態(tài) 密碼輸入正確后 繼電器吸合 表示鎖被打開 在密碼輸入正確 的情況下 程序進入查看密碼和修改密碼狀態(tài) 按 改密 鍵進入重新設置密碼狀態(tài) 在 輸入密碼時 如發(fā)現(xiàn)輸入有誤 可按 更正 鍵刪除后 重新輸入 按 鎖定 確認后 程 序退出修改密碼狀態(tài) 2 9 液晶顯示電路 本系統(tǒng)設計的顯示電路是為了給使用者以提示而設置的為了達到界面友好的目的 顯示 部分由液晶顯示器 LCD1602 取代普通的數(shù)碼管完成 開鎖時 按下鍵盤上的開鎖按鍵后 利 用鍵盤上的數(shù)字鍵 0 9 輸入密碼 每按下一個數(shù)字鍵后在顯示器上顯示一個 輸入多少位 就顯示多少個 當密碼輸入完成時 如果輸入的密碼正確的話 LCD 顯示 OK 綠燈亮 起 單片機其中 P3 0 引腳會輸出低電平 使三極管 T2 導通 電磁鐵吸合 繼電器開關跳轉 電子密碼鎖被打開 如果密碼不正確 LCD 顯示屏會顯示 ERROR P3 0 輸出的是高電平 電子密碼鎖不能打開 同時紅燈亮起 通過 LCD 顯示屏 可以清楚地判斷出密碼鎖所處的狀 態(tài) 圖3 7 顯示器電路 顯示器主要用于顯示以下幾個字符 指示如圖所示 圖3 8 a 開機狀態(tài) 等待輸入狀態(tài) 密碼輸入正確狀態(tài) 密碼輸入錯誤及輸入密碼超時的提示 2 9 2 液晶顯示子程序 液晶顯示子程序在每次更新顯示內容時都會被調用 其流程如圖所示 ASWORDPS D KO RORE R 開始 清顯示 寫指令入IR 字符地址入DPTR 字符 00H 寫結束 字符代碼送入P0口寫數(shù)據(jù)入DR 地址 1 返回 液晶顯示子程序流程圖 每次更新顯示內容前 需清顯示清空 LCD 原先的顯示內容 清屏指令的指令碼為 01H 即將 P0 口賦值 01H 然后寫入指令寄存器 IR LCD1602 要顯示的內容是根據(jù)其控制器內置的字符碼表 事先列出要顯示的 ASCII 字符 串 每次送一個字符的 ASCII 碼入 P0 口 然后寫入數(shù)據(jù)寄存器 DR 最后將字符地址加一 LCD1602 會將寫入的 ASCII 碼對應的字符依次顯示出來 由于顯示字符串的長度不盡相同 約定每串字符以 00H 結尾 程序檢測到字符碼為 00H 時 即停止寫入 返回 LCD 顯示的內 容在下次更新前會一直保持 2 10 系統(tǒng)軟件設計 系統(tǒng)的軟件設計采用匯編語言編碼 設計方法是先用文本編輯器編寫源碼 然后用軟件 Keil C51 編譯 如果沒有錯誤 可連接生成 HEX 格式的文件 需事先在 Keil C51 中設置 如果有錯誤則無法連接 但可在生成的 OBJ 文件中找到代碼錯誤的地方 便于修改 當然 也可以直接在 Keil 中編碼 生成的 HEX 文件是記錄文本行的 ASCII 文本文件 在 HEX 文件 中 每一行是一個 HEX 記錄 由十六進制數(shù)組成的機器碼或者數(shù)據(jù)常量 HEX 文件經(jīng)常被用 于將程序或數(shù)據(jù)傳輸存儲到 ROM EPROM 大多數(shù)編程器和模擬器使用 HEX 文件 2 11 系統(tǒng)主程序 系統(tǒng)的主程序如圖 4 1 所示 由于用戶在使用系統(tǒng)的過程中 可能在任何時刻按下任何 按鍵 而程序都必須對此作出正確響應 開始 系統(tǒng)初始化 密碼輸入 顯示菜單二 鍵盤掃描 顯示菜單一 啟動密碼輸入 F鍵按下 鎖定 密碼比較 關鎖 延時1s 開鎖 提示正確 密碼正確 密碼正確標志 1 存新密碼 提示錯誤 錯誤 次數(shù)加1 查看密碼 修改密碼 錯誤了3次 D鍵按下 N Y N Y N Y Y N Y N Y N 主程序流程圖 2 12 初始化及按鍵識別 如圖 4 2 系統(tǒng)的初始化包括堆棧起始地址的設定 兩個定時 計數(shù)器的設定 液 晶顯示模式的設定 密碼緩沖區(qū)的初始化 一些自定義數(shù)據(jù)空間的初始化 蜂鳴器初始化發(fā) 聲等操作 系統(tǒng)初始化并讀取密碼完成后 液晶顯示 PASSWORD CONTROL 提示用戶可以輸入 密碼 此時程序即不斷測試按鍵 檢查是否有按鍵被按下 如果有 則進行按鍵識別 如果 沒有按鍵按下 或者按下的按鍵沒有被識別 R3 賦值 0FFH 并跳轉至按鍵測試 實際程序 運行時 絕大部分時間都在測試按鍵 等待用戶輸入 載入 初始密碼 讀取成功 讀取密碼 系統(tǒng)初始化 開始 提示輸入密碼 按鍵測試子程序 有按鍵按下 按鍵識別子程序 識別成功 按鍵重定位 延時0 5S 否 是 是 是 否 否 初始化及按鍵識別流程圖 2 13 源程序如下所示 include delay h uS 延時函數(shù) 含有輸入?yún)?shù) unsigned char t 無返回值 unsigned char 是定義無符號字符變量 其值的范圍是 0 255 這里使用晶振 12M 精確延時請使用匯編 大致延時 長度如下 T tx2 5 uS void DelayUs2x unsigned char t while t mS 延時函數(shù) 含有輸入?yún)?shù) unsigned char t 無返回值 unsigned char 是定義無符號字符變量 其值的范圍是 0 255 這里使用晶振 12M 精確延時請使用匯編 void DelayMs unsigned char t while t 大致延時 1mS DelayUs2x 245 DelayUs2x 245 include eeprom h include delay h void Start void I2 開始 SDA 1 SCL 1 NOP4 SDA 0 NOP4 SCL 0 void Stop void I2C 停止 SDA 0 SCL 0 NOP4 SCL 1 NOP4 SDA 1 void RACK void 讀取應答 SDA 1 NOP4 SCL 1 NOP4 SCL 0 void NO ACK void 發(fā)送非應答信號 SDA 1 SCL 1 NOP4 SCL 0 SDA 0 void Write A Byte uchar b 寫一個字節(jié)數(shù)據(jù) uchar i for i 0 i 8 i b 1 SDA CY CY 進位程序狀態(tài)字寄存器 nop SCL 1 NOP4 SCL 0 RACK void Write IIC uchar addr uchar dat 向指寫地地址寫數(shù)據(jù) Start Write A Byte 0 xa0 Write A Byte addr Write A Byte dat Stop DelayMs 10 uchar Read A Byte void 讀取一個字節(jié) uchar i b for i 0 i 8 i SCL 1 b 4 0 x0f switch temp 橫行 case 1 keyno 0 A break 第一行橫行 case 2 keyno 4 B break 第一行橫行 case 4 keyno 8 C break 第一行橫行 case 8 keyno 12 D break 第一行橫行 P1 0 x0f return keyno include LCD H void write com unsigned char com 寫命令 RS CLR RW CLR P0 com DelayMs 5 EN SET DelayMs 5 EN CLR void write data unsigned char date 寫一個字符 RS SET RW CLR P0 date DelayMs 5 EN SET DelayMs 5 EN CLR void init 初始化 write com 0 x38 write com 0 x0c write com 0 x06 write com 0 x01 寫入字符串函數(shù) void LCD Write String unsigned char x unsigned char y unsigned char s if y 0 write com 0 x80 x else write com 0 xC0 x while s write data s s 寫入字符函數(shù) void LCD Write Char unsigned char x unsigned char y unsigned char Data if y 0 write com 0 x80 x else write com 0 xC0 x write data Data include include include lcd h include key h include delay h include eeprom h void int0 void unsigned char password 6 0 x01 0 x01 0 x01 0 x01 0 x01 0 x01 unsigned char password1 6 unsigned char code aa Password unsigned char code gg New unsigned char code bb ERROR unsigned char code cc OK unsigned char code dd unsigned char code ee Next unsigned char code ff success unsigned char keydata main unsigned char i j k l m n o a1 for i 0 i 6 i Write IIC i password i init LCD 初始化 int0 P3 6 0 P3 7 0 P1 0 x0f LCD Write String 0 0 aa LCD Write String 1 1 dd write com 0 xc0 1 while 1 start LCD Write String 0 0 aa LCD Write String 1 1 dd write com 0 xc0 1 while 1 if 0keydata 4keydata 8keyd ata keydata 14 在 0 9 之間的數(shù)字通過 password i keydata 鍵盤值進行保存 keydata 0 把鍵盤值置其它值 不被其它利用 以一樣 i write data 在 LCD 上顯示 這字符代表輸入了一個密碼 if i 6 這里限制了六位密碼 i 0 goto panduan if keydata 33 確定進入密碼比較 keydata 0 panduan i 0 for j 0 j 6 j l password j k Random Read j if l k 密碼不同進行處理 l 0 k 0 LCD Write String 0 0 bb DelayMs 1000 a1 1 if a1 2 while 1 P3 7 1 P3 6 0 兩次錯誤發(fā)出報警 goto start 第二次輸入密碼 if l k 密碼對了 進入運行狀態(tài) 這里綠燈代表該狀態(tài) l 0 k 0 a1 0 P3 6 1 P3 7 0 LCD Write String 0 0 cc LCD Write String 1 1 dd if o 1 o 0 LCD Write String 0 0 gg LCD Write String 4 0 aa LCD Write String 1 1 dd write com 0 xc0 1 goto text2 goto yingxing 跳到下面函數(shù)中 yingxing 里 yingxing while 1 if keydata 4 鎖定功能 P3 6 0 goto start if keydata 15 修改密碼 o if o 1 goto start text2 keydata 0 while 1 if 0keydata 4keydata 8keyd ata keydata 14 上面表達式 0 9 之間的數(shù)字通過 password m keydata 讀取鍵盤值 keydata 0 m write data if m 6 到密碼輸入到六位的時候進行判斷是否再輸 入 或者判斷前后兩次密碼是否一致 m 0 n if n 2 goto panduan1 輸入第二次的時候進行前后兩次 密碼進判斷 for i 0 i 6 i 儲存前一次密碼 password1 i password i LCD Write String 1 1 dd LCD Write String 0 0 ee DelayMs 1000 LCD Write String 0 0 aa write com 0 xc0 1 if keydata 13 重新輸入改密 text m 0 n 0 LCD Write String 1 1 dd write com 0 xc0 1 if keydata 33 退出不改密碼 out m 0 n 0 o 0 LCD Write String 0 0 cc LCD Write String 1 1 dd goto yingxing if keydata 33 keydata 0 panduan1 for j 0 j 6 j 第一次與第二次密碼比較 l password j k password1 j if l k 第一次與第二次密碼輸入錯誤 l 0 k 0 LCD Write String 0 0 bb DelayMs 1000 LCD Write String 0 0 aa goto text else for i 0 i 6 i Write IIC i password i LCD Write String 0 0 ff DelayM

溫馨提示

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

最新文檔

評論

0/150

提交評論