基于單片機(jī)的電子密碼鎖畢業(yè)論文_第1頁(yè)
基于單片機(jī)的電子密碼鎖畢業(yè)論文_第2頁(yè)
基于單片機(jī)的電子密碼鎖畢業(yè)論文_第3頁(yè)
基于單片機(jī)的電子密碼鎖畢業(yè)論文_第4頁(yè)
基于單片機(jī)的電子密碼鎖畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、課題名稱:基于單片機(jī)的電子密碼鎖課題名稱:基于單片機(jī)的電子密碼鎖 班級(jí):班級(jí): 學(xué)號(hào):學(xué)號(hào): 姓名:姓名: 指導(dǎo)老師:指導(dǎo)老師: 時(shí)間:時(shí)間: 摘要摘要 在日常的生活和工作中, 住宅與部門的安全防范、單位的文件檔案、財(cái)務(wù) 報(bào)表以及一些個(gè)人資料的保存多以加鎖的辦法來(lái)解決。若使用傳統(tǒng)的機(jī)械式鑰 匙開(kāi)鎖,人們常需攜帶多把鑰匙, 使用極不方便, 且鑰匙丟失后安全性即大打折 扣。具有防盜報(bào)警等功能的電子密碼鎖代替密碼量少、安全性差的機(jī)械式密碼 鎖已是必然趨勢(shì)。隨著科學(xué)技術(shù)的不斷發(fā)展,人們對(duì)日常生活中的安全保險(xiǎn)器 件的要求越來(lái)越高。為滿足人們對(duì)鎖的使用要求,增加其安全性,用密碼代替 鑰匙的密碼鎖應(yīng)運(yùn)而生。

2、密碼鎖具有安全性高、成本低、功耗低、易操作、記 住密碼即可開(kāi)鎖等優(yōu)點(diǎn)。 目前使用的電子密碼鎖大部分是基于單片機(jī)技術(shù), 以單片機(jī)為主要器件,其編碼器與解碼器的生成為軟件方式。 本系統(tǒng)由 at89c51 單片機(jī)系統(tǒng)(主要是 at89c51 單片機(jī)最小系統(tǒng)) 、44 矩陣鍵盤、 1602lcd 顯示和報(bào)警系統(tǒng)等組成,具有設(shè)置、修改六位用戶密碼、超次報(bào)警、 密碼錯(cuò)誤報(bào)警等功能(本設(shè)計(jì)由 p0 口控制 lcd 顯示,由 p1 口控制矩陣鍵盤 含有 0-9 數(shù)字鍵和 a-e 功能鍵。初始密碼為“123456” 。當(dāng)輸入 09 的數(shù)字時(shí), 可以輸入密碼,不超過(guò) 6 位,輸入完成后按下“a”鍵開(kāi)鎖,密碼正確時(shí)

3、 led 點(diǎn)亮,液晶屏顯示開(kāi)鎖成功。其它鍵功能是:b 上鎖,c 重新輸入密碼,d 保 存新密碼,e 清除,重設(shè)密碼時(shí)要求先輸入正確密碼成功開(kāi)鎖) ,除上述基本的 密碼鎖功能外,依據(jù)實(shí)際的情況還可以添加遙控功能。本系統(tǒng)成本低廉,功能 實(shí)用。 關(guān)鍵詞關(guān)鍵詞 at89c51 1602lcd 電子密碼鎖 44 鍵盤 abstract in the day-to-day living and working in the residential sector and the safety precautions, units of paper files, financial statements, a

4、nd some personal information to the preservation of more than locking the solution to the problem. if the use of traditional mechanical key to unlock, people often need to carry more keys, a very inconvenient to use, and after the loss of key security that is greatly reduced. with anti-theft alarm f

5、unction instead of the password is less electronic lock, security, poor mechanical lock is an inevitable trend。 with the continuous development of science and technology, in the daily lives of people on insurance safety devices increasingly demanding. to meet the requirements of the use of locks to

6、increase their security, with a password instead of the password key lock came into being. password lock is safe, low cost, low power consumption, easy to operate, remember the password to unlock it , and other advantages. at present the use of electronic locks are mostly based on microprocessor, ma

7、in devices mcu, the encoder and decoder built into software. scm system from the system(mainly at89c51 microcontroller minimum system), 44 matrix keyboard, lcd display and alarm system, with the settings, modify the six user password, ultra alarm, ultra lock, password error alarm and other functions

8、(p0 port to control the design of the lcd display, password correctly display password ok!password error display password error! for more than three times to enter the error automatically lock. the p1 port control keyboard matrix containing the number keys 0-9 and a-f function keys). in addition to

9、the above basic password lock feature, based on the actual situation can also add a remote control functions. the system cost-effective, practical function. the system cost-effective, practical function key words at89c51 1602lcd electronic password lock 44 keyboard 目錄目錄 摘要.2 第一章 緒論.4 1.1 電子密碼鎖簡(jiǎn)介.4 1

10、.2 本設(shè)計(jì)所要實(shí)現(xiàn)的目標(biāo).5 1.3 設(shè)計(jì)方案簡(jiǎn)介.5 第二章 硬件電路設(shè)計(jì).5 2.1 設(shè)計(jì)原理.5 2.2 總體電路圖.6 2.3 鍵盤電路.7 2.4 顯示器電路.8 2.5 報(bào)警電路.8 2.6 密碼存儲(chǔ)電路.9 2.7 單片機(jī)電路.10 第三章 系統(tǒng)軟硬件設(shè)置及調(diào)試.11 3.1 keil c51 簡(jiǎn)介.11 3.2 程序源代碼.12 3.3 調(diào)試過(guò)程.19 3.4 proteus 仿真.19 第四章 主要元器件介紹.20 4.1 主控芯片 at89c51.20 4.2 存儲(chǔ)芯片 24c04a.22 結(jié)論與展望.23 致謝.24 參考文獻(xiàn).24 第一章第一章 緒論緒論 1.1 電子

