版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 摘要</b></p><p> 在日常的生活和工作中, 住宅與部門的安全防范、單位的文件檔案、財務報表以及一些個人資料的保存多以加鎖的辦法來解決。若使用傳統(tǒng)的機械式鑰匙開鎖,人們常需攜帶多把鑰匙, 使用極不方便, 且鑰匙丟失后安全性即大打折扣。在安全技術防范領域,具有防盜報警功能的電子密碼鎖逐漸代替了傳統(tǒng)的機械式密碼鎖,電子密碼鎖具有安全性高、成本低、功耗低、
2、易操作等優(yōu)點。</p><p> 本文從經(jīng)濟實用的角度出發(fā),采用美國Atmel公司的單片機AT89S51作為主控芯片與數(shù)據(jù)存儲器單元,結合外圍的矩陣鍵盤輸入、12864液晶顯示、報警、開鎖等,用C語言編寫的主控芯片控制程序與EEPROM AT24C02讀寫程序相結合,并用Keil軟件進行編譯,設計了一款可以多次更改密碼,具有報警功能的電子密碼控制系統(tǒng)。</p><p> 這種密碼鎖的電
3、路設計具有防試探按鍵輸入、智能控制上鎖、開鎖、報警、修改密碼等多種功能。密碼長度可變、保密性強、靈活性高、應用日益廣泛。</p><p> 關鍵字:AT89S52;24C02;12864;繼電器</p><p><b> Abstract</b></p><p> In the daily life and the work, the w
4、ay to the house's and department's safe guard, unit's document file, the financial reporting as well as some individual material preservation almost need many locks. If we use tradition mechanical key to open
5、, the people often must carry many keys, but it is not extremely convenient. If the key lost, the security will decline greatly. In the safety work guard domain, the lock with security warning function electronic combina
6、tion have replaced the traditional </p><p> This article is based on the economical and practical point of view, uses the United States Atmel Corporation AT89S51 microcontroller as a master chip and the dat
7、a memory unit, it combines with the external matrix keyboard input, LCD digital display, alarm, unlock and so on circuits, dominates by the C programming language chip EEPROM of the control procedures and carries on the
8、translation with Keil software, the password can be changed many times, the electronic the password control also has t</p><p> This password lock circuit design has anti-test button input, intelligent contr
9、ol lock, unlock, alarm and change the password multiple functions. Password length can be changed, great security and high flexible than others, it is widely used</p><p> .Key word: AT89S52 devices; 24 C02;
10、 12864; relay</p><p><b> 目錄</b></p><p><b> 摘要I</b></p><p><b> 目錄I</b></p><p><b> 第一章 緒論1</b></p><p>
11、 1.1 電子密碼鎖簡介1</p><p> 1.2 電子密碼鎖的發(fā)展趨勢1</p><p> 1.3 本設計所要實現(xiàn)的目標2</p><p> 第二章 總體設計方案3</p><p><b> 2.1設計要求3</b></p><p> 2.2密碼鎖的論證與選擇3&
12、lt;/p><p> 2.2.1 方案一:采用數(shù)字電路控制3</p><p> 2.2.2 方案二:采用以單片機為核心的控制方案3</p><p> 2.3系統(tǒng)總體設計4</p><p> 第三章 硬件單元模塊設計5</p><p> 3.1微處理模塊5</p><p>
13、3.1.1主要元件介紹5</p><p> 3.1.2微處理模塊電路6</p><p><b> 3.2存儲模塊6</b></p><p> 3.2.1主要元件介紹6</p><p> 3.2.2 24c08管腳功能:7</p><p> 3.2.3時序圖7</p>
14、;<p> 3.2.4存儲模塊電路8</p><p><b> 3.3輸入模塊9</b></p><p> 3.4電源模塊10</p><p> 3.5開關鎖模塊10</p><p> 3.6報警模塊11</p><p> 3.7顯示模塊11</p>
15、;<p> 3.8紅外模塊電路原理圖12</p><p> 第四章 軟件設計14</p><p> 4.1軟件工作流程14</p><p> 4.2密碼修改流程16</p><p> 第五章 調試與實現(xiàn)17</p><p> 5.1硬件調試17</p><p
16、> 5.2軟件調試17</p><p> 5.3軟件調試心得18</p><p> 5.4結果分析19</p><p> 5.5 Proteus仿真19</p><p> 5.6 PCB板制作20</p><p> 第六章 總結與展望22</p><p><
17、b> 致 謝23</b></p><p><b> 參考文獻24</b></p><p> 附錄1元器件清單25</p><p> 附錄2 程序清單26</p><p> 附錄3成品實物圖40</p><p><b> 第一章 緒論</
18、b></p><p> 1.1 電子密碼鎖簡介</p><p> 電子密碼鎖是一種通過密碼輸入來控制電路或是芯片工作,從而控制機械開關的閉合,完成開鎖、閉鎖任務的電子產品。它的種類很多,有簡易的電路產品,也有基于芯片的性價比較高的產品。現(xiàn)在應用較廣的電子密碼鎖是以芯片為核心,通過編程來實現(xiàn)的。其性能和安全性已大大超過了機械鎖。其特點如下:</p><p>
19、; 1.保密性好,編碼量多,遠遠大于彈子鎖。隨機開鎖成功率幾乎為零。2.密碼可變,用戶可以隨時更改密碼,防止密碼被盜,同時也可以避免因</p><p> 人員的更替而使鎖的密級下降。3.誤碼輸入保護,當輸入密碼多次錯誤時,報警系統(tǒng)自動啟動。</p><p> 4.無活動零件,不會磨損,壽命長。</p><p> 5.使用靈活性好,不像機械鎖必須佩帶鑰匙才
20、能開鎖。</p><p> 6.電子密碼鎖操作簡單易行,一學即會。</p><p> 1.2 電子密碼鎖的發(fā)展趨勢</p><p> 日常生活和工作中,住宅與部門的安全防范、單位的文件檔案、財務報表以及一些個人資料的保存多以加鎖的辦法來解決。目前門鎖主要用彈子鎖,其鑰匙容易丟失;保險箱主要用機械密碼鎖,其結構較為復雜,制造精度要求高,成本高,且易出現(xiàn)故障,人
21、們常需攜帶多把鑰匙,使用極不方便,且鑰匙丟失后安全性即大打折扣。針對這些鎖具給人們帶來的不便若使用機械式鑰匙開鎖,為滿足人們對鎖的使用要求,增加其安全性,用密碼代替鑰匙的密碼鎖應運而生。由于電子器件所限,以前開發(fā)的電子密碼鎖,其種類不多,保密性差,最基本的就是只依靠最簡單的模擬電子開關來實現(xiàn)的,制作簡單但很不安全,在后為多是基于EDA來實現(xiàn)的,其電路結構復雜,電子元件繁多,也有使用早先的20引角的2051系列單片機來實現(xiàn)的,但密碼簡單,
22、易破解。隨著電子元件的進一步發(fā)展,電子密碼鎖也出現(xiàn)了很多的種類,功能日益強大,使用更加方便,安全保密性更強,由以前的單密碼輸入發(fā)展到現(xiàn)在的,密碼加感應元件,實現(xiàn)了真真的電子加密,用戶只有密碼或電子鑰匙中的一樣,是打不開鎖的,隨著電子元件的發(fā)展及人們對保密性需求的提高出現(xiàn)了越來越多的電子密碼鎖。出于安全、方便等方面的需要許多電子密碼鎖</p><p> 1.3 本設計所要實現(xiàn)的目標</p><
23、;p> 本設計采用單片機為主控芯片,結合外圍電路,組成電子密碼鎖,用戶想要打開鎖,必先通過提供的鍵盤輸入正確的密碼才能將鎖打開,密碼輸入錯誤有提示,為了提高安全性,當密碼輸入錯誤將報警。密碼可以有用戶自己修改設定,鎖打開后才能修改密碼。修改密碼之前必須再次輸入就的密碼,在輸入新密碼的時候要二次確認,以防止誤操作。</p><p> 第二章 總體設計方案</p><p><b
24、> 2.1設計要求</b></p><p> 1.能檢測柜中有無物品。</p><p><b> 2.密碼錯誤自鎖。</b></p><p><b> 3.液晶在線顯示。</b></p><p><b> 4.按鍵操作。</b></p>
25、<p><b> 5.具有開鎖功能。</b></p><p> 2.2密碼鎖的論證與選擇</p><p> 2.2.1 方案一:采用數(shù)字電路控制</p><p> 用以74LS112雙JK觸發(fā)器構成的數(shù)字邏輯電路作為密碼鎖的核心控制,共設了9個用戶輸入鍵,其中只有4個是有效的密碼按鍵,其它的都是干擾按鍵,若按下干擾鍵,鍵盤
26、輸入電路自動清零,原先輸入的密碼無效,需要重新輸入;如果用戶輸入密碼的時間超過10秒(一般情況下,用戶不會超過10秒,若用戶覺得不便,還可以修改)電路將報警20秒,若電路連續(xù)報警三次,電路將鎖定鍵盤2分鐘,防止他人的非法操作。采用數(shù)字電路設計的方案好處就是設計簡單但控制的準確性和靈活性差。故不采用。</p><p> 2.2.2 方案二:采用以單片機為核心的控制方案</p><p>
27、由于單片機種類繁多,各種型號都有其一定的應用環(huán)境,因此在選用時要多加比較,合理選擇,以期獲得最佳的性價比。一般來說在選取單片機時從下面幾個方面考慮:性能、存儲器、運行速度、I/O口、定時/計數(shù)器、串行接口、模擬電路功能、工作電壓、功耗、封裝形式、抗干擾性、保密性,除了以上的一些的還有一些最基本的比如:中斷源的數(shù)量和優(yōu)先級、工作溫度范圍、有沒有低電壓檢測功能、單片機內有無時鐘振蕩器、有無上電復位功能等。在開發(fā)過程中單片機還受到:開發(fā)工具、
28、編程器、開發(fā)成本、開發(fā)人員的適應性、技術支持和服務等等因素?;谝陨弦蛩乇驹O計選用單片機AT89S52作為本設計的核心元件,利用單片機靈活的編程設計和豐富的I/O端口,及其控制的準確性,實現(xiàn)基本的密碼鎖功能。在單片機的外圍電路外接輸入鍵盤用于密碼的輸入和一些功能的控制,外接AT24C02芯片用于密碼的存儲,外接12864液晶顯示器用于顯示作用。當用戶需要開鎖時,先按鍵盤開鎖鍵之后按鍵盤的數(shù)字鍵0-9輸入密碼。密碼輸完后按下確認鍵,如果密
29、碼輸入正確則開鎖,不正確顯示密碼錯誤重新輸入密碼,當三次密碼錯誤則發(fā)出報警;當用戶需要修改密碼時,先按下鍵盤設置鍵后輸入</p><p> 可以看出方案二控制靈活準確性好且保密性強還具有擴展功能,根據(jù)現(xiàn)實生活的需要此次設計采用此方案。</p><p><b> 2.3系統(tǒng)總體設計</b></p><p> 本設計主要由單片機、矩陣鍵盤、液
30、晶顯示器和密碼存儲等部分組成。其中矩陣鍵盤用于輸入數(shù)字密碼和進行各種功能的實現(xiàn)。由用戶通過連接單片機的矩陣鍵盤輸入密碼,后經(jīng)過單片機對用戶輸入的密碼與自己保存的密碼進行對比,從而判斷密碼是否正確,然后控制引腳的高低電平傳到開鎖電路或者報警電路控制開鎖還是報警,實際使用時只要將單片機的負載由繼電器換成電子密碼鎖的電磁鐵吸合線圈即可,當然也可以用繼電器的常開觸點去控制電磁鐵吸合線圈。</p><p> 本系統(tǒng)共有兩
31、部分構成,即硬件部分與軟件部分。其中硬件部分由電源輸入部分、鍵盤輸入部分、密碼存儲部分、復位部分、晶振部分、顯示部分、報警部分、開鎖部分、紅外部分組成,軟件部分對應的由主程序、初始化程序、12864顯示程序、鍵盤掃描程序、啟動程序、關閉程序、建功能程序、密碼設置程序、EEPROM讀寫程序和延時程序,紅外線程序等組成。其總體框架如圖2-1所示。</p><p><b> 圖2-1</b>&l
32、t;/p><p> 第三章 硬件單元模塊設計</p><p><b> 3.1微處理模塊</b></p><p> 3.1.1主要元件介紹</p><p> AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術制造,與工業(yè)80
33、C51 產品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使AT89S52為眾多嵌入式控制應用系統(tǒng)提供高靈活、超有效的解決方案。</p><p> AT89S52具有以下標準功能: 8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個16 位定時器/計數(shù)器,一個6向量2級中斷
34、結構,全雙工串行口,片內晶振及時鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止,如圖3.1所示。</p><p> 圖3.1 AT89S52 單片機引腳排列圖</p><p>
35、 3.1.2微處理模塊電路</p><p> 單片機系統(tǒng)由AT89S51芯片、時鐘電路和復位電路三部分組成,主要是控制和處理各模塊電路的數(shù)據(jù)輸入、數(shù)據(jù)輸出、顯示、報警,紅外檢測等,如圖3.2所示。</p><p> 圖3.2 微處理模塊電路</p><p><b> 3.2存儲模塊</b></p><p> A
36、T24C02是一個I2C總線接口E2PROM存儲器,用于存儲電子密碼鎖的密碼數(shù)據(jù)。</p><p> 3.2.1主要元件介紹</p><p> AT24C02是美國ATEML公司生產的低功耗COMS型,I2C總線接口的E2PROM存儲器,其內含256x8為存儲空間,具有工作電壓寬(2.5V~5.5V)、擦寫次數(shù)多(大于1000次)、寫入速度快(小于10mS)、抗干擾能力強、數(shù)據(jù)不易丟失
37、、體積小等特點。采用了I2C總線進行數(shù)據(jù)讀寫的串行器件,占用很少的資源和I/O線,而且支持在線編程,實時存取數(shù)據(jù)十分方便,如圖3.3所示。</p><p> 圖3.3 24C02引腳排列圖</p><p> 3.2.2 24c08管腳功能:</p><p><b> 管腳描述:</b></p><p><b
38、> SCL:串口時鐘</b></p><p> 24c08串口時鐘輸入管腳用于產生機器件所有數(shù)據(jù)發(fā)送或接收的時鐘,這是一個輸入管腳。</p><p> SDA:串口數(shù)據(jù)地址</p><p> 24C08雙向串行數(shù)據(jù)地址管腳用于器件所有數(shù)據(jù)的發(fā)送或接收,SDA是一個開路輸出管腳,可與其他開路輸出或集電極開路輸出進行或(wire-OR)。<
39、;/p><p> A0、A1、A2、A3:器件地址輸入端</p><p> 這些輸入腳用于多個器件級聯(lián)時設置器件地址,當這些腳懸空時默認值為0,(24C01除外)。</p><p> 使用24C08時最多只可以連接2個器件,所有地址管腳A0、A1、A3都未使用,管腳可以連接到VSS或懸空,如果只用到一個24C08A2管腳可以連接到VSS或懸空。</p>
40、<p><b> WP:寫保護</b></p><p> 如果WP管腳連接到VCC所有內容都被寫保護(只能讀取)。當WP連接到VSS或被懸空,允許器件進行正常的讀/寫操作。</p><p> 表3.4 24C02引腳說明</p><p><b> 3.2.3時序圖</b></p>&l
41、t;p> II2C總線協(xié)議定義:</p><p> 1.只有在總線空閑時候才允許啟動數(shù)據(jù)傳送。</p><p> 2.在數(shù)據(jù)傳送過程中,當時鐘線為高電平是,數(shù)據(jù)線必須保持穩(wěn)定狀態(tài),不允許有跳變。時鐘線為高電平時,數(shù)據(jù)線的任意電平變化將被看作總顯的起始或停止信號。</p><p><b> 起始信號:</b></p>
42、<p> 時鐘線保持高電平期間,數(shù)據(jù)線電平從高到底的跳變作為IIC總線的起始信號。</p><p><b> 停止信號:</b></p><p> 時鐘線保持高電平期間,數(shù)據(jù)線電平從低電平到高電平的跳變作為IIC總線的停止信號。</p><p> 圖3.5 24C02時序圖</p><p> 3.2.
43、4存儲模塊電路</p><p> 圖中上拉電阻的作用是減少AT24C02的靜態(tài)功耗,由于AT24C02的數(shù)據(jù)線和地址線是復用的,采用串口的方式傳送數(shù)據(jù),所以只用兩根線SCL(移位脈沖)和SDA(數(shù)據(jù)/地址)與單片機傳送數(shù)。每當成功修改一次密碼,系統(tǒng)就自動調用存儲程序,將新密碼保存在芯片內;當系統(tǒng)需要進行密碼識別時,通過程序讀取存儲器中的密碼值存入緩沖區(qū),與所輸入密碼進行比較,完成密碼鎖的開鎖控制,如圖3.6所示
44、。</p><p> 圖3.6 AT24C02模塊電路</p><p><b> 3.3輸入模塊</b></p><p> 鍵盤可以分為獨立連接式和行列式(矩陣式)兩類。根據(jù)設計要求,本電路設計采用4×4行列式鍵盤,同時也能減少鍵盤與單片機接口時所占用的I/O線的數(shù)目。</p><p> 矩陣式鍵盤又叫
45、行列式鍵盤。用I/O口線組成行列結構,按鍵設置在行列的交叉點上。本電路采用4條行線和4條列線,即可組成具有4×4個按鍵的鍵盤。其電路圖如下圖2.4所示。</p><p> 對鍵的識別通常用逐行掃描查詢法。首先判別鍵盤中有無按鍵按下,由單片機I/O口向鍵盤送(輸出)全掃描字,然后讀入(輸入)列線狀態(tài)來判斷。方法是:向行線輸出全掃描字00H,把全部行線置為低電平,然后將列線的電平狀態(tài)讀入累加器A中。如果有
46、鍵按下,總會有一根列線電平拉至低電平,從而使列輸入不全為1。鍵盤中哪一個鍵按下,是由行線逐行置低電平后,檢查列輸入狀態(tài)實現(xiàn)的,其方法是:依次給行線送低電平,然后查所有列線狀態(tài),如果全為1,則所按下的鍵不在此行,如果不全為1,則所按下的鍵必在此行,而且是在與零電平列線相交的交點上的那個鍵,矩陣鍵盤如圖3.7所示。</p><p><b> 圖3.7 矩陣鍵盤</b></p>&
47、lt;p><b> 3.4電源模塊</b></p><p> 給整個電路模塊提供所需的能量,使電路能夠正常工作。我們采用性能穩(wěn)定可靠、價格低廉的LM78系列穩(wěn)壓塊如圖3.8所示,由于它內部有電流的限制以及過熱保護和安全工作區(qū)的保護使得它不會輕易損壞,電源模塊如圖3.9所示。</p><p> 圖3.8 7805引腳排列圖</p><p&
48、gt; 圖3.9 電源模塊模塊電路</p><p><b> 3.5開關鎖模塊</b></p><p> 通過單片機P3.7控制三極管的工作狀態(tài)來決定繼電器的斷開與吸合,從而達到開關鎖的目的。</p><p> 當用戶輸入的密碼正確而且是在規(guī)定的時間輸入的話,單片機便輸出開門信號,送到開鎖驅動電路,然后驅動電磁鎖,達到開門的目的。<
49、;/p><p> 在本次設計中,基于節(jié)省材料的原則,暫時用發(fā)光二極管代替電磁鎖,發(fā)光管亮,表示鎖開;滅,表示鎖合,如圖3.10 所示。</p><p> 圖3.10 開關鎖模塊</p><p><b> 3.6報警模塊</b></p><p> 報警部分由蜂鳴器發(fā)聲裝置及外圍電路組成,高電平不發(fā)聲,當輸入三次密碼錯誤
50、時,單片機的P3.6引腳為低電平,三極管Q1導通蜂鳴器發(fā)聲報警,如圖3.11所示。</p><p> 圖3.11 報警模塊電路</p><p><b> 3.7顯示模塊</b></p><p> 本系統(tǒng)采用LCD12864液晶顯示,用于直觀地提示用戶輸入開鎖密碼、密碼信息的正誤提示、開鎖信息的顯示等,顯示整個電子密碼鎖的工作狀態(tài),如圖3.
51、12所示。</p><p> 圖3.12 12864液晶顯示模塊電路</p><p> 圖3.13 12864液晶顯示引腳功能表</p><p> 3.8紅外模塊電路原理圖</p><p> 1、紅外模塊電路如圖3.14。</p><p> 圖3.14 紅外模塊電路</p><p>
52、; 如上所示,左圖為紅外輸入,其中P3是紅外接收頭,“1”腳為信號輸出端,連接到單片機?!?”腳為接地端,“3”腳為電源端,其中C5起電源濾波作用,R9為信號端提供上拉電平。紅外線的光譜位于紅色光之外, 波長是0.76~1.5μm,比紅光的波長還長。紅外檢測是利用紅外線進行傳遞信息的一種控制方式,紅外檢測具有抗干擾,電路簡單,容易編碼和解碼,功耗小,成本低的優(yōu)點。紅外遙控幾乎適用所有家電的控制。紅外通信的基本原理是發(fā)送端將基帶二進制信
53、號調制為一系列的脈沖串信號(載波信號) ,通過紅外發(fā)射管發(fā)射紅外信號。常用的有通過脈沖寬度來實現(xiàn)信號調制的脈寬調制(PWM)和通過脈沖串之間的時間間隔來實現(xiàn)信號調制的脈時調制(PPM)兩種方法。脈時調制(PPM)是紅外數(shù)據(jù)協(xié)會(IrDA)和國際電子電工委員會(IEEE)都推薦的調制方式,本設計采用脈時調制方法,即用兩個脈沖串之間的時間間隔來表示二進制信息,數(shù)據(jù)比特的傳送仿照不帶奇偶校驗的RS232 [8]通信,首先產生一個同步頭,然后接
54、著 8 位數(shù)據(jù)比特。</p><p><b> 第四章 軟件設計</b></p><p><b> 4.1軟件工作流程</b></p><p> 軟件工作流程包括7個部分:系統(tǒng)的初始化、調用顯示、24C08的讀寫操作、校對開鎖、出錯報警處理、數(shù)據(jù)顯示、紅外檢測。初始化主要包括:中斷和定時器的初始化,以及系統(tǒng)參數(shù)等的
55、初始化;對24C08的讀寫操作主要完成對原先密碼進行更改或相關設置的目的,然后將更新后的密碼保存到其中。校對開鎖是要對輸入的密碼和保存在存儲器中的密碼相比較,相同就通過,否則要進入出錯報警階段。3次都輸入的是錯誤密碼,系統(tǒng)將長時間報警并自鎖,輸入管理員密碼解鎖。其它子模塊均為各個芯片的具體讀寫操作,通過單片機模擬讀寫時序。</p><p><b> 程序流程圖</b></p>
56、<p><b> 圖4.1 流程圖</b></p><p> 其余子模塊均為單片機模擬各芯片的讀寫時序,此處不做仔細闡述。</p><p><b> 4.2密碼修改流程</b></p><p> 按下更改密碼鍵,提示輸入舊密碼,舊密碼經(jīng)驗證后,提示輸入新密碼,兩次輸入新密碼無誤,按下確認鍵,密碼被存入2
57、4C08中,更改密碼成功,如圖4-2。</p><p> 圖4.2 密碼修改流程圖</p><p> 第五章 調試與實現(xiàn)</p><p><b> 5.1硬件調試</b></p><p> 單片機應用系統(tǒng)的硬件調試和軟件調試是分不開的.許多硬件故障只有通過軟、硬件聯(lián)調才能發(fā)現(xiàn),但一般是先排除系統(tǒng)中比較明顯的硬件
58、故障后才和軟件一起聯(lián)調。常見的硬件故障: (1)邏輯錯誤 硬件的邏輯錯誤是由于設計錯誤和焊接過程中的工藝錯誤而造成的,包括錯線、開路、短路等,其中最常見的是短路故障。 (2)元器件錯誤 元器件錯誤的原因有器件損壞或性能不符合要求,電解電容、二極管的極性接反或集成塊裝反等。 (3)可靠性差 應用系統(tǒng)可靠性差的原因很多,如內部和外部的干擾、電壓紋波系數(shù)過大、器件負載過重等均會造成系統(tǒng)的可靠性差。另外,走線和
59、布置的不合理也會造成系統(tǒng)可靠性差。 (4)電源故障 </p><p> 電源故障包括:電壓值不符合設計要求、電源功率不足、負載能力差、紋波太重等。 硬件調試辦法 脫機調試是在加電前,先用萬用表等工具,按圖紙仔細核對線路是否正確,并對元器件的安裝、型號、規(guī)格等進行仔細檢查,特別焊接時有無走線之間相互短路等。</p><p><b> 5.2軟件調試</b>
60、</p><p> 程序在KEIL C51上調試,采用模塊程序設計技術,則逐個模塊調好后再進行系統(tǒng)程序總調。 對于模塊結構程序.要一個個子程序分別調試。調試時,一定要符合入口條件和出口條件,調試可用單步運行和斷點運行方式,通過檢查用者系統(tǒng)的CPU現(xiàn)場情況、RAM的內容和I/O口的狀態(tài),檢測程序執(zhí)行結果是否符合設計要求,有無循環(huán)錯誤、有無機器碼錯誤以及轉移地址的錯誤,同時,還可以發(fā)現(xiàn)系統(tǒng)中存在的硬件設計錯
61、誤和軟件算法錯誤。 各程序模塊通過后,則可以把相關功能塊連在一起進行總調。這個階段若有故障,可以考慮各子程序運行時是否破壞了現(xiàn)場,緩沖單元、工作寄存器是否發(fā)生沖突,標志位的建立和清除是否有誤,堆棧區(qū)是否有溢出,輸入設備的狀態(tài)是否正常等等,若用者系統(tǒng)是在開發(fā)機的監(jiān)控程序下運行時,還要考慮用者緩沖單元是否和監(jiān)控程序的工作單元發(fā)生沖突。 單步和斷點調試后,還應進行連續(xù)調試,用以確定定時精度、CPU的實時響應等問題。 當全部
62、調試和修改完成后,將程序固化到AT89S51中。進行整機調試。各功能實現(xiàn)則調試完成。</p><p><b> 5.3軟件調試心得</b></p><p> 1.由于Keil C對中文支持不太好,因而會出現(xiàn)顯示的光標與光標實際所在不一致的現(xiàn)象,這會對修改中文注釋造成影響。在電腦界面下面,我們可以把字體設置為Courier,這樣就可以顯示正常。</p>
63、<p> 2.當使用有片外內存的MCU(如W77E58,它有1K片外內存)的時候,肯定要設置標志位,并且編譯方式要選擇大模式,否則會出錯。</p><p> 3.當使用Keil C跟蹤程序運行狀態(tài)的時候,要把引起Warning的語句屏蔽,否則有可能跟蹤語句的時候會出錯。</p><p> 4.在調用數(shù)組的時候,Keil C是首先把數(shù)組Load進內存。如果要在C中使用長數(shù)組
64、的時候,我們可以使用code關鍵字,這樣就實現(xiàn)了匯編的DB的功能,Keil C是不會把標志code的數(shù)組Load入內存的,它會直接讀取Rom。</p><p> 5.當編程涉及到有關通信,時序是很重要的。拉高管腳的執(zhí)行速度遠遠比檢查管腳電平的要快。</p><p> 6.在等待管腳電平變化的時候,我們需要設置好超時處理,否則程序就會因為一個沒有預計的錯誤而死鎖。</p>
65、<p> 7.能用C語言實現(xiàn)的地方,盡量不要用匯編,尤其在算法的實現(xiàn),用匯編是晦澀難懂。</p><p> 8.程序的幾個參數(shù)數(shù)組所占篇幅很大,其中液晶背景數(shù)組最長,有四千個Byte,因而把那些初始化數(shù)組都放在另外一個C文件,在主文件使用使用關鍵字extern定義,這樣就不會對主文件的編寫造成干擾。</p><p> 9.所有函數(shù)之間的相關性越低越有利于以后功能的擴展。&l
66、t;/p><p><b> 5.4結果分析</b></p><p> 通過以上的測試分析,超市存物柜密碼鎖能夠實現(xiàn)密碼開關鎖功能,在沒有輸入密碼前12864液晶顯示界面模式,當有人隨意按某個鍵后,系統(tǒng)退出界面模式進入輸入密碼模式,輸入三次密碼仍然錯誤系統(tǒng)報警,按鍵進入恢復出廠模式,輸入管理員密碼解鎖后蜂鳴器停止報警,恢復了出廠設置。如果要更改原密碼,在輸入原密碼后,按
67、鍵進入密碼修改模式,鍵入兩次新密碼無誤后,按確認鍵后密碼修改成功。</p><p> 5.5 Proteus仿真</p><p> 在硬件和軟件都能實現(xiàn)的條件下,利用Proteus進行仿真,通過不停的調試與改正,最后終于實現(xiàn)了密碼鎖的功能,Proteus仿真結果如圖5-1所示。</p><p> 當連好各個模塊電路的導線后,導入芯片程序,運行該密碼鎖仿真電路,
68、通過按鍵可以進行密碼鎖的開鎖,修改密碼,錯誤密碼3次以上報警的操作,LCD顯示屏顯示相應的操作現(xiàn)象,密碼正確可以開鎖,進而可以修改密碼,密碼錯誤三次以上由喇叭發(fā)出報警聲,如果系統(tǒng)出現(xiàn)錯誤還可以通過復位電路進行復位。</p><p> 總之,在原有的理論基礎上,通過Proteus能夠成功的進行密碼鎖基本操作的仿真,實現(xiàn)了相關的功能。如圖5-1。</p><p><b> 圖5-
69、1</b></p><p> 5.6 PCB板制作</p><p><b> 圖5-2</b></p><p> 第六章 總結與展望</p><p> 以上為畢業(yè)期間所作的畢業(yè)論文---超市存物柜密碼鎖設計,它經(jīng)過多次修改和整理,可以滿足設計的基本要求。輸入密碼時,如三次輸入錯誤,則進行報警,在輸入
70、時,12864顯示為“*”,在修改密碼時,則顯示數(shù)字。次設計還具有防盜功能,如對密碼控制系統(tǒng)進行破壞,有報警功能。</p><p> 通過對該課題的研究,加深對所學知識的理解,提高對課外知識的學習能力, 增強知識的應用能力,提高解決實際問題的能力,培養(yǎng)自我創(chuàng)新意識。積累實踐經(jīng)驗,為以后的發(fā)展打下基礎,也為以后我們自己在這方面的發(fā)展打下基礎,并能夠在這方面培養(yǎng)自己的興趣。&
71、lt;/p><p> 畢業(yè)設計是培養(yǎng)學生綜合運用所學知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程,隨著科學技術發(fā)展的日新日異,單片機已經(jīng)成為當今計算機應用中空前活躍的領域, 在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握單片機的開發(fā)技術是十分重要的。</p><p> 通過這次畢業(yè)設計,無論從選題到定稿,從理論到實踐都
72、使我學到了很多東西,它不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。同時也明白了理論與實踐相結合的重要性,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。</p><p><b> 致 謝</b></p><p> 三年的大學生活不知不
73、覺中就要結束了,在這段難忘的生活中,有許多美好的回憶,在畢業(yè)論文設計之中,我的老師和我的同學都不吝的指導我,我需要感謝的人太多太多,首先要感謝我的學校,感謝在這三年中讓我領悟到誠實做人,踏實做事,扎實做學問的深刻道理,讓我從一個懵懂得高中生變成一個成熟的大學生,其次我要感謝的是我的導師*老師。雖然*老師平日里工作繁多,但在我做畢業(yè)設計的每個階段,都給予我悉心的指導和幫助,關心我們每個階段所做的工作,當然,還要感謝寢室的兄弟們在我完成論文
74、的過程中給予我的幫助和鼓勵,也是他們陪我度過了這四年的生活,感謝能有這段美好的記憶。</p><p> 現(xiàn)在即將揮別我的學校、老師、同學,還有我三年的大學生活,雖然依依不舍,但是對未來的路,我充滿了信心。最后,感謝在大學期間認識我和我認識的所有人,有你們的陪伴,才有我大學生活的絢麗多彩。</p><p><b> 參考文獻</b></p><p
75、> [1] 王文海,彭可,周歡喜,單片機應用與實踐項目化教程.北京化學工業(yè)出版社,2010.6。</p><p> [2] 郭天祥,新概念51單片機C語言教程—入門、提高、開發(fā)、擴展全攻略.北京:電子工業(yè)出版社,2009.1。</p><p> [3] 祖龍起. 一種新型可編程密碼鎖. 大連輕工業(yè)學院學報,2002,(01)。;</p><p> [4
76、] 李明喜. 新型電子密碼鎖的設計. 機電產品開發(fā)與創(chuàng)新,2004,(03)。</p><p> [5] 王寬仁. 可靠安全的智能密碼鎖.電子技術應用.2001年第2期。</p><p> [6] 張毅剛,彭喜元,姜守達,喬立巖,新編MCS-51單片機應用設計第三版,哈爾濱工業(yè)大學出版社,2009.8。</p><p><b> 附錄1元器件清單&l
77、t;/b></p><p><b> 附錄2 程序清單</b></p><p> /*-----------------------------------------------------------------------</p><p><b> 密碼鎖源程序</b></p><p&
78、gt; ----------------------------------------------------------------------**/</p><p> #include<reg52.h></p><p> #include <INTRINS.H></p><p> #include<string.h>
79、</p><p> #include"iic.h"</p><p> #include"keyscan.h"</p><p> #include"LCD12864.h"</p><p> #include "hongwai.h"</p>&l
80、t;p> #define uchar unsigned char</p><p> #define uint unsigned int </p><p> sbit shuchu=P3^2;</p><p> sbit jieyong=P2^7;</p><p> uchar code lcd_table1[]={"
81、 --密碼鎖-- "};</p><p> uchar code lcd_table2[]={"您好,請輸入密碼"};</p><p> uchar code lcd_table3[]={"******"};</p><p> uchar code lcd_table4[]={"☆★◇◆◆◇★
82、☆"};</p><p> uchar code lcd_table5[]={"恭喜您密碼對了!"};</p><p> uchar code lcd_table6[]={" 輸入錯誤?。?!"};</p><p> uchar code lcd_table7[]={"請輸入新的密碼 "}
83、;</p><p> uchar code lcd_table8[]={"請再次輸入密碼 "};</p><p> uchar code lcd_table9[]={"密碼修改成功??!"};</p><p> uchar code lcd_table10[]={"密碼修改失?。?!"};</p&
84、gt;<p> uchar code lcd_table11[]={" "};</p><p> uchar code lcd_table12[]={"B-->修改密碼 "};</p><p> uchar code lcd_table13[]={"按任意鍵返回 "
85、;};</p><p> uchar code lcd_table14[]={"已鎖定,輸入無效"};</p><p> uchar code lcd_table15[]={"如有必要,請聯(lián)系"};</p><p> uchar code lcd_table16[]={"開鎖公司,切勿強"};<
86、/p><p> uchar code lcd_table17[]={"行開鎖! "};</p><p> uchar mima_table5[]={2,3,4,5,6,7};//原始密碼</p><p> uchar mima_table2[]={10,10,10,10,10,10};//輸入密碼緩存</p><
87、;p> uchar mima_table3[]={10,10,10,10,10,10};//改密輸入緩存</p><p> uchar mima_table4[]={10,10,10,10,10,10};//改密確認輸入緩存</p><p> uchar mima_table1[]={10,10,10,10,10,10};//原始密碼</p><p>
88、 uchar iic_add;</p><p> void delayms()</p><p><b> {</b></p><p><b> uint i;</b></p><p> for(i=0;i<300;i++);</p><p><b>
89、 }</b></p><p> void main()</p><p><b> {</b></p><p> uint knum=16;</p><p> uchar i,k=0;</p><p> uchar gaimi=0,querengaimi=0,zisuo=0;&
90、lt;/p><p> jieyong=0;</p><p> lcm_init();</p><p><b> SDA=1;</b></p><p><b> SCL=1;</b></p><p> /*iic_add=0x00;</p><p>
91、; for(i=0;i<6;i++)</p><p><b> {</b></p><p> iic_write(iic_add, mima_table5[i]);</p><p> iic_add++;</p><p> delayms(); </p><p>
92、<b> }*/</b></p><p> iic_add=0x00;</p><p> for(i=0;i<6;i++)</p><p><b> {</b></p><p> mima_table1[i]=iic_readtoaddr(iic_add);</p>
93、<p> iic_add++;</p><p> delayms();</p><p><b> } </b></p><p> //****************************</p><p> /**lcm_weizhi(0,0);</p>
94、<p><b> i=0;</b></p><p> while(i<6)</p><p><b> {</b></p><p> write_sj(mima_table1[i]+0x30);</p><p><b> i++;</b></p&g
95、t;<p><b> }</b></p><p> while(1); **/</p><p> //****************************</p><p><b> while(1)</b></p><p><b> {</b>&
96、lt;/p><p><b> knum=16;</b></p><p> knum=keyscan();</p><p> //write_zl(0x01);</p><p><b> do</b></p><p><b> {</b></p
97、><p> knum=keyscan();</p><p> lcm_weizhi(0,0);</p><p><b> i=0;</b></p><p> while(lcd_table1[i]!='\0')</p><p><b> {&
98、lt;/b></p><p> write_sj(lcd_table1[i]);</p><p><b> i++;</b></p><p><b> } </b></p><p> lcm_weizhi(1,0);</p><p><b> i=0
99、;</b></p><p> while(lcd_table2[i]!='\0')</p><p><b> {</b></p><p> write_sj(lcd_table2[i]);</p><p><b> i++;</b></p><
100、p><b> }</b></p><p> }while(knum==16);</p><p> if(knum<=9)//密碼輸入</p><p><b> {</b></p><p> mima_table2[k]=knum;//將鍵值賦到輸入緩存中</p>
101、<p><b> k++;</b></p><p> lcm_weizhi(2,0);</p><p><b> i=0;</b></p><p> while(i<k)</p><p><b> {</b></p><p>
102、; write_sj(lcd_table3[i]);</p><p><b> i++;</b></p><p><b> }</b></p><p><b> if(k>6)</b></p><p><b> k=0;</b></p
103、><p><b> }</b></p><p> lcm_weizhi(3,0);</p><p><b> i=0;</b></p><p> while(i<k)</p><p><b> {</b></p><p&g
104、t; write_sj(mima_table2[i]+0x30);</p><p><b> i++;</b></p><p><b> } </b></p><p> if(knum==10)//確認開鎖</p><p><b> {</b></p>
105、<p><b> k=0;</b></p><p> write_zl(0x01);</p><p> if(mima_table2[0]==mima_table1[0]&&mima_table2[1]==mima_table1[1]</p><p> &&mima_table2[2]==m
106、ima_table1[2]&&mima_table2[3]==mima_table1[3]</p><p> &&mima_table2[4]==mima_table1[4]&&mima_table2[5]==mima_table1[5])//輸入正確</p><p> //if(strcmp(mima_table2,mima_tab
107、le1))</p><p><b> {</b></p><p><b> zisuo=0;</b></p><p><b> gaimi=1;</b></p><p> knum=keyscan();</p><p> while(knum
108、==16)</p><p><b> {</b></p><p> knum=keyscan();</p><p> lcm_weizhi(0,0);</p><p><b> i=0;</b></p><p> while(lcd_table4[i]!='
109、\0')</p><p><b> {</b></p><p> write_sj(lcd_table4[i]);</p><p><b> i++;</b></p><p><b> }</b></p><p> lcm_weizhi
110、(1,0);</p><p><b> i=0;</b></p><p> while(lcd_table5[i]!='\0')</p><p><b> {</b></p><p> write_sj(lcd_table5[i]);</p><p>
111、<b> i++;</b></p><p><b> }</b></p><p> lcm_weizhi(2,0);</p><p><b> i=0;</b></p><p> while(lcd_table12[i]!='\0')</p>
112、;<p><b> {</b></p><p> write_sj(lcd_table12[i]);</p><p><b> i++;</b></p><p><b> }</b></p><p> lcm_weizhi(3,0);</p>
113、<p><b> i=0;</b></p><p> while(lcd_table13[i]!='\0')</p><p><b> {</b></p><p> write_sj(lcd_table13[i]);</p><p><b> i++
114、;</b></p><p><b> }</b></p><p><b> shuchu=0;</b></p><p><b> }</b></p><p> for(i=0;i<=6;i++)</p><p> mima_t
115、able2[i]=10;</p><p><b> }</b></p><p> else//輸入錯誤</p><p><b> {</b></p><p><b> zisuo++;</b></p><p><b> gaimi=0
116、;</b></p><p> knum=keyscan();</p><p> while(knum==16)</p><p><b> {</b></p><p> knum=keyscan();</p><p> lcm_weizhi(1,0);</p>&
117、lt;p><b> i=0;</b></p><p> while(lcd_table6[i]!='\0')</p><p><b> {</b></p><p> write_sj(lcd_table6[i]);</p><p><b> i++;<
118、/b></p><p><b> }</b></p><p> lcm_weizhi(2,0);</p><p><b> i=0;</b></p><p> while(lcd_table13[i]!='\0')</p><p><b&g
119、t; {</b></p><p> write_sj(lcd_table13[i]);</p><p><b> i++;</b></p><p><b> }</b></p><p><b> }</b></p><p><
120、b> }</b></p><p> lcm_weizhi(2,0);</p><p><b> i=0;</b></p><p> while(lcd_table11[i]!='\0')</p><p><b> {</b></p><
121、p> write_sj(lcd_table11[i]);</p><p><b> i++;</b></p><p><b> }</b></p><p> lcm_weizhi(3,0);</p><p><b> i=0;</b></p>&l
122、t;p> while(lcd_table11[i]!='\0')</p><p><b> {</b></p><p> write_sj(lcd_table11[i]);</p><p><b> i++;</b></p><p><b> }</b
123、></p><p><b> }</b></p><p> ///***********************************</p><p> if(knum==11&&gaimi==1) //改密</p><p><b> {</b></p>
124、<p> write_zl(0x01);</p><p> knum=keyscan();</p><p><b> do</b></p><p><b> {</b></p><p> knum=keyscan();</p><p> lcm_wei
125、zhi(0,0);</p><p><b> i=0;</b></p><p> while(lcd_table1[i]!='\0')</p><p><b> {</b></p><p> write_sj(lcd_table1[i]);</p><p&
126、gt;<b> i++;</b></p><p><b> } </b></p><p> lcm_weizhi(1,0);</p><p><b> i=0;</b></p><p> while(lcd_table7[i]!='\0')</p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文--超市存包柜密碼鎖的設計
- 畢業(yè)論文_超市存包柜密碼鎖的設計
- 密碼鎖畢業(yè)設計
- 無限密碼鎖畢業(yè)設計
- 電子密碼鎖畢業(yè)設計
- 密碼鎖畢業(yè)設計論文
- 電子密碼鎖畢業(yè)設計
- 電子密碼鎖畢業(yè)設計
- 畢業(yè)設計---電子密碼鎖設計
- 電子密碼鎖設計畢業(yè)設計
- 電子密碼鎖的畢業(yè)設計
- 電子密碼鎖畢業(yè)設計論文
- 紅外遙控密碼鎖畢業(yè)設計
- 電子密碼鎖畢業(yè)設計論文
- 電子密碼鎖畢業(yè)設計 (2)
- 畢業(yè)設計220數(shù)字密碼鎖設計
- 畢業(yè)設計220數(shù)字密碼鎖設計
- 電子密碼鎖設計畢業(yè)設計論文
- 電子密碼鎖的畢業(yè)設計論文
- 單片機密碼鎖畢業(yè)設計
評論
0/150
提交評論