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

下載本文檔

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

文檔簡介

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

2、at89c51 單片機為控制核心的密碼鎖設(shè)計方案。在本次基 于單片機的電子密碼鎖設(shè)計中,將采用at89c51 單片機作為控制核心,配 合相應(yīng)的電路和軟件程序,實現(xiàn)密碼的輸入和修改、信息的顯示、鍵盤的鎖 定、系統(tǒng)報警、開鎖和閉鎖等功能。在設(shè)計中, 利用識別密碼是否正確來開 鎖或報警,通過串行存儲器 at24c02 來實現(xiàn)密碼的修改和存儲。 本文設(shè)計的密碼鎖具有安全性高、功耗低、操作簡單等優(yōu)點。 關(guān)鍵詞:單片機;密碼鎖;電子鎖;矩陣鍵盤;掉電存儲 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 電子密碼鎖簡介.1 1.2 電子密碼鎖設(shè)計的背景及意義.1 1.3 電子密碼鎖的現(xiàn)狀及發(fā)展趨勢.2 第 2 章 總體設(shè)計.3 2.1 設(shè)計分析.3 2.2 系統(tǒng)結(jié)構(gòu).4 第 3 章 硬件電路設(shè)計.5 3.1 單片機接口分配.5 3.2 單片機最小系統(tǒng)設(shè)計.5 3.2.1 時鐘電路.5 3.2.2 復(fù)位電路.6 3.2.3 最小系統(tǒng).6 3.3 矩陣鍵盤設(shè)計.7 3.4 lcd 顯示模塊設(shè)計.8 3.5 掉電存儲模塊.10 3.5.1 i2c 總線.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

28、輸入數(shù)據(jù) 5 r/w0:向 lcd 寫指令或者數(shù)據(jù); 1:從 lcd 讀取信息 6 e使能信號,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 背光電源負極 作為一個字符型液晶顯示器, lcd1602 內(nèi)部自帶有一個字符發(fā)生存儲器, 此字符發(fā)生存儲器就相當于一個字符集。 lcd1602 的字符集中存有 160 個 不同的字符,這些字符包括了英文大小寫字母、阿拉伯數(shù)字、標點符號等

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

30、位 方向為構(gòu)成了 i2c 總線器件的尋址字節(jié)。尋址字節(jié)格式如下: 表表 3-2 i2c 尋尋址址格格式式 d7d6d5d4a2a1a0r/error ! d7d4 是 i2c 總線的器件地址,由廠家在器件出廠時給定 ,對于 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ù)傳送時序。 123456789 ack scl sda p 起始信號 停止信號 圖圖

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

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

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

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

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

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

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

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

39、定各按鍵應(yīng)該完成的功能。 采用某種算法,將被按下的鍵所在的行和列的信息合并成為一個信息, 該信息即為此鍵的鍵值。用相同的方法給每一個鍵確定鍵值。在給按鍵確定 鍵值時必須采用同一種算法,并且計算出來的鍵值應(yīng)該是互不相同的。 本設(shè)計中各按鍵對應(yīng)鍵值如表 3 所示。 表表 4-1 按按鍵鍵鍵鍵值值表表 按鍵名稱鍵值按鍵名稱鍵值 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 鍵盤掃描子程序的流程

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

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

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

43、rite_1602com(uchar com) while(lcdbusy(); /lcdbusy()為檢測 lcd 忙標志函數(shù), lcdbusy()返回值 e=0;/為 1,則說明 lcd 正在工作 rw=0; rs=0;/rs=0 時為寫命令 p0=com;/待寫命令賦 p0 delay(1); e=1;/e 由 10 跳變時為執(zhí)行命令 delay(1); e=0; /* /函數(shù):寫數(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ù)據(jù) p0=dat; delay(1); e=1; delay(1); e=0; 以下是 lcd1602 從第一行第一列開始顯示 n(0n16)個字符的程序 流程圖。 開始 調(diào)用寫數(shù)據(jù)函數(shù) y n 顯示 n 個字 符了嗎? lcd 初始化 結(jié)束 圖圖 4-4 顯顯示示字字符符程程序序流流程程圖圖 顯示模塊子程序主要指根據(jù) lcd1602 的命令和引腳功能來編寫,程序 邏輯相當簡單。 4.4 掉電存儲子程序 掉電存儲子程序就是將初始密碼寫進at24c02,單片機每次復(fù)位后從 at24c02 中讀取密碼用來和輸入的密碼進行比較,以判斷輸入的密碼的正確 性。當密碼修改成功后,將新密碼寫入at2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論