基于單片機(jī)的電子密碼鎖設(shè)計(jì)(終稿)_第1頁(yè)
基于單片機(jī)的電子密碼鎖設(shè)計(jì)(終稿)_第2頁(yè)
基于單片機(jī)的電子密碼鎖設(shè)計(jì)(終稿)_第3頁(yè)
基于單片機(jī)的電子密碼鎖設(shè)計(jì)(終稿)_第4頁(yè)
基于單片機(jī)的電子密碼鎖設(shè)計(jì)(終稿)_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于單片機(jī)的電子密碼鎖設(shè)計(jì) 摘要:鎖,是指加在門(mén)、箱子、抽屜等物體上的封緘器,要用專(zhuān)用的鑰匙才能 打開(kāi)。自古以來(lái)鎖都是人們財(cái)產(chǎn)安全乃至生命安全的一種重要保障。伴隨著人 類(lèi)歷史的發(fā)展和人們對(duì)自身財(cái)產(chǎn)安全和人生安全的重視,各種各樣的多功能的 鎖具也相繼出現(xiàn),人們使用的鎖具也由傳統(tǒng)的機(jī)械式鎖逐漸發(fā)展為安全性能更 好,功能更多的電子密碼鎖。 在現(xiàn)代社會(huì),電子密碼鎖已是一個(gè)被大家所熟識(shí)的名詞。相信很多人的小 區(qū)大門(mén)上的鎖都用的是電子密碼鎖。本文中將要介紹的電子密碼鎖是一種通過(guò) 判斷密碼輸入是否正確來(lái)控制電路或是芯片的工作狀態(tài),進(jìn)而控制鎖的打開(kāi)和 閉合,從而完成開(kāi)鎖、閉鎖任務(wù)的電子鎖裝置。 本設(shè)計(jì)是基于

2、at89c51 單片機(jī)為控制核心的密碼鎖設(shè)計(jì)方案。在本次基 于單片機(jī)的電子密碼鎖設(shè)計(jì)中,將采用at89c51 單片機(jī)作為控制核心,配 合相應(yīng)的電路和軟件程序,實(shí)現(xiàn)密碼的輸入和修改、信息的顯示、鍵盤(pán)的鎖 定、系統(tǒng)報(bào)警、開(kāi)鎖和閉鎖等功能。在設(shè)計(jì)中, 利用識(shí)別密碼是否正確來(lái)開(kāi) 鎖或報(bào)警,通過(guò)串行存儲(chǔ)器 at24c02 來(lái)實(shí)現(xiàn)密碼的修改和存儲(chǔ)。 本文設(shè)計(jì)的密碼鎖具有安全性高、功耗低、操作簡(jiǎn)單等優(yōu)點(diǎn)。 關(guān)鍵詞:單片機(jī);密碼鎖;電子鎖;矩陣鍵盤(pán);掉電存儲(chǔ) the design of electronic code lock based on single chip microcomputer abstra

3、ct:as sealed device, the lock added to such objects like door, box, drawer etc, can be opened with specified key. since the ancient time, lock is a kind of security, guaranteeing peoples property safety even life safety. with the development of human history and more attention paid to property safet

4、y and life safety, various multi-functional locks can be seen in the world. traditional mechanical locks people use in life are gradually replaced by electronic combination lock characterized with better safety performance and more functions. in the modern society, electronic combination lock is a n

5、oun familiar to everyone. usually, the door of community is equipped with electronic combination lock. this paper will introduce an electronic combination lock. this lock controls the electric circuits and the performance of chips by identifying password. thus, the openness and closeness of the lock

6、 can be controlled, and the task of electronic lock device can be completed. this design is about combination lock, based on the at89c51 single-chip microcomputer as the core of controlling goals. this design in which the at89c51 single-chip microcomputer as the core of the controlling goals coopera

7、ted with relevant circuits and software programs can achieve such functions like password input and modification, information display, keyboard locking, warning system, and the openness and closeness of the lock etc. in this design, the openness of lock and alarming are according to identifying the

8、password, and password revision and storage is achieved by the function of the at24c02 serial storage. electronic combination lock described in this paper is characterized with high security, low power consumption, and simplicity of operation etc. keywords: single-chip microcomputer, combination loc

9、k, electronic lock, matrix keyboard, power lost storage 目錄 第 1 章 緒論.1 1.1 電子密碼鎖簡(jiǎn)介.1 1.2 電子密碼鎖設(shè)計(jì)的背景及意義.1 1.3 電子密碼鎖的現(xiàn)狀及發(fā)展趨勢(shì).2 第 2 章 總體設(shè)計(jì).3 2.1 設(shè)計(jì)分析.3 2.2 系統(tǒng)結(jié)構(gòu).4 第 3 章 硬件電路設(shè)計(jì).5 3.1 單片機(jī)接口分配.5 3.2 單片機(jī)最小系統(tǒng)設(shè)計(jì).5 3.2.1 時(shí)鐘電路.5 3.2.2 復(fù)位電路.6 3.2.3 最小系統(tǒng).6 3.3 矩陣鍵盤(pán)設(shè)計(jì).7 3.4 lcd 顯示模塊設(shè)計(jì).8 3.5 掉電存儲(chǔ)模塊.10 3.5.1 i2c 總線.

10、10 3.5.2 at24c02 簡(jiǎn)介.12 3.6 開(kāi)鎖機(jī)構(gòu).13 3.7 報(bào)警機(jī)構(gòu).13 3.8 硬件綜合設(shè)計(jì).14 第 4 章 軟件設(shè)計(jì).15 4.1 軟件總體設(shè)計(jì).15 4.2 鍵盤(pán)掃描子程序.16 4.3 顯示模塊子程序 .18 4.4 掉電存儲(chǔ)子程序.20 4.4.1 寫(xiě)操作方式.21 4.4.2 讀操作方式.22 4.5 定時(shí)器中斷子程序.23 4.6 密碼輸入子程序.25 4.7 報(bào)警子程序.26 第 5 章 聯(lián)合仿真和調(diào)試.27 第 6 章 實(shí)物設(shè)計(jì)和制作.29 總結(jié).31 致謝.32 參考文獻(xiàn).33 附錄 1 設(shè)計(jì)實(shí)物圖.34 附錄 2 程序源代碼.36 第 1 章 緒論

11、1.1 電子密碼鎖簡(jiǎn)介 什么是電子密碼鎖?“一種通過(guò)密碼輸入來(lái)控制電路或者是芯片工作,從而 控制機(jī)械開(kāi)關(guān)的閉合,完成開(kāi)鎖、閉鎖任務(wù)的電子產(chǎn)品。 ”百度百科上是這 樣解釋的。簡(jiǎn)單來(lái)說(shuō),電子密碼鎖就是能夠?qū)崿F(xiàn)密碼等信息的設(shè)置、存貯、識(shí) 別和顯示,以及報(bào)警信號(hào)的接收和發(fā)送等功能的電子器件。 電子密碼鎖相對(duì)傳統(tǒng)機(jī)械鎖有以下幾個(gè)優(yōu)勢(shì): (1)密碼可更改。用戶(hù)可以隨時(shí)更改密碼,以確保密碼鎖的安全性和可靠性。 可以更改密碼這一功能同時(shí)也避免了人員的更替而使鎖的安全性降低,這是傳 統(tǒng)鑰匙鎖所不具備的功能。 (2)操作簡(jiǎn)單。無(wú)論是開(kāi)鎖還是更改密碼,只要識(shí)字的人都能夠直接使用, 使用方法簡(jiǎn)單而不繁瑣。 (3)能夠

12、報(bào)警。報(bào)警功能無(wú)疑更增加了鎖的安全性。 (4)無(wú)法“技術(shù)”破解。不知道密碼就無(wú)法打開(kāi)鎖,即使是慣偷也只能望“鎖” 興嘆。 1.2 電子密碼鎖設(shè)計(jì)的背景及意義 在現(xiàn)代文明社會(huì),雖然人們的道德素質(zhì)越來(lái)越高, “梁上君子”、 “三只手”等 人群相對(duì)舊社會(huì)大大減少,但是像“某某小區(qū)遭入室行竊,居民損失 xxxx”之 類(lèi)的新聞我們還是經(jīng)常能夠在報(bào)紙上看到的。隨著人們生活水平和自身防范意 識(shí)的提高,個(gè)人財(cái)產(chǎn)安全和人身安全的問(wèn)題也越來(lái)越受到人們的重視,擁有一 把能夠有效保證居民財(cái)產(chǎn)安全和人身安全的鎖具也越發(fā)的重要起來(lái)。 鎖具的起源可以追朔到人類(lèi)社會(huì)財(cái)產(chǎn)私有化的出現(xiàn),鎖具從其出現(xiàn)到發(fā)展 至今天的高科技化、信息