11、密碼鎖簡(jiǎn)介電子密碼鎖簡(jiǎn)介 電子密碼鎖是一種通過(guò)密碼輸入來(lái)控制電路或是芯片工作,從而控制機(jī)械開(kāi)關(guān)的閉合, 完成開(kāi)鎖、閉鎖任務(wù)的電子產(chǎn)品。它的種類很多,有簡(jiǎn)易的電路產(chǎn)品,也有基于芯片的性 價(jià)比較高的產(chǎn)品?,F(xiàn)在應(yīng)用較廣的電子密碼鎖是以芯片為核心,通過(guò)編程來(lái)實(shí)現(xiàn)的。其性 能和安全性已大大超過(guò)了機(jī)械鎖。其特點(diǎn)如下: 1) 保密性好,編碼量多,遠(yuǎn)遠(yuǎn)大于彈子鎖。隨機(jī)開(kāi)鎖成功率幾乎為零。 2) 密碼可變,用戶可以隨時(shí)更改密碼,防止密碼被盜,同時(shí)也可以避免因 人員的更替而 使鎖的密級(jí)下降。 3) 誤碼輸入保護(hù),當(dāng)輸入密碼多次錯(cuò)誤時(shí),報(bào)警系統(tǒng)自動(dòng)啟動(dòng)。 4) 無(wú)活動(dòng)零件,不會(huì)磨損,壽命長(zhǎng)。 5) 使用靈活性好,不

12、像機(jī)械鎖必須佩帶鑰匙才能開(kāi)鎖。 6) 電子密碼鎖操作簡(jiǎn)單易行,一學(xué)即會(huì)。 1.2 本設(shè)計(jì)所要實(shí)現(xiàn)的目標(biāo)本設(shè)計(jì)所要實(shí)現(xiàn)的目標(biāo) 本設(shè)計(jì)所要實(shí)現(xiàn)的目標(biāo)本設(shè)計(jì)所要實(shí)現(xiàn)的目標(biāo)本設(shè)計(jì)所要實(shí)現(xiàn)的目標(biāo) 本設(shè)計(jì)采用 單片機(jī)為主控芯片,結(jié)合外圍電路,組成電子密碼鎖,用戶想要打開(kāi)鎖,必先通過(guò)提供的 鍵盤輸入正確的密碼才能將鎖打開(kāi),密碼輸入錯(cuò)誤有提示,為了提高安全性,當(dāng)密碼輸入 錯(cuò)誤三次將報(bào)警。密碼可以有用戶自己修改設(shè)定,鎖打開(kāi)后才能修改密碼。修改密碼之前 必須再次輸入就的密碼,在輸入新密碼的時(shí)候要二次確認(rèn),以防止誤操作。 1.3 設(shè)計(jì)方案簡(jiǎn)介設(shè)計(jì)方案簡(jiǎn)介 采用以單片機(jī)為核心的控制方案 由于單片機(jī)種類繁多,各種型號(hào)都

13、有其一定的應(yīng)用環(huán)境,因此在選用時(shí)要多加比較, 合理選擇,以期獲得最佳的性價(jià)比。一般來(lái)說(shuō)在選取單片機(jī)時(shí)從下面幾個(gè)方面考慮:性能、 存儲(chǔ)器、運(yùn)行速度、i/o 口、定時(shí)/計(jì)數(shù)器、串行接口、模擬電路功能、工作電壓、功耗、 封裝形式、抗干擾性、保密性,除了以上的一些的還有一些最基本的比如:中斷源的數(shù)量 和優(yōu)先級(jí)、工作溫度范圍、有沒(méi)有低電壓檢測(cè)功能、單片機(jī)內(nèi)有無(wú)時(shí)鐘振蕩器、有無(wú)上電 復(fù)位功能等。在開(kāi)發(fā)過(guò)程中單片機(jī)還受到:開(kāi)發(fā)工具、編程器、開(kāi)發(fā)成本、開(kāi)發(fā)人員的適 應(yīng)性、技術(shù)支持和服務(wù)等等因素1?;谝陨弦蛩乇驹O(shè)計(jì)選用單片機(jī) at89c51 作為本設(shè) 計(jì)的核心元件,利用單片機(jī)靈活的編程設(shè)計(jì)和豐富的 i/o 端

14、口,及其控制的準(zhǔn)確性,實(shí)現(xiàn) 基本的密碼鎖功能。在單片機(jī)的外圍電路外接輸入鍵盤用于密碼的輸入和一些功能的控制, 外接 at24c02 芯片用于密碼的存儲(chǔ),外接 lcd1602 顯示器用于顯示作用。當(dāng)用戶需要開(kāi) 鎖時(shí),先按鍵盤開(kāi)鎖鍵之后按鍵盤的數(shù)字鍵 09 輸入密碼。密碼輸完后按下確認(rèn)鍵,如果 密碼輸入正確則開(kāi)鎖,不正確顯示密碼錯(cuò)誤重新輸入密碼,當(dāng)三次密碼錯(cuò)誤則發(fā)出報(bào)警; 當(dāng)用戶需要修改密碼時(shí),先按下鍵盤設(shè)置鍵后輸入原來(lái)的密碼,只有當(dāng)輸入的原密碼正確 后才能設(shè)置新密碼。新密碼輸入無(wú)誤后按確認(rèn)鍵使新密碼將得到存儲(chǔ),密碼修改成功。 第二章第二章 硬件電路設(shè)計(jì)硬件電路設(shè)計(jì) 2.1 設(shè)計(jì)原理設(shè)計(jì)原理 本設(shè)

15、計(jì)主要由單片機(jī)、矩陣鍵盤、液晶顯示器和密碼存儲(chǔ)等部分組成。其中矩陣鍵盤 用于輸入數(shù)字密碼和進(jìn)行各種功能的實(shí)現(xiàn)。由用戶通過(guò)連接單片機(jī)的矩陣鍵盤輸入密碼, 后經(jīng)過(guò)單片機(jī)對(duì)用戶輸入的密碼與自己保存的密碼進(jìn)行對(duì)比,從而判斷密碼是否正確,然 后控制引腳的高低電平傳到開(kāi)鎖電路或者報(bào)警電路控制開(kāi)鎖還是報(bào)警,實(shí)際使用時(shí)只要將 單片機(jī)的負(fù)載由繼電器換成電子密碼鎖的電磁鐵吸合線圈即可,當(dāng)然也可以用繼電器的常 開(kāi)觸點(diǎn)去控制電磁鐵吸合線圈。 本系統(tǒng)共有兩部分構(gòu)成,即硬件部分與軟件部分。其中硬 件部分由電源輸入部分、鍵盤輸入部分、密碼存儲(chǔ)部分、復(fù)位部分、晶振部分、顯示部分、 報(bào)警部分、開(kāi)鎖部分組成,軟件部分對(duì)應(yīng)的由主程

16、序、初始化程序、lcd 顯示程序、鍵盤 掃描程序、啟動(dòng)程序、關(guān)閉程序、建功能程序、密碼設(shè)置程序、eeprom 讀寫程序和延時(shí) 程序等組成。 2.2 總體電路圖總體電路圖 在確定了選用什么型號(hào)的單片機(jī)后,就要確定在外圍電路,其外圍電路包括電源輸入部分、 鍵盤輸入部分、密碼存儲(chǔ)部分、復(fù)位部分、晶振部分、顯示部分、報(bào)警部分、開(kāi)鎖部分組 成,根據(jù)實(shí)際情況鍵盤輸入部分選擇 4*4 矩陣鍵盤,顯示部分選擇字符型液晶顯示 lcd1602,密碼存儲(chǔ)部分選用 24c04a 芯片來(lái)完成。 其原理圖如圖所示: p17 p14 p11 p10 p11 p13 p12 p14 p15 p16 p17 p10 p12 p

17、13 p15 p16 d0 d1 d2 d3 d4 d5 d6 d7 rs rw e rs rw e d0 d1 d2 d3 d4 d5 d6 d7 d7 d2 d1 d0 d3 d4 d5 d6 xtal2 18 xtal1 19 ale 30 ea 31 psen 29 rst 9 p0.0/ad0 39 p0.1/ad1 38 p0.2/ad2 37 p0.3/ad3 36 p0.4/ad4 35 p0.5/ad5 34 p0.6/ad6 33 p0.7/ad7 32 p1.0 1 p1.1 2 p1.2 3 p1.3 4 p1.4 5 p1.5 6 p1.6 7 p1.7 8 p3.0

18、/rxd 10 p3.1/txd 11 p3.2/int0 12 p3.3/int1 13 p3.4/t0 14 p3.7/rd 17 p3.6/wr 16 p3.5/t1 15 p2.7/a15 28 p2.0/a8 21 p2.1/a9 22 p2.2/a10 23 p2.3/a11 24 p2.4/a12 25 p2.5/a13 26 p2.6/a14 27 u1 at89c51 sck 6 sda 5 wp 7 a1 2 a2 3 u2 24c04a d7 14 d6 13 d5 12 d4 11 d3 10 d2 9 d1 8 d0 7 e 6 rw 5 rs 4 vss 1 vdd

19、 2 vee 3 lm044l 2 3 4 5 6 7 8 9 1 rp1 respack-8 d1 led-green r1 220 ls1 sounder 2.3 鍵盤電路鍵盤電路 由于本設(shè)計(jì)所用到的按鍵數(shù)量較多而不適合用獨(dú)立按鍵式鍵盤。采用的是矩陣式按鍵鍵盤, 它由行線和列線組成,也稱行列式鍵盤,按鍵位于行列的交叉點(diǎn)上,密碼鎖的密碼由鍵盤 輸入完成,與獨(dú)立式按鍵鍵盤相比,要節(jié)省很多 i/o 口。本設(shè)計(jì)中使用的這個(gè) 4*4 鍵盤不 但能完成密碼的輸入還能作特別功能鍵使用,比如清空顯示功能等。鍵盤的每個(gè)按鍵功能 在程序設(shè)計(jì)中設(shè)置 。其大體功能(看鍵盤按鍵上的標(biāo)記)及與單片機(jī)引腳接法如圖所示:

20、 p10 p11 p13 p12 p14 p15 p16 p17 2.4 顯示器電路顯示器電路 為了提高密碼鎖的密碼顯示效果能力。本設(shè)計(jì)的顯示部分由液晶顯示器 lcd1602 取 代普通的數(shù)碼管來(lái)完成。只有按下鍵盤上的開(kāi)啟按鍵后,顯示器才處于開(kāi)啟狀態(tài)。同理只 有按下關(guān)閉按鍵后顯示器才處于關(guān)閉狀態(tài)。否則顯示器將一直處于初始狀態(tài),當(dāng)需要對(duì)密 碼鎖進(jìn)行開(kāi)鎖時(shí),按下鍵盤上的開(kāi)鎖按鍵后利用鍵盤上的數(shù)字鍵 09 輸入密碼,每按下一 個(gè)數(shù)字鍵后在顯示器上顯示一個(gè)*,輸入多少位就顯示多少個(gè)*。當(dāng)密碼輸入完成時(shí),按下 確認(rèn)鍵,如果輸入的密碼正確的話, lcd 子顯示“right” ,單片機(jī)其中 p2.0 引角會(huì)