13、化,已經(jīng)有若干年的歷史了。經(jīng)過(guò)若干年的使用和研 究,人們對(duì)鎖具的結(jié)構(gòu)、機(jī)理也了解得相當(dāng)透徹了,因此,不使用鑰匙就能將 鎖打開(kāi)的方法也層出不窮。特別是傳統(tǒng)的機(jī)械鎖,由于其構(gòu)造簡(jiǎn)單,在慣偷面 前,甚至能夠只用一根鐵絲就直接將其打開(kāi),使其失去了保障用戶(hù)個(gè)人財(cái)產(chǎn)安 全的意義。 那么,如何才能提高鎖具保障用戶(hù)財(cái)產(chǎn)安全的有效性呢?在信息現(xiàn)代化的 今天,鎖具也應(yīng)該向高精度、高安全性的智能化、信息化發(fā)展。自 20 世紀(jì) 70 年代第一塊單片機(jī)芯片 tms-1000 于美國(guó)德克薩斯儀器公司面世以來(lái),基于其 體積小、價(jià)格低廉、個(gè)性突出等特點(diǎn),越來(lái)越多的電子產(chǎn)品開(kāi)始采用單片機(jī)芯 片作為核心控制部件。在這樣的大環(huán)境下

14、,基于單片機(jī)的電子密碼鎖也應(yīng)運(yùn)而 生。這種電子密碼鎖是以單片機(jī)為核心,配以相應(yīng)的硬件電路和軟件程序, 實(shí)現(xiàn)密碼的設(shè)置、存貯、識(shí)別和顯示,以及報(bào)警信號(hào)的接收和發(fā)送等功能, 具有操作快、修改密碼簡(jiǎn)單、 安全性高、功耗低等優(yōu)點(diǎn)?;趩纹瑱C(jī)的電子 密碼鎖的面世 使人們的自身財(cái)產(chǎn)安全有了更多的保障,同時(shí)也促進(jìn)了安全信息 系統(tǒng)的發(fā)展,是安全信息系統(tǒng)的一大進(jìn)步。 基于單片機(jī)的電子密碼鎖的出現(xiàn),在一定程度上解決了用戶(hù)私人財(cái)產(chǎn)安全 的問(wèn)題。但是,時(shí)代在發(fā)展,社會(huì)在進(jìn)步,任何事物只有不斷地進(jìn)步才能適應(yīng) 時(shí)代發(fā)展的需求。電子密碼鎖雖然有安全性高、操作簡(jiǎn)單等優(yōu)點(diǎn),但是卻不如 機(jī)械鎖價(jià)格低廉,因此,在市場(chǎng)上的主流產(chǎn)品還

15、是機(jī)械鎖。電子密碼鎖要想取 代機(jī)械鎖成為市場(chǎng)上的主流,就必須不斷改進(jìn),在具有更多功能的同時(shí)向更智 能化和更低成本化發(fā)展。這就需要我們不斷研究電子密碼鎖的設(shè)計(jì)方法和實(shí)現(xiàn) 原理。因此,研究基于單片機(jī)的電子密碼鎖的設(shè)計(jì)是很有必要且具有現(xiàn)實(shí)意義 的。 1.3 電子密碼鎖的現(xiàn)狀及發(fā)展趨勢(shì) 目前,和西方發(fā)達(dá)國(guó)家相比,我國(guó)的電子密碼鎖技術(shù)還相對(duì)落后。在西方 發(fā)達(dá)國(guó)家,電子密碼鎖的種類(lèi)已經(jīng)很齊全,技術(shù)也比較先進(jìn),且在各個(gè)領(lǐng)域得 到了廣泛應(yīng)用。在我國(guó),電子密碼鎖技術(shù)卻才相當(dāng)于國(guó)際上七十年代的水平, 相對(duì)來(lái)說(shuō)還很落后。20 世紀(jì) 80 年代以來(lái),隨著各種電子集成電路的出現(xiàn),特 別是單片機(jī)的面世,電子密碼鎖得到了很

16、大的發(fā)展。相對(duì)于笨重而構(gòu)造簡(jiǎn)單的 傳統(tǒng)機(jī)械鎖來(lái)說(shuō),電子密碼鎖具有體積小,可靠性高的優(yōu)勢(shì)。但是就目前而言, 電子密碼鎖的價(jià)格相對(duì)較高且需要有電源提供能量,使得其使用還局限在一定 范圍,特別是在國(guó)內(nèi),各種條件的制約使得電子密碼鎖暫時(shí)難以普及。 盡管電子密碼鎖還存在著一些缺陷,但是其安全性高、方便易用、能夠智 能報(bào)警的優(yōu)勢(shì)卻是傳統(tǒng)鑰匙鎖取代不了的,而且隨著電子信息技術(shù)的發(fā)展和各 種電子器件的價(jià)格的不斷降低,電子密碼鎖也將往低成本、多功能的方向發(fā)展。 第 2 章 總體設(shè)計(jì) 2.1 設(shè)計(jì)分析 一個(gè)電子密碼鎖,應(yīng)該能實(shí)現(xiàn)以下功能: (1)能夠從鍵盤(pán)中輸入密碼,并相應(yīng)地在顯示器上顯示 *; (2)能夠判斷密

17、碼是否正確,正確則開(kāi)鎖,錯(cuò)誤則輸出相應(yīng)信息; (3)能夠?qū)崿F(xiàn)密碼的修改; (4)斷電或者單片機(jī)復(fù)位后能夠保存之前的操作,比如密碼的修改; (5)在操作錯(cuò)誤達(dá)到一定次數(shù)后能夠報(bào)警; (6)在一定時(shí)間內(nèi)沒(méi)有任何按鍵操作則關(guān)閉顯示器,并鎖定鍵盤(pán),禁止鍵盤(pán) 輸入(單片機(jī)復(fù)位后鎖定取消) ; (7)設(shè)置一個(gè)備用密碼。為了防止用戶(hù)忘記密碼而開(kāi)不了鎖,應(yīng)該在經(jīng)常使 用的密碼外再設(shè)置一個(gè)備用密碼以防萬(wàn)一。此備用密碼應(yīng)該只有少數(shù)人知道, 比如小區(qū)管理員。 根據(jù)以上分析,本次電子密碼鎖設(shè)計(jì)的主要重點(diǎn)是以下幾個(gè)部分:4x4 矩陣 鍵盤(pán)設(shè)計(jì)、lcd 信息顯示、密碼的掉電存儲(chǔ)和密碼的比較和處理。當(dāng)然,除了 這幾個(gè)部分外

18、還有定時(shí)器/計(jì)數(shù)器計(jì)時(shí)中斷和報(bào)警等功能模塊。 本設(shè)計(jì)應(yīng)該按以下步驟去實(shí)現(xiàn): 第一步:選擇材料和器件。 第二步:根據(jù)單片機(jī)原理和模擬電子技術(shù)基礎(chǔ)等理論知識(shí)在 proteus 中畫(huà)出仿真圖。 第三步:檢查仿真圖,確保其能夠?qū)崿F(xiàn)所有功能。 第四步:根據(jù)需要實(shí)現(xiàn)的功能邏輯畫(huà)出程序流程圖。 第五步:根據(jù)程序流程圖和 proteus 仿真圖,使用 keil 軟件進(jìn)行程序 的編寫(xiě)和調(diào)試。 第六步:將 keil 和 proteus 聯(lián)合仿真、調(diào)試,查看是否實(shí)現(xiàn)所有功能。 第七步:根據(jù) proteus 仿真圖焊接器件。 第八步:實(shí)物調(diào)試。 基于實(shí)際情況,在設(shè)計(jì)中,用發(fā)光二極管代替電磁鎖,二極管亮則代表鎖 開(kāi),二

19、極管不亮則代表鎖關(guān)。 2.2 系統(tǒng)結(jié)構(gòu) 本設(shè)計(jì)系統(tǒng)主要由單片機(jī)芯片、矩陣鍵盤(pán)、lcd 顯示模塊、掉電存儲(chǔ)模塊、 報(bào)警機(jī)構(gòu)和開(kāi)鎖機(jī)構(gòu)組成。如圖 2-1 所示。 單片機(jī) 時(shí)鐘電路 復(fù)位電路 矩陣鍵盤(pán) lcd 顯示 掉電存儲(chǔ) 開(kāi)鎖機(jī)構(gòu) 報(bào)警機(jī)構(gòu) 圖圖 2-1 系統(tǒng)總體設(shè)計(jì)結(jié)構(gòu)圖系統(tǒng)總體設(shè)計(jì)結(jié)構(gòu)圖 時(shí)鐘電路給單片機(jī)提供晶振頻率,復(fù)位電路不但使單片機(jī)上電復(fù)位,還能 在使用過(guò)程中通過(guò)需要通過(guò)按鍵再次手動(dòng)復(fù)位,矩陣鍵盤(pán)提供按鍵的輸入, lcd 模塊顯示信息,掉電存儲(chǔ)負(fù)責(zé)密碼的存儲(chǔ),開(kāi)鎖機(jī)構(gòu)和報(bào)警機(jī)構(gòu)分別負(fù)責(zé) 開(kāi)鎖和報(bào)警功能。 設(shè)計(jì)中,單片機(jī)選用 at89c51,lcd 顯示模塊選用 lcd1602 液晶顯示

20、器, 串行存儲(chǔ)器選用電可擦除存儲(chǔ)器 at24c02,開(kāi)鎖機(jī)構(gòu)用發(fā)光二極管代替,報(bào)警 機(jī)構(gòu)選用蜂鳴器。 第 3 章 硬件電路設(shè)計(jì) 3.1 單片機(jī)接口分配 at89c51 單片機(jī)在一塊芯片上集成了 cpu、ram、rom、定時(shí)器/計(jì)數(shù)器 和多種 i/o 功能部件,具有一臺(tái)微型計(jì)算機(jī)的基本結(jié)構(gòu),按功能可以將其分成 八個(gè)組成部分:微處理器(cpu) 、數(shù)據(jù)存儲(chǔ)器(ram) 、程序存儲(chǔ)器 (rom/eprom) 、特殊功能寄存器(sfr) 、i/o 口、串行口、定時(shí)器/計(jì)數(shù)器 及中斷系統(tǒng)。 在本設(shè)計(jì)中,單片機(jī)的各個(gè)接口我是這樣分配的:p0 口接一個(gè)上拉電阻后 與 lcd1602 的 8 位雙向數(shù)據(jù)端 d

21、0d7 相接,p1 口用作矩陣鍵盤(pán)接口, p2 口的 p2.0p2.2 和 lcd1602 的 46 引腳相接, p2.5 和 p2.6 接串行存儲(chǔ)器 at24c02,p3 口用作開(kāi)鎖電路和報(bào)警電路的接口。 3.2 單片機(jī)最小系統(tǒng)設(shè)計(jì) 單片機(jī)最小系統(tǒng)就是指能使單片機(jī)工作的最少的器件構(gòu)成的系統(tǒng)。因?yàn)?單片機(jī)已經(jīng)包含了數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器,所以只要在其外部加上時(shí)鐘電 路和復(fù)位電路就可以構(gòu)成單片機(jī)最小系統(tǒng)。 3.2.1 時(shí)鐘電路 單片機(jī)工作需要晶振給 cpu 提供頻率,時(shí)鐘電路就是給單片機(jī)提供晶振 頻率的電路。圖 3-1 是時(shí)鐘電路的 proteus 仿真圖。 圖圖 3-1 時(shí)鐘電路時(shí)鐘電路 單片

22、機(jī)允許的振蕩晶體可在 1.224mhz 之間選擇,一般為 11.0592mhz,電容 c2,c3 的取值對(duì)振蕩頻率輸出的穩(wěn)定性、大小及振蕩電路 起振速度有一定的影響,可在 20100pf 之間選擇,典型值位 30pf。 3.2.2 復(fù)位電路 計(jì)算機(jī)每次開(kāi)始工作, cpu 和系統(tǒng)中的其他部件都必須要有一個(gè)確定的 初值,即復(fù)位狀態(tài)。圖 3-2 是單片機(jī)復(fù)位電路仿真圖。 圖圖 3-2 復(fù)位電路復(fù)位電路 單片機(jī) rst 引腳是高電平有效。單片機(jī)在上電瞬間 c1 充電,rst 引腳端 出現(xiàn)正脈沖,只要 rst 斷保持兩個(gè)機(jī)械周期(大約 10ms)以上的高電平,單 片機(jī)就能復(fù)位。在單片機(jī)工作后,如果還想再

23、次復(fù)位,只需按下開(kāi)關(guān),單片機(jī) 就能重新變成復(fù)位狀態(tài)。 當(dāng)晶體振蕩頻率為 12mhz 時(shí),rc 的典型值為 c=10f,r=8.2k。 3.2.3 最小系統(tǒng) 單片機(jī)加上時(shí)鐘電路和復(fù)位電路就構(gòu)成了能使其正常工作的最小系統(tǒng)。 單片機(jī)最小系統(tǒng)是單片機(jī)正常工作的基礎(chǔ),任何一個(gè)單片機(jī)系統(tǒng)設(shè)計(jì)都是 基于單片機(jī)最小系統(tǒng)的基礎(chǔ)上來(lái)完成的,而在單片機(jī)系統(tǒng)實(shí)物設(shè)計(jì)中,最應(yīng)該 首先解決的也應(yīng)該是單片機(jī)最小系統(tǒng)問(wèn)題,只有保證了單片機(jī)最小系統(tǒng)的正確 性,才能保證接下來(lái)的其他模塊的正確設(shè)計(jì)。 圖 3-3 是單片機(jī)最小系統(tǒng)的完整仿真圖。 圖圖 3-3 單片機(jī)最小系統(tǒng)單片機(jī)最小系統(tǒng) 3.3 矩陣鍵盤(pán)設(shè)計(jì) 一組鍵或者一個(gè)鍵盤(pán),需

24、要通過(guò)接口電路和 cpu 相連接,cpu 可以采用查 詢(xún)接口或者中斷的方式了解有沒(méi)有鍵被按下,并檢查是哪個(gè)鍵被按下。無(wú)論是 查詢(xún)方式還是中斷方式都要用到單片機(jī)的 i/o 口。由于單片機(jī) i/o 口較少的原 因,當(dāng)系統(tǒng)中需要用到較多按鍵時(shí),為了能夠更合理更有效地利用單片機(jī)的 i/o 口,一般采用矩陣鍵盤(pán)的方式來(lái)實(shí)現(xiàn)多按鍵的功能。 圖 3-4 是 4x4 矩陣鍵盤(pán)在 proteus 中的電路原理仿真圖。 圖圖 3-4 4x4 矩陣鍵盤(pán)矩陣鍵盤(pán) 矩陣鍵盤(pán)又叫做行列式鍵盤(pán)。行列式鍵盤(pán)的硬件結(jié)構(gòu)比較簡(jiǎn)單,由行輸出 口和列輸出口構(gòu)成行列式鍵盤(pán),按鍵設(shè)置在行、列交點(diǎn)上。圖 3-4 中, p1.0p1.3 是

25、行輸出口, p1.4p1.7 是列輸出口。行輸出口和列輸出口不相 交,只有當(dāng)鍵被按下時(shí)相應(yīng)的行和列才能相連。如此,只要檢測(cè)行和列是否 相連就可以知道是否有鍵按下。 由于按鍵設(shè)置在行、列線交點(diǎn)上,行、列分別連接到按鍵開(kāi)關(guān)的兩端, 平時(shí)無(wú)鍵按下時(shí),行線處于高電平,假設(shè)列線為低電平,當(dāng)有鍵按下時(shí),按 下的鍵就會(huì)將相應(yīng)的行和列連通,使得對(duì)應(yīng)的行線被列線拉低,也變?yōu)榈碗?平。這就是識(shí)別矩陣鍵盤(pán)是否有鍵被按下的關(guān)鍵。 當(dāng)確定有鍵被按下時(shí),通過(guò)逐行掃描,讀出i/o 口的值可以知道哪一行 的值被改變了,被改變了的行即是被按下的按鍵所在行。同時(shí),由于每個(gè)鍵 都有它的行值和列值,行值和列值得組合就是這個(gè)按鍵的編碼