21、輸 出低電平,使三極管 t2 導(dǎo)通,電磁鐵吸合,電子密碼鎖被打開(kāi),如果密碼不正確,lcd 顯示屏?xí)@示“error” ,p2.0 輸出的是高電平,電子密碼鎖不能被打開(kāi)。通過(guò) lcd 顯示 屏,可以清楚的判斷出密碼鎖所處的狀態(tài) 。其顯示部分引腳接口如圖所示: rs rw e d0 d1 d2 d3 d4 d5 d6 d7 d7 d2 d1 d0 d3 d4 d5 d6 d7 14 d6 13 d5 12 d4 11 d3 10 d2 9 d1 8 d0 7 e 6 rw 5 rs 4 vss 1 vdd 2 vee 3 lm044l 2 3 4 5 6 7 8 9 1 rp1 respack-8

22、 2.5 報(bào)警電路報(bào)警電路 報(bào)警部分由陶瓷壓電發(fā)聲裝置及外圍電路組成,加電后不發(fā)聲,當(dāng)有鍵按下時(shí), “?!?聲,每按一下,發(fā)聲一次,密碼正確時(shí),密碼正確時(shí) led 點(diǎn)亮,液晶屏顯示開(kāi)鎖成功,揚(yáng) 聲器不發(fā)聲直接開(kāi)鎖,如圖所示。 當(dāng)密碼輸入錯(cuò)誤時(shí),單片機(jī)的 p3.7 引腳為低電平,三極管 t3 導(dǎo)喇叭發(fā)出噪鳴聲報(bào)警。如 圖所示: ls1 sounder 2.6 密碼存儲(chǔ)電路密碼存儲(chǔ)電路 24c04a 是 atmel 公司的 2kb 字節(jié)的電可擦除存儲(chǔ)芯片,采用兩線串行的總線和單片機(jī) 通訊,電壓最低可以到 2.5v,額定電流為 1ma,靜態(tài)電流 10ua(5.5v),芯片內(nèi)的資料可以 在斷電的情況下

23、保存 40 年以上,而且采用 8 腳的 dip 封裝,使用方便。其電路如圖所示 sck 6 sda 5 wp 7 a1 2 a2 3 u2 24c04a 2.7 單片機(jī)電路單片機(jī)電路 at89c51 是一種帶 4k 字節(jié) flash 存儲(chǔ)器(fperomflash programmable and erasable read only memory)的低電壓、高性能 cmos 8 位微處理器,俗稱單片機(jī)。 at89c2051 是一種帶 2k 字節(jié)閃存可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只 讀存儲(chǔ)器可以反復(fù)擦除 1000 次。該器件采用 atmel 高密度非易失存儲(chǔ)器制造技術(shù)制造, 與

24、工業(yè)標(biāo)準(zhǔn)的 mcs-51 指令集和輸出管腳相兼容。由于將多功能 8 位 cpu 和閃爍存儲(chǔ)器組 合在單個(gè)芯片中,atmel 的 at89c51 是一種高效微控制器,at89c2051 是它的一種精簡(jiǎn) 版本。at89c 單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案 p17 p14 p11 p10 p12 p13 p15 p16 d0 d1 d2 d3 d4 d5 d6 d7 rs rw e xtal2 18 xtal1 19 ale 30 ea 31 psen 29 rst 9 p0.0/ad0 39 p0.1/ad1 38 p0.2/ad2 37 p0.3/ad3 36 p0.4/

25、ad4 35 p0.5/ad5 34 p0.6/ad6 33 p0.7/ad7 32 p1.0 1 p1.1 2 p1.2 3 p1.3 4 p1.4 5 p1.5 6 p1.6 7 p1.7 8 p3.0/rxd 10 p3.1/txd 11 p3.2/int0 12 p3.3/int1 13 p3.4/t0 14 p3.7/rd 17 p3.6/wr 16 p3.5/t1 15 p2.7/a15 28 p2.0/a8 21 p2.1/a9 22 p2.2/a10 23 p2.3/a11 24 p2.4/a12 25 p2.5/a13 26 p2.6/a14 27 u1 at89c51 第三

26、章第三章 系統(tǒng)軟硬件設(shè)置及調(diào)試系統(tǒng)軟硬件設(shè)置及調(diào)試 本系統(tǒng)軟件設(shè)計(jì)由主程序、初始化程序、lcd 顯示程序、鍵盤掃描程序、鍵功能程 序、密碼設(shè)置程序、eeprom 讀寫程序和延時(shí)程序等組成 3.1 keil c51 簡(jiǎn)介簡(jiǎn)介 單片機(jī)的開(kāi)發(fā)離不開(kāi)必要的硬件同樣也離不開(kāi)軟件編寫的匯編語(yǔ)言源程序要變?yōu)?cpu 可以執(zhí)行的機(jī)器碼有兩種方法一種是手工匯編另一種是機(jī)器匯編。隨著單片機(jī)開(kāi) 發(fā)技術(shù)的不斷發(fā)展單片機(jī)的開(kāi)發(fā)軟件也在不斷的發(fā)展keil 軟件是目前最流行開(kāi)發(fā) 51 單 片機(jī)的軟件。 在硬件電路設(shè)計(jì)好的同時(shí)也需要軟件的開(kāi)發(fā)及使用。目前單片機(jī)類的課程 設(shè)計(jì)大多采用 keil 軟件來(lái)進(jìn)行程序的編寫。keil