26、,當(dāng)算法一定 時(shí),每個(gè)按鍵的編碼是固定的,且各個(gè)按鍵的編碼互不相同,所有通過(guò)讀 i/o 的值還能具體知道是哪一個(gè)鍵被按下,這樣就實(shí)現(xiàn)了鍵盤(pán)的識(shí)別。 3.4 lcd 顯示模塊設(shè)計(jì) 在單片機(jī)應(yīng)用系統(tǒng)中,常用的顯示設(shè)備有單個(gè)發(fā)光二極管、八段led 顯示器、液晶顯示器( lcd) 、屏幕顯示器( crt)等。在本次設(shè)計(jì)中,基 于設(shè)計(jì)所要實(shí)現(xiàn)的功能和節(jié)約成本等實(shí)際情況,我采用lcd1602 作為本次 設(shè)計(jì)的顯示器。 lcd1602 是一種字符型液晶顯示器,是一種專(zhuān)門(mén)用于顯示字母、數(shù)字、 符號(hào)等的點(diǎn)陣式液晶顯示器。 lcd1602 的顯示容量為 16x2 個(gè)字符(可以 顯示 2 行,每行顯示 16 個(gè)字符

27、) ,芯片工作電壓為 4.55.5v,工作電流為 2.0ma(5.0v) ,模塊最佳工作電壓是 5.0v。 lcd1602 具有 16 個(gè)引腳,如表 3-1 所示。在 lcd1602 的有關(guān)設(shè)計(jì)中, 主要是通過(guò)編寫(xiě)程序控制 lcd1602 的 4、5、6 引腳來(lái)實(shí)現(xiàn)數(shù)據(jù)或者指令的 寫(xiě)入和執(zhí)行,再通過(guò)數(shù)據(jù)或者指令的寫(xiě)入和執(zhí)行來(lái)進(jìn)一步實(shí)現(xiàn)lcd1602 的 顯示功能。 表 3-1 是 lcd1602 的 16 個(gè)引腳和引腳對(duì)應(yīng)功能。 表表 3-1 lcd1602 引引腳腳說(shuō)說(shuō)明明 引腳號(hào) 引腳名 功能 1 vss電源地 2 vcc電源(+5v) 3 vee對(duì)比調(diào)整電壓 4 rs0:輸入指令; 1:

28、輸入數(shù)據(jù) 5 r/w0:向 lcd 寫(xiě)指令或者數(shù)據(jù); 1:從 lcd 讀取信息 6 e使能信號(hào),1:讀取信息, 10:執(zhí)行命令 7 db0數(shù)據(jù)總線(最低位) 8 db1數(shù)據(jù)總線 9 db2數(shù)據(jù)總線 10 db3數(shù)據(jù)總線 11 db4數(shù)據(jù)總線 12 db5數(shù)據(jù)總線 13 db6數(shù)據(jù)總線 14 db7數(shù)據(jù)總線(最高位) 15 alcd 背光電源正極 16 klcd 背光電源負(fù)極 作為一個(gè)字符型液晶顯示器, lcd1602 內(nèi)部自帶有一個(gè)字符發(fā)生存儲(chǔ)器, 此字符發(fā)生存儲(chǔ)器就相當(dāng)于一個(gè)字符集。 lcd1602 的字符集中存有 160 個(gè) 不同的字符,這些字符包括了英文大小寫(xiě)字母、阿拉伯?dāng)?shù)字、標(biāo)點(diǎn)符號(hào)等

29、一 些經(jīng)常用到的字符。字符集中的每一個(gè)字符都對(duì)應(yīng)有一個(gè)固定的ascii 碼 值,通過(guò)顯示 ascii 碼對(duì)應(yīng)的字符圖像就能夠?qū)崿F(xiàn)對(duì)應(yīng)字符的顯示。 圖 3-5 是 proteus 中顯示模塊的仿真圖。 由于 lcd 要正常工作必須提供足夠的電流,因此在實(shí)際應(yīng)用為了保證顯 示器能夠正常工作,應(yīng)在數(shù)據(jù)端口接一上拉電阻。圖3-5 中 rp1 同時(shí)還是 p0 口的上拉電阻。 圖圖 3-5 lcd 模模塊塊仿仿真真圖圖 3.5 掉電存儲(chǔ)模塊 3.5.1 i2c 總線 i2c 總線為同步串行數(shù)據(jù)傳輸總線,用于單片機(jī)的外圍擴(kuò)展。i2c 總線 上所有的外圍器件都有規(guī)范的器件地址,器件地址有7 位組成,它和 1

30、位 方向?yàn)闃?gòu)成了 i2c 總線器件的尋址字節(jié)。尋址字節(jié)格式如下: 表表 3-2 i2c 尋尋址址格格式式 d7d6d5d4a2a1a0r/error ! d7d4 是 i2c 總線的器件地址,由廠家在器件出廠時(shí)給定 ,對(duì)于 at24c 系列固定為 1010。a2a0 根據(jù)電路中 a2,a1,a0 引腳接電源或 者接地而不同,接地則相應(yīng)位為 0,接電源則相應(yīng)位為 1。r/error!位為 i2c 總線的數(shù)據(jù)方向位,決定 i2c 總線的數(shù)據(jù)傳送方向,高電平為接收,低 電平為發(fā)送。 圖 3-6 為 i2c 總線的數(shù)據(jù)傳送時(shí)序。 123456789 ack scl sda p 起始信號(hào) 停止信號(hào) 圖圖

31、 3-6 i2c 總總線線數(shù)數(shù)據(jù)據(jù)傳傳送送時(shí)時(shí)序序 起始信號(hào):時(shí)鐘線 scl 為高電平,數(shù)據(jù)線 sda 出現(xiàn)由高向低的負(fù)跳變 時(shí),啟動(dòng) i2c 總線。 停止信號(hào):時(shí)鐘線 scl 為高電平,數(shù)據(jù)線 sda 出現(xiàn)由低向高的正跳變 時(shí),停止 i2c 總線。 應(yīng)答信號(hào)位 ack:i2c 總線進(jìn)行數(shù)據(jù)傳送時(shí),每成功傳送一個(gè)字節(jié)的數(shù) 據(jù)后,接收器件都必然產(chǎn)生一個(gè)應(yīng)答信號(hào),即在第9 個(gè)時(shí)鐘周期時(shí)將 sda 1 5 2 6 at24c01 3 7 4 8 a0 a1 a2 vss vcc wp scl sda 線拉低,表示其已經(jīng)成功接收到一個(gè)8 個(gè)數(shù)據(jù)。圖 3-6 中的第 9 個(gè)時(shí)鐘脈 沖對(duì)應(yīng)于應(yīng)答位。應(yīng)答位

32、對(duì)應(yīng)的數(shù)據(jù)線sda 上是低電平時(shí)為應(yīng)答信號(hào),是 高電平則為非應(yīng)答信號(hào)。為非應(yīng)答信號(hào)時(shí),證明器件沒(méi)有成功接收到一個(gè) 8 位數(shù)據(jù)。 數(shù)據(jù)傳送位:圖 3-6 中的第 18 個(gè)時(shí)鐘脈沖為一個(gè)字節(jié)的 8 位數(shù)據(jù)傳 送位。脈沖為高電平時(shí),串行傳送數(shù)據(jù);脈沖為低電平時(shí),不傳送數(shù)據(jù),允 許總線上數(shù)據(jù)線 sda 的電平發(fā)生變化。在 i2c 數(shù)據(jù)傳輸過(guò)程中,只有當(dāng) scl 為低電平時(shí)才允許 sda 變化,當(dāng) scl 為高電平時(shí),不允許 sda 電平 改變。當(dāng)然,起始信號(hào)和停止信號(hào)是例外。因此,當(dāng)scl 為高電平時(shí), sda 的變化被看成是起始信號(hào)或者停止信號(hào)。 3.5.2 at24c02 簡(jiǎn)介 at24c02 是

33、 atmel 公司生產(chǎn)的 at24cxx 系列串行 e2prom 中的一種, 是具有 i2c 總線接口功能的電可擦除串行存儲(chǔ)器。 at24c02 內(nèi)部含有 256 個(gè)字節(jié),通過(guò) i2c 總線接口進(jìn)行操作,有一個(gè)專(zhuān)門(mén)的寫(xiě)保護(hù)功能( wp=1 時(shí)即為寫(xiě)保護(hù)) 。 圖 3-7 是 at24c02 的引腳排列圖。 其引腳功能如下: a0a2:器件地址輸入端。 在本設(shè)計(jì)中, a0a2 都接地, 故其值都為 0。 vcc:+1.86.0v 工作電壓。 vss:地或電源負(fù)極。 圖圖 3-7 at24c02 引引腳腳 scl:串行時(shí)鐘輸入端。數(shù)據(jù)發(fā)送或者接收的時(shí)鐘從此引腳輸入。 sda:串行/數(shù)據(jù)地址線。用于

34、傳送地址和發(fā)送或者接收數(shù)據(jù),是雙向傳 送端口。 wp:寫(xiě)保護(hù)端。 wp=1 時(shí),只能讀出,不能寫(xiě)入; wp=0 時(shí),允許正 常的讀寫(xiě)操作。 圖 3-8 為 proteus 中 e2prom 的仿真圖。 圖圖 3-8 at24c02 仿仿真真圖圖 p2.5 為串行時(shí)鐘輸入線接口, p2.6 為數(shù)據(jù)線接口。 a0,a1,a2 接地, 所以單片機(jī)在讀 at24c02 時(shí),器件地址為: 10100001b=0a1h;在寫(xiě) at24c02 時(shí),器件地址為: 10100000b=0a0h。wp=0,允許單片機(jī)進(jìn)行讀 寫(xiě)操作。 3.6 開(kāi)鎖機(jī)構(gòu) 在基于單片機(jī)的電子密碼鎖設(shè)計(jì)中,用戶(hù)需要輸入密碼,密碼正確則發(fā)

35、 出開(kāi)鎖信號(hào)開(kāi)鎖。 因?yàn)樵谠O(shè)計(jì)中是以發(fā)光二極管代替電磁鎖,二極管亮代表鎖開(kāi),因此可 以設(shè)計(jì)一個(gè)簡(jiǎn)單的可以點(diǎn)亮二極管的電路系統(tǒng)代替電磁鎖開(kāi)鎖機(jī)構(gòu)。如圖 3-9 所示。 圖圖 3-9 二二極極管管電電路路 由于單片機(jī) i/o 口默認(rèn)為高電平,故初始時(shí)二極管不亮,代表鎖是閉著 的。當(dāng)用戶(hù)輸入密碼并驗(yàn)證正確時(shí),發(fā)出開(kāi)鎖信號(hào)(使p3.6=0) 。 3.7 報(bào)警機(jī)構(gòu) 在這次基于單片機(jī)的電子密碼鎖設(shè)計(jì)中,通過(guò)控制蜂鳴器的發(fā)音來(lái)實(shí)現(xiàn) 系統(tǒng)的報(bào)警功能。 蜂鳴器是一種采用直流電壓供電的電子訊響器。圖3-10 是用蜂鳴器模 擬的報(bào)警機(jī)構(gòu)仿真圖。 圖圖 3-10 報(bào)報(bào)警警機(jī)機(jī)構(gòu)構(gòu)模模擬擬仿仿真真圖圖 當(dāng) p3.7 口

36、有脈沖信號(hào)輸入時(shí),蜂鳴器 speaker 即會(huì)發(fā)音。通過(guò)控制 輸入脈沖的頻率還能控制蜂鳴器的發(fā)音頻率。 當(dāng)用戶(hù)輸入密碼錯(cuò)誤次數(shù)達(dá)到預(yù)設(shè)警告次數(shù)時(shí),系統(tǒng)調(diào)用報(bào)警子程序, 使蜂鳴器發(fā)出報(bào)警音,同時(shí)禁止鍵盤(pán)輸入。 3.8 硬件綜合設(shè)計(jì) 根據(jù)電路原理,在 proteus 中畫(huà)出各功能模塊的仿真圖,各個(gè)功能模 塊驗(yàn)證正確后,將所有模塊集合到一個(gè)電路設(shè)計(jì)圖中,畫(huà)出具有所有功能的 總體硬件仿真圖。 圖 3-11 即為本設(shè)計(jì)的硬件綜合設(shè)計(jì)圖。 圖圖 3-11 基基于于單單片片機(jī)機(jī)的的電電子子密密碼碼鎖鎖設(shè)設(shè)計(jì)計(jì)仿仿真真圖圖 待程序編寫(xiě)好后,將 keil 和 proteus 聯(lián)調(diào),觀察此電路設(shè)計(jì)圖可以知道 各個(gè)

37、功能模塊和器件的工作情況。屆時(shí),根據(jù)實(shí)際情況可以適當(dāng)修改電路圖或 者程序,以達(dá)到設(shè)計(jì)的目的。 第 4 章 軟件設(shè)計(jì) 4.1 軟件總體設(shè)計(jì) 根據(jù)電子密碼鎖的實(shí)際應(yīng)用要求和其應(yīng)該具有的功能,本次設(shè)計(jì)的主程 序流程圖如圖 4-1 所示。 初始化 顯示輸入密碼界面 輸入密碼 密碼正確? 開(kāi)鎖 掃描功能鍵 有鍵輸入? 是改密鍵? 進(jìn)行改密操作 顯示歡迎回家界面 是閉鎖鍵? 進(jìn)行閉鎖操作 y n y n n y 開(kāi)啟定時(shí)中斷 次數(shù)5? 調(diào)用報(bào)警子程序 y n 圖圖 4-1 主主程程序序流流程程圖圖 此次基于單片機(jī)的電子密碼鎖設(shè)計(jì)的軟件設(shè)計(jì)方面的主要問(wèn)題是如何實(shí) 現(xiàn)鍵盤(pán)輸入、信息顯示、密碼的掉電存儲(chǔ)以及密碼

38、的比較和處理。本設(shè)計(jì)接 下來(lái)將分步解決這幾個(gè)問(wèn)題。 4.2 鍵盤(pán)掃描子程序 矩陣鍵盤(pán)掃描子程序應(yīng)該具有以下2 個(gè)基本的功能: (1)能判斷是否有 鍵按下;(2)能確定是哪個(gè)鍵被按下。其軟件管理主要分為以下三步來(lái)完成: (1) 判斷整個(gè)鍵盤(pán)是否有鍵按下。 讓所有的行為 0,然后讀列的數(shù)值。如果列的數(shù)值全部為1,說(shuō)明沒(méi)有 鍵被按下,否則說(shuō)明有鍵被按下。 (2) 識(shí)別被按下的鍵的位置。 采用一行一行的掃描方法,逐行輸出0,然后讀列的值。如果列的數(shù)值 全部為 1,說(shuō)明不是這一行的按鍵被按下,掃描下一行,如果列的數(shù)值不全 為 1,則說(shuō)明被按下的按鍵時(shí)在這一行。 (3) 查鍵值表,返回鍵值對(duì)應(yīng)信息,以便確

39、定各按鍵應(yīng)該完成的功能。 采用某種算法,將被按下的鍵所在的行和列的信息合并成為一個(gè)信息, 該信息即為此鍵的鍵值。用相同的方法給每一個(gè)鍵確定鍵值。在給按鍵確定 鍵值時(shí)必須采用同一種算法,并且計(jì)算出來(lái)的鍵值應(yīng)該是互不相同的。 本設(shè)計(jì)中各按鍵對(duì)應(yīng)鍵值如表 3 所示。 表表 4-1 按按鍵鍵鍵鍵值值表表 按鍵名稱(chēng)鍵值按鍵名稱(chēng)鍵值 1 0 x7e 9 0 x7d 2 0 xbe 0 0 xbb 3 0 xde a 0 xdb 4 0 xee b 0 xeb 5 0 x7d c 0 x77 6 0 xbd d 0 xb7 7 0 xdd e 0 xd7 8 0 xed f 0 xe7 鍵盤(pán)掃描子程序的流程