27、不僅支持 c 語(yǔ)言還支持匯編語(yǔ)言。支持不 同型號(hào)的 mcs 系類的 51 單片機(jī)的型號(hào)。keil 軟件已從早期的第一代發(fā)展到第四代了有 了更強(qiáng)大的功能。 這款軟件的操作方法也很簡(jiǎn)單甚至有些必須采用很復(fù)雜的硬件電路才 能完成的工作用軟件編程有時(shí)會(huì)變得很簡(jiǎn)單這樣可以把復(fù)雜電路的輸入信號(hào)直接用信 號(hào)發(fā)生器給定或是用電源來(lái)給定通過(guò)對(duì)電壓電流的調(diào)節(jié)來(lái)實(shí)現(xiàn)。keil 工程的建立打開(kāi)已 安裝好的開(kāi)發(fā)環(huán)境進(jìn)入界面后選擇 project 然后在其下拉菜單中選擇 new project 選項(xiàng)如圖 所示 3.2 程序源代碼程序源代碼 主程序代碼如下:主程序代碼如下: #include #include #defin

28、e uchar unsigned char #define uint unsigned int uchar pre_keyno=16,keyno=16; uchar code title_text=your password.; uchar dsy_buffer10=; uchar userpassword10=; void lcd_init(); void display_string(uchar *str, uchar lineno); void iic_24c04_init(); void beep(); uchar recstring(uchar slave, uchar subadd

29、r, uchar *buffer,uchar n); uchar sendstring(uchar slave, uchar subaddr, uchar *buffer, uchar n); uchar keys_scan(); sbit led_open=p27; sbit beep=p37; void delayms(uint x) uchar i; while(x-) for(i=0;i120;i+); void beep() uchar i; for(i=0;i100;i+) delayms(1);beep=beep; beep=0; void clear_password() us

30、erpassword0=0; dsy_buffer0=0; void main() uchar i=0; uchar iic_password10; uchar is_valid_user=0; p0=p1=p2=0 xff; tmod=0 x02; th0=175; tl0=175; tr0=1; delayms(10); lcd_init(); iic_24c04_init(); display_string(title_text,0 x00); recstring(0 xa0,0,iic_password,6); iic_password6=0; while(1) p1=0 xf0; i

31、f(p1!=0 xf0) keyno=keys_scan(); if(pre_keyno!=keyno) if(i10) switch( keyno ) case 0: case 1: case 2: case 3; case 4: case 5: case 6: case 7: case 8: case 9: if(i=0) display_string( ,0 x40); userpasswordi=keyno+0; userpasswordi+1=0; dsy_bufferi=*; dsy_bufferi+1=0; display_string(dsy_buffer,0 x40); i+

32、; break; case 10: if(strcmp(userpassword,iic_password)=0) led_open=0; clear_password(); display_string(unlock ok! ,0 x40); is_valid_user=1; else led_open=1; clear_password(); display_string(error! ,0 x40); is_valid_user=0; i=0; break; case 11: led_open=1; clear_password(); display_string(title_text,

33、0 x00); display_string(,0 x40); i=0; is_valid_user=0; break; case 12: if(!is_valid_user) display_string(no rights! ,0 x40); else i=0; display_string(new password: ,0 x00); display_string( ,0 x40); break; case 13: if(!is_valid_user ) display_string(no rights! ,0 x40); else sendstring(0 xa0,0,userpass

34、word,6); recstring(0 xa0,0,iic_password,6); iic_password6=0; i=0; display_string(title_text,0 x00); display_string(password saved! , 0 x40); case 14: i=0; clear_password(); display_string(password saved!,0 x40); beep(); pre_keyno=keyno; delayms(100); 24c04 密碼存儲(chǔ)器子程序代碼如下:密碼存儲(chǔ)器子程序代碼如下: #include #includ

35、e #define uchar unsigned char #define uint unsigned int #define delay4us();_nop_();_nop_();_nop_();_nop_(); sbit scl=p32; sbit sda=p33; void start() sda=1;scl=1;delay4us();sda=1;delay4us();scl=0; void stop() sda=0;scl=1;delay4us();sda=1;delay4us();scl=0; void iic_24c04_init() scl=0;stop(); void ack(