40、圖如圖 4-2 所示: y n 確定被按下的鍵 在第二行? y n 確定被按下的鍵 在第三行? y n 確定被按下的鍵 在第四行中確 定被按下的鍵 返回對(duì)應(yīng)的按鍵號(hào) 在第一行? 開(kāi)始 掃描鍵盤(pán) 有鍵按下? y n 圖圖 4-2 鍵鍵盤(pán)盤(pán)掃掃描描程程序序流流程程圖圖 從流程圖可以看出,此鍵盤(pán)識(shí)別程序是通過(guò)逐行掃描來(lái)確定是否有鍵按 下,當(dāng)確定某一行有鍵按下時(shí),再在該行中確定被按下的是哪一個(gè)按鍵。 在本設(shè)計(jì)中, p1.0p1.3 為行輸出口, p1.4p1.7 為列輸出口。初始時(shí)將 p1.0p1.3 值賦為 0,p1.4p1.7 賦為 1,cpu 始終掃描 p1 端口,當(dāng) p1 值 不為 0 xf0

41、 時(shí),有按鍵被按下,否責(zé)沒(méi)有按鍵被按下。 在實(shí)際應(yīng)用中,為了防止因?yàn)榘存I的抖動(dòng)而使得一次按鍵按下被當(dāng)做 2 次或者 2 次以上處理,應(yīng)該進(jìn)行按鍵消抖程序設(shè)計(jì),只要方法是當(dāng)有鍵閉 合時(shí),延時(shí)一段時(shí)間再確定是否還有鍵閉合,若有,則為鍵有效閉合,若無(wú) 則為鍵無(wú)效閉合,返回重新掃描。 圖 4-3 為 cpu 掃描第一行鍵盤(pán)的程序流程圖。單行鍵盤(pán)掃描能夠準(zhǔn)確確 定被按下鍵所在的位置。 開(kāi)始 掃描端口 y n 有鍵閉合? 延時(shí) 有鍵閉合? 查表確定按鍵 y n i/o 口初始化 返回按鍵值 結(jié)束 圖圖 4-3 單單行行鍵鍵盤(pán)盤(pán)掃掃描描流流程程圖圖 在本設(shè)計(jì)中,數(shù)字鍵 09 對(duì)應(yīng)輸入數(shù)字 09,功能鍵 a

42、鍵是確定鍵, b 鍵是取消鍵, c 鍵是改密碼鍵, d 鍵位閉鎖鍵, e 鍵和 f 鍵閑置不用。 4.3 顯示模塊子程序 由于設(shè)計(jì)中要求能夠顯示密碼輸入界面、密碼輸入信息、密碼正確后提 示界面、密碼錯(cuò)誤后提示界面和修改密碼相關(guān)界面等信息,故要用到很多個(gè) 顯示子程序來(lái)顯示不同的內(nèi)容。雖然顯示子程序很多,但是由于其顯示原理 都一樣,所以我就不一一介紹各個(gè)子程序了,只要能夠熟練使用lcd1602 各個(gè)指令,這些大同小異的子程序也就不在話下了。 下面為 lcd1602 寫(xiě)命令子函數(shù)和寫(xiě)數(shù)據(jù)子函數(shù)。 /* /函數(shù):寫(xiě)命令函數(shù) /功能:調(diào)用該函數(shù)可能定義 1602 液晶顯示器的各種命令 /* void w

43、rite_1602com(uchar com) while(lcdbusy(); /lcdbusy()為檢測(cè) lcd 忙標(biāo)志函數(shù), lcdbusy()返回值 e=0;/為 1,則說(shuō)明 lcd 正在工作 rw=0; rs=0;/rs=0 時(shí)為寫(xiě)命令 p0=com;/待寫(xiě)命令賦 p0 delay(1); e=1;/e 由 10 跳變時(shí)為執(zhí)行命令 delay(1); e=0; /* /函數(shù):寫(xiě)數(shù)據(jù)函數(shù) /功能:調(diào)入該函數(shù)可以向 1602 液晶顯示器輸入數(shù)據(jù) /* void write_1602dat(uchar dat) while(lcdbusy(); e=0; rw=0; rs=1;/rs=1

44、時(shí)為寫(xiě)數(shù)據(jù) p0=dat; delay(1); e=1; delay(1); e=0; 以下是 lcd1602 從第一行第一列開(kāi)始顯示 n(0n16)個(gè)字符的程序 流程圖。 開(kāi)始 調(diào)用寫(xiě)數(shù)據(jù)函數(shù) y n 顯示 n 個(gè)字 符了嗎? lcd 初始化 結(jié)束 圖圖 4-4 顯顯示示字字符符程程序序流流程程圖圖 顯示模塊子程序主要指根據(jù) lcd1602 的命令和引腳功能來(lái)編寫(xiě),程序 邏輯相當(dāng)簡(jiǎn)單。 4.4 掉電存儲(chǔ)子程序 掉電存儲(chǔ)子程序就是將初始密碼寫(xiě)進(jìn)at24c02,單片機(jī)每次復(fù)位后從 at24c02 中讀取密碼用來(lái)和輸入的密碼進(jìn)行比較,以判斷輸入的密碼的正確 性。當(dāng)密碼修改成功后,將新密碼寫(xiě)入at2

45、4c02,以便單片機(jī)下次復(fù)位后 使用。 掉電存儲(chǔ)模塊子程序主要涉及 at24c02 的寫(xiě)操作方式和讀操作方式。 at24c02 有 2 種不同的寫(xiě)操作形式和 3 種不同的讀操作方式。 4.4.1 寫(xiě)操作方式 兩種寫(xiě)操作方式為:字節(jié)寫(xiě)和頁(yè)寫(xiě)。 (1)字節(jié)寫(xiě)。字節(jié)寫(xiě)模式下,主機(jī)發(fā)送( r/error!位置為 0)起始命令和 器件地址信息,主機(jī)在收到 at24c02 的應(yīng)答信號(hào)后,發(fā)送 18 位字節(jié)地址, 寫(xiě)入 at24c02 的地址指針中。對(duì)于高于 8 位的地址,主機(jī)連續(xù)發(fā)送兩個(gè) 8 位字節(jié)地址寫(xiě)入 at24c02 中,主機(jī)在收到 at24c02 的另外一個(gè)應(yīng)答信號(hào) 后再發(fā)送數(shù)據(jù)到被尋址的存儲(chǔ)單元

46、, at24c02 再次應(yīng)答,并在主機(jī)發(fā)出停 止信號(hào)后開(kāi)始內(nèi)部數(shù)據(jù)的擦寫(xiě)。 at24c02 在內(nèi)部擦寫(xiě)過(guò)程中不響應(yīng)主機(jī)的 任何請(qǐng)求,因此在兩次寫(xiě)操作之間應(yīng)該留有足夠的反應(yīng)時(shí)間。 字節(jié)寫(xiě)的時(shí)序是這樣的: 地址只有 8 位:開(kāi)始器件地址響應(yīng)8 位字節(jié)地址 響應(yīng)數(shù)據(jù) 響應(yīng)停止 地址高于 8 位:開(kāi)始器件地址響應(yīng)高 8 位字節(jié)地址 響應(yīng)低 8 位字節(jié)地址響應(yīng)數(shù)據(jù)響應(yīng)停止 本次設(shè)計(jì)中采用的是字節(jié)寫(xiě)方式。圖4-5 為字節(jié)寫(xiě)的程序流程圖。 開(kāi)始 發(fā)送起始命令 分別取高 8 位地址和低 8 位地址 結(jié)束 發(fā)送寫(xiě)器件地址 發(fā)送應(yīng)答信號(hào) 發(fā)高 8 位地址 發(fā)低 8 位地址 發(fā)送應(yīng)答信號(hào) 發(fā)送應(yīng)答信號(hào) 發(fā)送數(shù)據(jù) 發(fā)

47、送應(yīng)答信號(hào) 發(fā)送停止命令 圖圖 4-5 將將字字節(jié)節(jié)寫(xiě)寫(xiě)入入 at24c02 的的程程序序流流程程圖圖 (2)頁(yè)寫(xiě)。頁(yè)寫(xiě)和字節(jié)寫(xiě)所不同的是:字節(jié)寫(xiě)一次只能寫(xiě)入一個(gè)字節(jié)數(shù) 據(jù),頁(yè)寫(xiě)一次可以寫(xiě)入 8 個(gè)或 16 個(gè)字節(jié)數(shù)據(jù)。 頁(yè)寫(xiě)的時(shí)序是這樣的: 地址只有 8 位:開(kāi)始器件地址響應(yīng)8 位字節(jié)地址 響應(yīng)數(shù)據(jù) 1響應(yīng)數(shù)據(jù) n響應(yīng)停止。 地址高于 8 位:開(kāi)始器件地址響應(yīng)高 8 位字節(jié)地址 響應(yīng)低 8 位字節(jié)地址響應(yīng)數(shù)據(jù) 1響應(yīng)數(shù)據(jù) n響應(yīng)停止。 4.4.2 讀操作方式 三種不同的讀操作方式為:讀當(dāng)前地址內(nèi)容(立即地址讀取) 、讀隨機(jī) 地址內(nèi)容(隨機(jī)地址讀取)和讀順序地址內(nèi)容(順序地址讀?。?。 (1)

48、讀當(dāng)前地址內(nèi)容。 at24c02 的地址計(jì)數(shù)器內(nèi)容為最后操作字節(jié)的地 址加 1,所有如果上次讀寫(xiě)操作的地址為n,采用讀當(dāng)前地址內(nèi)容方式讀地 址應(yīng)該從 n+1 地址處開(kāi)始。 at24c02 接收到器件地址信號(hào)并且 i2c 總線允 許接收數(shù)據(jù)( r/error!=1) ,則首先發(fā)送一個(gè)應(yīng)答信號(hào)然后輸出數(shù)據(jù)。數(shù)據(jù) 輸出完畢后,主機(jī)發(fā)送停止信號(hào),讀操作完畢。 (2)讀隨機(jī)地址內(nèi)容。這種讀操作方式允許主機(jī)讀出at24c02 的任意字 節(jié)。主機(jī)置通過(guò) r/error!位為 0,發(fā)送開(kāi)始信號(hào)、 at24c02 地址和欲讀取 的字節(jié)數(shù)據(jù)地址來(lái)執(zhí)行一次偽操作,在at24c02 應(yīng)答后,主機(jī)再一次發(fā)送 開(kāi)始信號(hào)和

49、 at24c02 的地址,此時(shí) r/error!位置 1,at24c02 響應(yīng)并應(yīng)答 信號(hào),然后輸出字節(jié)數(shù)據(jù),最后主機(jī)以一個(gè)停止信號(hào)結(jié)束數(shù)據(jù)的讀取。 (3)讀順序地址內(nèi)容。讀順序地址內(nèi)容操作方式通過(guò)立即讀或隨機(jī)地址讀 操作來(lái)啟動(dòng),主機(jī)在 at24c02 發(fā)送完一個(gè) 8 位數(shù)據(jù)后產(chǎn)生一個(gè)應(yīng)答信號(hào), 告知 at24c02 主機(jī)要求更多數(shù)據(jù)。 at24c02 收到主機(jī)的應(yīng)答信號(hào)后繼續(xù)發(fā) 送數(shù)據(jù),直到主機(jī)不發(fā)送應(yīng)答信號(hào)響應(yīng)而發(fā)送停止信號(hào)后操作結(jié)束。 下面是三種不同的讀操作方式時(shí)序?qū)Ρ龋?讀當(dāng)前地址內(nèi)容:開(kāi)始 讀器件地址 響應(yīng)數(shù)據(jù)無(wú)響應(yīng)停止。 讀隨機(jī)地址內(nèi)容:開(kāi)始 寫(xiě)器件地址 響應(yīng)要讀的字節(jié)地址 響應(yīng)

50、開(kāi)始讀器件地址響應(yīng)數(shù)據(jù)無(wú)響應(yīng)停止。 讀順序地址內(nèi)容:開(kāi)始 寫(xiě)器件地址 響應(yīng)要讀的字節(jié)地址 響應(yīng) 開(kāi)始讀器件地址響應(yīng)數(shù)據(jù) 1響應(yīng)數(shù)據(jù) n無(wú)響應(yīng)停止。 本次設(shè)計(jì)中采用的是讀隨機(jī)地址內(nèi)容操作方式。 程序流程圖如圖 4-6 所示。 開(kāi)始 發(fā)送起始命令 分別取高 8 位地址和低 8 位地址 結(jié)束 發(fā)送寫(xiě)器件地址 發(fā)送應(yīng)答信號(hào) 發(fā)高 8 位地址 發(fā)低 8 位地址 發(fā)送應(yīng)答信號(hào) 發(fā)送應(yīng)答信號(hào) 發(fā)送非應(yīng)答信號(hào) 發(fā)送停止命令 發(fā)送起始命令 發(fā)送讀器件地址 發(fā)送應(yīng)答信號(hào) 將讀出的數(shù)據(jù)送出 圖圖 4-6 讀讀 at24c02 相相應(yīng)應(yīng)地地址址內(nèi)內(nèi)容容的的程程序序流流程程圖圖 掉電存儲(chǔ)功能就是通過(guò)調(diào)用向 at24c0

51、2 寫(xiě)字節(jié)數(shù)據(jù)的程序和從 at24c02 讀字節(jié)數(shù)據(jù)的程序來(lái)實(shí)現(xiàn)的。由于at24c02 在內(nèi)部擦寫(xiě)過(guò)程中不 會(huì)應(yīng)答任何來(lái)自主機(jī)的請(qǐng)求,所以當(dāng)向at24c02 連續(xù)寫(xiě)多個(gè)字節(jié)數(shù)據(jù)時(shí)有 可能不成功,這可以通過(guò)對(duì)同一字節(jié)數(shù)據(jù)寫(xiě)多次的方法來(lái)實(shí)現(xiàn)。 4.5 定時(shí)器中斷子程序 為了防止戶(hù)主以外的 “借用”戶(hù)主的密碼,當(dāng)沒(méi)有任何按鍵被按下的狀態(tài) 持續(xù)一段時(shí)間后(比如 20s 內(nèi)) ,應(yīng)該馬上關(guān)閉顯示器屏幕,同時(shí)禁止按鍵 的輸入。這樣做可以避免因?yàn)閼?hù)主忘記退出系統(tǒng)而使他人有機(jī)可乘。 圖 4-7 為實(shí)現(xiàn)此功能的程序流程圖。 中斷服務(wù)程序入口 50 毫秒數(shù)增加 1 y n 50 毫秒數(shù)有 20 了? 重裝初值 結(jié)

52、束 進(jìn)位為 1 秒,毫秒數(shù)清 0 秒數(shù)有 20 了? 關(guān)閉屏幕 鎖定鍵盤(pán)輸入 y n 產(chǎn)生定時(shí)中斷程序入口 設(shè)置初值 采用定時(shí)器 0 設(shè)置定時(shí)器工作方式 開(kāi)中斷 結(jié)束 圖圖 4-7 定定時(shí)時(shí)關(guān)關(guān)閉閉屏屏幕幕和和鎖鎖定定鍵鍵盤(pán)盤(pán)輸輸入入程程序序流流程程圖圖 程序中,使定時(shí)器 0 每 50 毫秒產(chǎn)生一次中斷,因此中斷每產(chǎn)生20 次 為 1 秒,當(dāng)秒數(shù)為 20 時(shí)(每次有鍵輸入時(shí)都執(zhí)行 50 毫秒數(shù)和秒數(shù)清 0 操 作) ,關(guān)閉屏幕,并禁止鍵盤(pán)輸入。 當(dāng)定時(shí)/計(jì)數(shù)器工作在定時(shí)方式時(shí),定時(shí)時(shí)間的計(jì)算公式為: 定時(shí)時(shí)間=(216 計(jì)數(shù)初值) 定時(shí)周期 晶振頻率為 12mhz 時(shí),定時(shí)/計(jì)數(shù)器的定時(shí)周期為

53、 1s,所以定時(shí) 50ms 的定時(shí)/計(jì)數(shù)器初值為: 計(jì)數(shù)初值=216 50000 4.6 密碼輸入子程序 當(dāng)從鍵盤(pán)輸入密碼時(shí),應(yīng)當(dāng)將輸入的密碼存放, 以便用做密碼的相關(guān)操 作(判斷,修改和保存等),同時(shí)每輸入一位密碼應(yīng)相應(yīng)地在顯示器上顯示 一個(gè)“*”號(hào)。圖 4-8 是密碼輸入子程序的流程圖。 開(kāi)始 n 有鍵輸入? 掃描鍵盤(pán) y 是數(shù)字鍵? 輸入的密碼 長(zhǎng)度小于 6? 將輸入的數(shù)放入數(shù)組 在顯示器上顯示“*” 是取消鍵? 輸入的密長(zhǎng) 度大于 0? 清除數(shù)組中的 最后一位數(shù) 清除顯示器上的 最后一個(gè)“*” 是確認(rèn)鍵? 結(jié)束 y n n n n y y y n y 圖圖 4-8 密密碼碼輸輸入入程程

54、序序流流程程圖圖 輸入密碼時(shí),當(dāng)輸入的密碼位數(shù)小于6 位的時(shí)候,每按下一次數(shù)字鍵, 就將此數(shù)字存入數(shù)組。當(dāng)輸入的密碼位數(shù)不小于6 位時(shí),再次按下數(shù)字鍵, 程序就不進(jìn)行任何處理,繼續(xù)掃描鍵盤(pán),此時(shí)只有按下確定鍵或者取消鍵程 序才做出相應(yīng)反應(yīng)。取消鍵的功能是退格。當(dāng)不小心輸錯(cuò)密碼時(shí),可以退格 將輸錯(cuò)的位清除,退格一次密碼的位數(shù)減一位,同時(shí)顯示器上的“*”個(gè)數(shù)也 減 1。當(dāng)輸入的密碼位數(shù)變?yōu)?0 時(shí),取消鍵不再起作用。 4.7 報(bào)警子程序 報(bào)警子程序的原理很簡(jiǎn)單,即當(dāng)輸入密碼錯(cuò)誤次數(shù)超過(guò)規(guī)定的最高允許 次數(shù)時(shí),不斷給蜂鳴器脈沖,使其不斷發(fā)音。同時(shí),由于cpu 一直在給蜂 鳴器提供脈沖,故無(wú)暇處理諸如

55、密碼掃描等事件,也就是說(shuō),在蜂鳴器報(bào)警 的同時(shí)也屏蔽了鍵盤(pán)的輸入。 本次設(shè)計(jì)中,密碼輸入錯(cuò)誤次數(shù)不得高于3 次。圖 4-9 為報(bào)警子程序流 程圖。 開(kāi)始 n 錯(cuò)誤次數(shù) 大于 3? 顯示器清屏 y 關(guān)閉顯示器 給蜂鳴器一個(gè)脈沖 結(jié)束 圖圖 4-9 報(bào)報(bào)警警子子程程序序流流程程圖圖 第 5 章 聯(lián)合仿真和調(diào)試 在 proteus 中畫(huà)出仿真電路圖和在 keil 中編寫(xiě)出程序后,需要驗(yàn)證 其正確性和可行性,最好的辦法就是就它們聯(lián)合起來(lái)仿真和調(diào)試。 keil 和 proteus 都是單片機(jī)愛(ài)好者和單片機(jī)相關(guān)工作者經(jīng)常用到的具 有相當(dāng)好的輔助功能的軟件工具。 keil 是一款具有強(qiáng)悍功能的 51 系列兼

56、容 單片機(jī) c 語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),為用戶(hù)提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開(kāi) 發(fā)調(diào)試工具, 其生成目標(biāo)代碼的效率非常之高,且多數(shù)語(yǔ)句生成的匯編代碼 很緊湊,容易理解。 proteus 是目前世界上唯一一款將電路仿真軟件、 pcb 設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái)。 proteus 不僅具 有其它電子設(shè)計(jì)自動(dòng)化工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件, 是目前最好的仿真單片機(jī)及外圍器件的工具。 keil 和 proteus 都是單片機(jī)相關(guān)設(shè)計(jì)中經(jīng)常用到的軟件, keil 和 proteus 的聯(lián)合仿真和調(diào)試能夠相當(dāng)清晰地反映系統(tǒng)的各個(gè)功能模塊和器 件的工作情況。通過(guò) keil 和 p

57、roteus 的聯(lián)合調(diào)試,單步執(zhí)行程序或者在 程序中設(shè)置斷點(diǎn),可以有效地查看各語(yǔ)句的執(zhí)行情況和各變量的值,從而找 到程序中的錯(cuò)誤。 keil 和 proteus 的聯(lián)合調(diào)試和仿真步驟如下: (1)在 keil 中建立工程,將編寫(xiě)好的程序添加到工程中。 (2)在 keil 中為工程設(shè)置選項(xiàng)。為了實(shí)現(xiàn)和 proteus 的聯(lián)合調(diào)試,除 了一般工程選項(xiàng)的設(shè)置外,還要設(shè)置dubug 項(xiàng)。具體方法為: 單擊“工程 菜單/為目標(biāo)目標(biāo) 1設(shè)置選項(xiàng)”選項(xiàng),彈出窗口,點(diǎn)擊“debug”按鈕。在出現(xiàn)的 對(duì)話框里在右欄上部的下拉菜單里選中“proteus vsm monitor 一 51 driver”。并 且還要

58、點(diǎn)擊一下“use”前面表明選中的小圓點(diǎn)。再點(diǎn)擊“setting”按鈕,設(shè)置通信 接口,在“host”后面添上“127.0.0.1”,如果使用的不是同一臺(tái)電腦,則需要在這 里添上另一臺(tái)電腦的 ip 地址(另一臺(tái)電腦也應(yīng)安裝 proteus)。在“port”后面添加 “8000”,然后點(diǎn)擊“ok”按鈕。最后將工程編譯,進(jìn)入調(diào)試狀態(tài),并運(yùn)行。設(shè)置 完之后,重新編譯、鏈接、生成可執(zhí)行文件。 (3)proteus 設(shè)置。進(jìn)入 proteus 的 isis,鼠標(biāo)左鍵點(diǎn)擊菜單“debug”, 選中“使用遠(yuǎn)程調(diào)試監(jiān)控”。 (4)將可執(zhí)行文件加到單片機(jī)中。打開(kāi)proteus 仿真圖,雙擊單片機(jī), 將 keil

59、產(chǎn)生的“*.hex”文件添加到單片機(jī)中。 (5)keil 與 proteus 連接仿真調(diào)試。點(diǎn)擊 proteus 的開(kāi)始仿真按鈕即可 開(kāi)始 keil 與 proteus 的聯(lián)合仿真和調(diào)試。 本次設(shè)計(jì)的聯(lián)合仿真結(jié)果如下圖所示。 圖圖 5-1 密碼正確后的仿真圖密碼正確后的仿真圖 密碼輸入正確后,點(diǎn)亮二極管,顯示器顯示歡迎回家畫(huà)面。通過(guò)觀察鍵盤(pán) 引腳的電平,還能知道 cpu 正在掃描鍵盤(pán)第四行,等待功能鍵的輸入。 本設(shè)計(jì)中鍵盤(pán)第四行只用到了前兩個(gè)按鍵,后兩個(gè)按鍵沒(méi)有被使用。第一 個(gè)按鍵為改密碼鍵,通過(guò)按鍵此鍵可以進(jìn)入修改密碼功能界面;第二個(gè)鍵位閉 鎖鍵,通過(guò)按下此鍵可以將鎖閉合,在設(shè)計(jì)中的直接表現(xiàn)

60、是發(fā)光二極管熄滅。 第 6 章 實(shí)物設(shè)計(jì)和制作 聯(lián)合仿真調(diào)試通過(guò)后,本次設(shè)計(jì)業(yè)就進(jìn)入了最后一步,但也是最關(guān)鍵的一 步實(shí)物設(shè)計(jì)和制作。 由于電路板空間有限,所有在進(jìn)行實(shí)物設(shè)計(jì)之前應(yīng)該根據(jù)系統(tǒng)的仿真電路 圖做好各功能模塊的整體布局,這樣既可以使得實(shí)物設(shè)計(jì)的順利進(jìn)行,也可以 最大化的令做出來(lái)的實(shí)物看起來(lái)簡(jiǎn)潔而美觀。 在本次設(shè)計(jì)中,實(shí)物設(shè)計(jì)是按以下步驟完成的: (1)單片機(jī)最小系統(tǒng)的電路焊接。只有保證了單片機(jī)最小系統(tǒng)的正確性,才 能在接下來(lái)的其他模塊設(shè)計(jì)和焊接出現(xiàn)錯(cuò)誤時(shí)能夠方便地檢查出原因,因此單 片機(jī)最小系統(tǒng)是必須首先完成的。 (2)下載口電路的焊接。單片機(jī)最小系統(tǒng)電路焊接好后,需要檢查其正確性,

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論