36、) sda=0;scl=1;delay4us();scl=0;sda=1; void no_ack() sda=1;scl=1;delay4us();scl=0;sda=0; uchar recbyte() uchar i,rd; rd=0 x00; sda=1; for(i=0;i8;i+) scl=1;rd=1;rd|=sda;delay4us();scl=0;delay4us(); scl=0; delay4us(); return rd; uchar sendbyte(uchar wd) uchar i; bit ack0; for(i=0;i8;i+) sda= (bit)(wd _

37、nop_();_nop_();scl=1;delay4us();scl=0;wd=1; delay4us(); sda=1; scl=1; delay4us(); ack0=!sda; scl=0; delay4us(); return ack0; uchar sendstring(uchar slave,uchar subaddr,uchar *buffer,uchar n) uchar i; start(); if (!sendbyte(slave) return 0; if(!sendbyte(subaddr) return 0; for(i=0;in;i+) if(!sendbyte(

38、bufferi) return 0; stop(); return 1; uchar recstring(uchar slave,uchar subaddr,uchar *buffer,uchar n) uchar i; start(); if (!sendbyte(slave) return 0; if(!sendbyte(subaddr) return 0; start(); if(!sendbyte(slave+1) return 0; for(i=0;in-1;i+) bufferi=recbyte(); ack(); buffern-1=recbyte(); no_ack(); st

39、op(); return 1; 按鍵程序代碼如下:按鍵程序代碼如下: #include #define uchar unsigned char #define uint unsigned int void delayms(uint x); uchar keys_scan() uchar tmp,keyno=0; p1=0 x0f; delayms(1); tmp=p10 x0f; switch(tmp) case 1: keyno=0; break;case 2: keyno=1; break; case 4: keyno=2; break; case 8: keyno=3; break; d

40、efault: keyno=16; p1=0 xf0; delayms(1); tmp=p140 x0f; switch(tmp) case 1: keyno+=0; break; case 2: keyno+=4; break; case 4: keyno+=8; break; case 8: keyno+=12; return keyno; 3.3 調(diào)試過(guò)程調(diào)試過(guò)程 程序在 keil c51 上調(diào)試,采用模塊程序設(shè)計(jì)技術(shù),則逐個(gè)模塊調(diào)好后再進(jìn)行系統(tǒng)程序 總調(diào)。 對(duì)于模塊結(jié)構(gòu)程序要一個(gè)個(gè)子程序分別調(diào)試。調(diào)試時(shí),一定要符合入口條件 和出口條件,調(diào)試可用單步運(yùn)行和斷點(diǎn)運(yùn)行方式,通過(guò)檢查用者系統(tǒng)的

41、 cpu 現(xiàn)場(chǎng)情況、ram 的內(nèi)容和 io 口的狀態(tài),檢測(cè)程序執(zhí)行結(jié)果是否符合設(shè)計(jì)要求,有無(wú)循環(huán)錯(cuò)誤、有無(wú)機(jī)器碼 錯(cuò)誤以及轉(zhuǎn)移地址的錯(cuò)誤,同時(shí),還可以發(fā)現(xiàn)系統(tǒng)中存在的硬件設(shè)計(jì)錯(cuò)誤和軟件算法錯(cuò)誤。 各程序模塊通過(guò)后,則可以把相關(guān)功能塊連在一起進(jìn)行總調(diào)。這個(gè)階段若有故障,可以考慮各 子程序運(yùn)行時(shí)是否破壞了現(xiàn)場(chǎng),緩沖單元、工作寄存器是否發(fā)生沖突,標(biāo)志位的建立和清除是 否有誤,堆棧區(qū)是否有溢出,輸入設(shè)備的狀態(tài)是否正常等等,若用者系統(tǒng)是在開(kāi)發(fā)機(jī)的監(jiān)控程 序下運(yùn)行時(shí),還要考慮用者緩沖單元是否和監(jiān)控程序的工作單元發(fā)生沖突。 單步和斷點(diǎn)調(diào)試后,還應(yīng)進(jìn)行連續(xù)調(diào)試,用以確定定時(shí)精度、cpu 的實(shí)時(shí)響應(yīng)等問(wèn)題。 當(dāng)

42、全部調(diào)試和修改完成后,將程序固化到 at89c51 中。進(jìn)行整機(jī)調(diào)試。各功能實(shí)現(xiàn)則調(diào)試 完成。 3.4 proteus 仿真仿真 protues 是目前使用比較廣泛的單片機(jī)類的仿真系統(tǒng)的軟件之一它可以實(shí)現(xiàn)的功能 比較多可以實(shí)現(xiàn)程序與原理圖的連調(diào)也可以單獨(dú)作為繪制原理圖的工具使用與 protel 有著過(guò)之不及的功能于此同時(shí)還可以進(jìn)行 pcb 版圖的生成在方法中與 protel 類 似。此款軟件及繪制原理圖、pcb 版圖和仿真于一身。protues 此款軟件的使用比較簡(jiǎn)單。 在運(yùn)行環(huán)境搭載好的前提下打開(kāi) isis 直接進(jìn)入到主界面在左邊欄框中有一個(gè)快捷鍵 p(從庫(kù)中選取)點(diǎn)擊后出現(xiàn)一個(gè)對(duì)話框然后輸

43、入想要查找的元器件即可。之后在單擊確定 按鍵所選器件就會(huì)顯示在界面左上角的小框中此時(shí)點(diǎn)擊鼠標(biāo)左鍵就會(huì)放到圖層中然后直 接把鼠標(biāo)放到接頭處就會(huì)顯示一個(gè)畫筆的標(biāo)志此時(shí)按住鼠標(biāo)左鍵就可進(jìn)行連線了。 第四章第四章 主要元器件介紹主要元器件介紹 4.1 主控芯片主控芯片 at89c51 單片機(jī) at89c51 功能介紹 at89c51 是一種帶 4k 字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(fperomfalsh programmable and erasable read only memory)的低電壓,高性能 cmos8 位微處理器,俗 稱單片機(jī)。at89c2051 是一種帶 2k 字節(jié)閃爍可編程可擦除只

44、讀存儲(chǔ)器的單片機(jī)。單片機(jī) 的可擦除只讀存儲(chǔ)器可以反復(fù)擦除 100 次。該器件采用 atmel 高密度非易失存儲(chǔ)器制造 技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的 mcs-51 指令集和輸出管腳相兼容。由于將多功能 8 位 cpu 和閃 爍存儲(chǔ)器組合在單個(gè)芯片中,atmel 的 at89c51 是一種高效微控制器,at89c2051 是它 的一種精簡(jiǎn)版本。at89c 單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。 主要特性: 與 mcs-51 兼容 4k 字節(jié)可編程閃爍存儲(chǔ)器 壽命:1000 寫/擦循環(huán) 數(shù)據(jù)保留時(shí)間:10 年 全靜態(tài)工作:0hz-24hz 三級(jí)程序存儲(chǔ)器鎖定 128*8 位內(nèi)部 ram

45、 32 可編程 i/o 線 兩個(gè) 16 位定時(shí)器/計(jì)數(shù)器 5 個(gè)中斷源 可編程串行通道 低功耗的閑置和掉電模式 片內(nèi)振蕩器和時(shí)鐘電路 管腳說(shuō)明: 下面按其引腳功能分為四部分?jǐn)⑹鲞@ 40 條引腳的功能。 1、主電源引腳 vss 和 vss at89s51 芯片引腳圖 vss(40 腳)接+5v 電壓; vss(20 腳)接地。 2、外接晶體引腳 xtal1 和 xtal2 xtal1(19 腳)接外部晶體的一個(gè)引腳。在單片機(jī)內(nèi)部,它是一個(gè)反相放大器的輸 入端,這個(gè)放大器構(gòu)成了片內(nèi)振蕩器。當(dāng)采用外部振蕩器時(shí),對(duì) hmos 單片機(jī),此引腳應(yīng) 接地;對(duì) shmos 單片機(jī),此引腳作為驅(qū)動(dòng)端。 xtal

46、2(18 腳)接外晶體的另一端。在單片機(jī)內(nèi)部,接至上述振蕩器的反相放大器 的輸出端。采用外部振蕩器時(shí),對(duì) hmos 單片機(jī),該引腳接外部振蕩器的信號(hào),即把外部 振蕩器的信號(hào)直接接到內(nèi)部時(shí)鐘發(fā)生器的輸入端;對(duì) xhmos,此引腳應(yīng)懸浮。 3、控制或與其它電源復(fù)用引腳 rst/vpd、ale/prog、psen 和 ea/vpp rst/vpd(9 腳)當(dāng)振蕩器運(yùn)行時(shí),在此腳上出現(xiàn)兩個(gè)機(jī)器周期的高電平將使單片 機(jī)復(fù)位。推薦在此引腳與 vss 引腳之間連接一個(gè)約 8.2k 的下拉電阻,與 vss 引腳之間連 接一個(gè)約 10f 的電容,以保證可靠地復(fù)位。 vss 掉電期間,此引腳可接上備用電源,以保證

47、內(nèi)部 ram 的數(shù)據(jù)不丟失。當(dāng) vss 主電源下掉到低于規(guī)定的電平,而 vpd 在其規(guī)定的電壓范圍(50.5v)內(nèi),vpd 就向內(nèi) 部 ram 提供備用電源。 ale/prog(30 腳):當(dāng)訪問(wèn)外部存貯器時(shí),ale(允許地址鎖存)的輸出用于 鎖存地址的低位字節(jié)。即使不訪問(wèn)外部存儲(chǔ)器,ale 端仍以不變的頻率周期性地出現(xiàn)正脈 沖信號(hào),此頻率為振蕩器頻率的 1/6。因此,它可用作對(duì)外輸出的時(shí)鐘,或用于定時(shí)目的。 然而要注意的是,每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè) ale 脈沖。ale 端可以驅(qū)動(dòng) (吸收或輸出電流)8 個(gè) ls 型的 ttl 輸入電路。 對(duì)于 eprom 單片機(jī)(如 8751)

48、 ,在 eprom 編程期間,此引腳用于輸入編程脈沖(prog) 。 psen(29 腳):此腳的輸出是外部程序存儲(chǔ)器的讀選通信號(hào)。在從外部程序存儲(chǔ) 器取指令(或常數(shù))期間,每個(gè)機(jī)器周期兩次 psen 有效。但在此期間,每當(dāng)訪問(wèn)外部數(shù) 據(jù)存儲(chǔ)器時(shí),這兩次有效的 psen 信號(hào)將不出現(xiàn)。psen 同樣可以驅(qū)動(dòng)(吸收或輸出)8 個(gè) ls 型的 ttl 輸入。 ea/vpp(引腳):當(dāng) ea 端保持高電平時(shí),訪問(wèn)內(nèi)部程序存儲(chǔ)器,但在 ps(程序 計(jì)數(shù)器)值超過(guò) 0fffh(對(duì) 851/8751/80s51)或 1fffh(對(duì) 8052)時(shí),將自動(dòng)轉(zhuǎn)向執(zhí)行外 部程序存儲(chǔ)器內(nèi)的程序。當(dāng) ea 保持低電平

49、時(shí),則只訪問(wèn)外部程序存 儲(chǔ)器,不管是否有內(nèi) 部程序存儲(chǔ)器。對(duì)于常用的 8031 來(lái)說(shuō),無(wú)內(nèi)部程序存儲(chǔ)器,所以 ea 腳須常接地,這樣才 能只選擇外部程序存儲(chǔ)器。 對(duì)于 eprom 型的單片機(jī)(如 8751) ,在 eprom 編程期間,此引腳也用于施加 21v 的編程電源(vpp) 。 4控制或與其它電源復(fù)用引腳 rst/vpd,ale/prog,psen 和 ea/vpp。 rst/vpd 當(dāng)振蕩器運(yùn)行時(shí)。在此引腳上出現(xiàn)兩個(gè)機(jī)器同期的高電平(由低到高跳變) , 將使單片機(jī)復(fù)位。 在 vss 掉電期間,此引腳可接上備用電源,由 vpd 向內(nèi)部 ram 提供備用電源,以保持內(nèi)部 ram 中的數(shù)據(jù)

50、。 ale/prog 正常操作時(shí)為 ale 功能(允許地址錢存) ,提供把地址的低字節(jié)鎖存到外 部鎖存器。ale 引腳以不變的頻率(振蕩周期的 1/6)周期性地發(fā)出正脈沖信號(hào)。因此, 它可用作對(duì)外輸出的時(shí)鐘,或用于定時(shí)目的。但要注意,每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),將 跳過(guò)一個(gè) ale 脈沖。 ale 端可以驅(qū)動(dòng)(吸收或輸出電流)八個(gè) lsttl 電路。 對(duì)于 eprom 型單片機(jī),在 eprom 編程期間,此引腳接收編程脈沖(prog 功能) 。 psen 外部程序存儲(chǔ)器讀選通信號(hào)輸出端。在從外部程序存儲(chǔ)器取指令(或數(shù)據(jù)) 期間;psen 在每個(gè)機(jī)器周期內(nèi)兩次有效。 psen 同樣可以驅(qū)動(dòng)八個(gè) l

51、sttl 輸入。 eavpp ea 為內(nèi)部程序存儲(chǔ)器和外部程序存儲(chǔ)器選擇端。當(dāng) ea 為高電平時(shí),訪問(wèn) 內(nèi)部程序存儲(chǔ)器(ps 值小于 4k) 。當(dāng) ea 為低電平時(shí),則訪問(wèn)外部程序存儲(chǔ)器。對(duì)于 eprom 型單片機(jī),在 eprom 編程期間,此引腳上加 21veprom 編程電源(vpp) 。 5、輸入/輸出(i/o)引腳 p0、p1、p2、p3(共 32 根) p0 口(39 腳至 32 腳):是雙向 8 位三態(tài) i/o 口,在外接存儲(chǔ)器時(shí),與地址總線的 低 8 位及數(shù)據(jù)總線復(fù)用,能以吸收電流的方式驅(qū)動(dòng) 8 個(gè) ls 型的 ttl 負(fù)載。 p1 口(1 腳至 8 腳):是準(zhǔn)雙向 8 位 i/

52、o 口。由于這種接口輸出沒(méi)有高阻狀態(tài), 輸入也不能鎖存,故不是真正的雙向 i/o 口。p1 口能驅(qū)動(dòng)(吸收或輸出電流)4 個(gè) ls 型 的 ttl 負(fù)載。對(duì) 8052、8032,p1.0 引腳的第二功能為 t2 定時(shí)/計(jì)數(shù)器的外部輸入,p1.1 引腳的第二功能為 t2ex 捕捉、重裝觸發(fā),即 t2 外部控制端。對(duì) eprom 編程和程序驗(yàn)證 時(shí),它接收低 8 位地址。 p2 口(21 腳至 28 腳):是準(zhǔn)雙向 8 位 i/o 口。在訪問(wèn)外部存儲(chǔ)器時(shí),它可以作為 擴(kuò)展電路高 8 位地址總線送出高 8 位地址。在對(duì) eprom 編程和程序驗(yàn)證期間,它接收高 8 位地址。p2 可以驅(qū)動(dòng)(吸收或輸出

53、電流)4 個(gè) ls 型的 ttl 負(fù)載。 p3 口(10 腳至 17 腳):是準(zhǔn)雙向 8 位 i/o 口,在 mss-51 中,這 8 個(gè)引腳還用 于專門功能,是復(fù)用雙功能口。p3 能驅(qū)動(dòng)(吸收或輸出電流)4 個(gè) ls 型的 ttl 負(fù)載。 作為第一功能使用時(shí),就作為普通 i/o 口用,功能和操作方法與 p1 口相同。作為第 二功能使用時(shí),各引腳的定義如表所示。 值得強(qiáng)調(diào)的是,p3 口的每一條引腳均可獨(dú)立定義為第一功能的輸入輸出或第二功能。 p3 口管腳備選功能 p3.0rdx(串行輸入口) p3.1tdx(串行輸出口) p3.2/int0(外部中斷 0) p3.3/int1(外部中斷 1)

54、p3.4t0(計(jì)時(shí)器 0 外部輸入) p3.5t1(計(jì)時(shí)器 1 外部輸入) p3.6/wr(外部數(shù)據(jù)存儲(chǔ)器寫選通) p3.7/rd(外部數(shù)據(jù)存儲(chǔ)器讀選通) 4.2 存儲(chǔ)芯片存儲(chǔ)芯片 24c04a sck 6 sda 5 wp 7 a1 2 a2 3 u2 24c04a 各引腳主要功能介紹: 1 nc:空 2 a1:器件地址選擇引腳 3 a2:器件地址選擇引腳 4 gnd:地 5 sda:串行數(shù)據(jù)輸入輸出 6 sck;串行移位時(shí)鐘輸入 7 wp:硬件寫保護(hù)控制引腳 8 vcc:電源 結(jié)論與展望結(jié)論與展望 以上為畢業(yè)期間所作的畢業(yè)論文-基于單片機(jī)的電子密碼鎖設(shè)計(jì),它經(jīng)過(guò)多次修改和 整理,可以滿足設(shè)計(jì)的基本要求。 通過(guò)對(duì)該課題的研究,加深對(duì)所學(xué)知識(shí)的理解,提高對(duì) 課外知識(shí)的學(xué)習(xí)能力,增強(qiáng)知識(shí)的應(yīng)用能力,提高解決實(shí)際問(wèn)題的能力,培養(yǎng)自我創(chuàng)新意 識(shí)。積累實(shí)踐經(jīng)驗(yàn),為以后的發(fā)展打下基礎(chǔ),也為以后我們自己在這方面的發(fā)展打下基礎(chǔ), 并能夠在這方面培養(yǎng)自己的興趣。 在設(shè)計(jì)中我們必須首先熟悉和掌握單片機(jī)的結(jié)構(gòu)及工作 原理,單片機(jī)的接口技術(shù)及相關(guān)外圍芯片的外特性,控制方法。以單片機(jī)核心的電路設(shè)計(jì) 的基本方法和技術(shù)了解表關(guān)電路參數(shù)的計(jì)算方法。單片機(jī)不是完成某一個(gè)邏輯功能的芯片, 而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。概括的講:一塊芯片就成了一臺(tái)計(jì)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論