基于ATC的簡易電子密碼鎖說明書(完整資料)_第1頁
基于ATC的簡易電子密碼鎖說明書(完整資料)_第2頁
基于ATC的簡易電子密碼鎖說明書(完整資料)_第3頁
基于ATC的簡易電子密碼鎖說明書(完整資料)_第4頁
基于ATC的簡易電子密碼鎖說明書(完整資料)_第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

基于ATC的簡易電子密碼鎖說明書(完整資料)(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)

基于ATC的簡易電子密碼鎖說明書(完整資料)(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)湖南理工學(xué)院單片微機(jī)原理課程設(shè)計(jì)說明書設(shè)計(jì)題目:基于AT24C02的簡易電子密碼鎖院部:機(jī)械學(xué)院專業(yè):機(jī)械電子工程組長姓名:學(xué)號(hào):組員姓名:學(xué)號(hào):學(xué)號(hào):學(xué)號(hào):起迄日期:2016年6月19日2016年6月30日指導(dǎo)教師:教研室主任:目錄1引言.。。。..。.。.。.。..。。.。......。。。...。.41.1電子密碼鎖簡介.。.。。。...。..。.。......。..。..。...。41。2電子密碼鎖的發(fā)展趨勢.。。。.。.。..。。。。。...。。。.。。。.41。3本設(shè)計(jì)所要實(shí)現(xiàn)的目標(biāo)...。..。。.。......。。.52設(shè)計(jì)方案的選擇..。。。.。。....。..。。。.....。。。。。.....。52。1方案一:采用數(shù)字電路控制方案...。.。.。.。。.。.52.2方案二:采用無線遙控方式控制方案....。.。。。。..。。5HYPERLINK\l"_Toc201543239"2。3方案三:采用以單片機(jī)為核心的控制方案..。..。....53主要元器件介紹。。。。。.。.。.。。。....。..。...。.。。.。...。6HYPERLINK\l"_Toc201543241"3。1主控芯片AT89S51......。。。.。....。.。。。..。。。。..63.1。1AT89S51性能簡介.。。.。。。.。..。.。。.。.。.......63.1.2AT89S51引角功能說明.。.。。...。.。..。。。..。......。7HYPERLINK\l"_Toc201543242”3.2存儲(chǔ)芯片AT24C02.。...。....。..。。。.。...。。。。..。..。93。3LCD1602顯示器......。..。.。.。。...。......。。..。。。103.3.1接口信號(hào)說明。.。..。。。.。...。。......。...103.3.2主要技術(shù)參數(shù).....。。。......。。。...。.。.......。.113.3。3基本操作程序。.。.。。..。..。...。...。.。...。。。。.。.11HYPERLINK\l”_Toc201543244”3.4晶體振蕩器..。.。。.。。.。...。。.。。。..。..。.。.。..12HYPERLINK\l”_Toc201543245”4系統(tǒng)硬件構(gòu)成.。....。。..。。。...。。。。..。。.。......。。.。12HYPERLINK\l"_Toc201543246”4。1設(shè)計(jì)原理。.。.。.。...。....。。...。.。.。。。。..。。。。12HYPERLINK\l"_Toc201543247”4。2電路總體構(gòu)成....。。。..。。。...。.....。.....13HYPERLINK\l”_Toc201543249"4。3鍵盤輸入部分..。.。..。.。.。.....。...。.。。.....。...134.4密碼存儲(chǔ)部分。..。..。。。。......。..。...。。144.5復(fù)位部位..。.。.。.。.。。。。.。.。.。。。......。。.。.154.6晶振部分。.。.。......。。。.。。......。.。。..。....。15_Toc201543254”4。8報(bào)警部分..。。.....。....。.......。.....。.。。..。。.。。17PAGEREF_Toc201543254\h4.9開鎖部分。。。。。....。。。.。。。。...。。.。。..。....。。.18PAGEREF_Toc201543255\h5系統(tǒng)軟件設(shè)計(jì).。。。。。..。。.。。.。。.....。.。.........。。..19PAGEREF_Toc201543256\hHYPERLINK\l"_Toc201543257”6總結(jié).......。..。.。.。.。.。。。。...。...。。.。。.。。..。..。.。22PAGEREF_Toc201543257\h參考文獻(xiàn)..。。.........。。...。.。..。。..。。....。.。.。。.23PAGEREF_Toc201543259\hHYPERLINK\l"_Toc201543261”附錄一。。。。。...。.......。....。。.....。.。.....。。...。..。.23PAGEREF_Toc201543261\h附錄二..。..。.。...。。。.。..。.。.....。。..。.。...33PAGEREF_Toc201543262\h1引言HYPERLINK\l"_Toc201543234"1.1電子密碼鎖簡介電子密碼鎖是一種通過密碼輸入來控制電路或是芯片工作,從而控制機(jī)械開關(guān)的閉合,完成開鎖、閉鎖任務(wù)的電子產(chǎn)品。它的種類很多,有簡易的電路產(chǎn)品,也有基于芯片的性價(jià)比較高的產(chǎn)品。現(xiàn)在應(yīng)用較廣的電子密碼鎖是以芯片為核心,通過編程來實(shí)現(xiàn)的.其性能和安全性已大大超過了機(jī)械鎖。其特點(diǎn)如下:1)保密性好,編碼量多,遠(yuǎn)遠(yuǎn)大于彈子鎖。隨機(jī)開鎖成功率幾乎為零。2)密碼可變,用戶可以隨時(shí)更改密碼,防止密碼被盜,同時(shí)也可以避免因人員的更替而使鎖的密級(jí)下降.3)誤碼輸入保護(hù),當(dāng)輸入密碼多次錯(cuò)誤時(shí),報(bào)警系統(tǒng)自動(dòng)啟動(dòng)。4)無活動(dòng)零件,不會(huì)磨損,壽命長。5)使用靈活性好,不像機(jī)械鎖必須佩帶鑰匙才能開鎖。6)電子密碼鎖操作簡單易行,一學(xué)即會(huì)。1.2電子密碼鎖的發(fā)展趨勢在日常生活和工作中,住宅與部門的安全防范、單位的文件檔案、財(cái)務(wù)報(bào)表以及一些個(gè)人資料的保存多以加鎖的辦法來解決。目前門鎖主要用彈子鎖,其鑰匙容易丟失;保險(xiǎn)箱主要用機(jī)械密碼鎖,其結(jié)構(gòu)較為復(fù)雜,制造精度要求高,成本高,且易出現(xiàn)故障,人們常需攜帶多把鑰匙,使用極不方便,且鑰匙丟失后安全性即大打折扣。針對(duì)這些鎖具給人們帶來的不便若使用機(jī)械式鑰匙開鎖,為滿足人們對(duì)鎖的使用要求,增加其安全性,用密碼代替鑰匙的密碼鎖應(yīng)運(yùn)而生.它的出現(xiàn)為人們的生活帶來了很大的方便,有很廣闊的市場前景。由于電子器件所限,以前開發(fā)的電子密碼鎖,其種類不多,保密性差,最基本的就是只依靠最簡單的模擬電子開關(guān)來實(shí)現(xiàn)的,制作簡單但很不安全,在后為多是基于EDA來實(shí)現(xiàn)的,其電路結(jié)構(gòu)復(fù)雜,電子元件繁多,也有使用早先的20引角的2051系列單片機(jī)來實(shí)現(xiàn)的,但密碼簡單,易破解。隨著電子元件的進(jìn)一步發(fā)展,電子密碼鎖也出現(xiàn)了很多的種類,功能日益強(qiáng)大,使用更加方便,安全保密性更強(qiáng),由以前的單密碼輸入發(fā)展到現(xiàn)在的,密碼加感應(yīng)元件,實(shí)現(xiàn)了真真的電子加密,用戶只有密碼或電子鑰匙中的一樣,是打不開鎖的,隨著電子元件的發(fā)展及人們對(duì)保密性需求的提高出現(xiàn)了越來越多的電子密碼鎖。出于安全、方便等方面的需要許多電子密碼鎖已相繼問世。但這類產(chǎn)品的特點(diǎn)是針對(duì)特定有效卡、指紋或聲音有效,且不能實(shí)現(xiàn)遠(yuǎn)程控制,只能適用于保密要求高且供個(gè)人使用的箱、柜、房間等。由于數(shù)字、字符、圖形圖像、人體生物特征和時(shí)間等要素均可成為鑰匙的電子信息,組合使用這些信息能夠使電子防盜鎖獲得高度的保密性,如防范森嚴(yán)的金庫,需要使用復(fù)合信息密碼的電子防盜鎖,這樣對(duì)盜賊而言是“道高一尺、魔高一丈"。組合使用信息也能夠使電子防盜鎖獲得無窮擴(kuò)展的可能,使產(chǎn)品多樣化,對(duì)用戶而言是“千挑百選、自得其所”.可以看出組合使用電子信息是電子密碼鎖以后發(fā)展的趨勢。1.3本設(shè)計(jì)所要實(shí)現(xiàn)的目標(biāo)該密碼鎖初次使用時(shí)的原始密碼為123456,用戶輸入正確的密碼信息則能夠發(fā)出開鎖信號(hào)。功能要求:能夠修改密碼。只有輸入原設(shè)定的正確密碼后才能修改密碼.三次輸入開鎖密碼錯(cuò)誤,則啟動(dòng)報(bào)警。顯示按鍵信息,而且要有按鍵音。系統(tǒng)設(shè)0~9十個(gè)數(shù)字鍵,一個(gè)密碼修改鍵,一個(gè)確認(rèn)鍵。按下密碼修改鍵,先輸入原密碼,解密正確后鍵入新密碼,按確認(rèn)鍵生效。解密錯(cuò)誤啟動(dòng)報(bào)警,5秒鐘后報(bào)警自動(dòng)解除。技術(shù)要求:1、系統(tǒng)停電后,密碼信息不會(huì)丟失,上電后仍能正常執(zhí)行開鎖操作.2、系統(tǒng)安全可靠,不會(huì)出現(xiàn)死機(jī)現(xiàn)象。3、密級(jí)〈106。HYPERLINK\l"_Toc201543237”2設(shè)計(jì)方案的選擇2.1方案一:采用數(shù)字電路控制方案用以74LS112雙JK觸發(fā)器構(gòu)成的數(shù)字邏輯電路作為密碼鎖的核心控制,共設(shè)了9個(gè)用戶輸入鍵,其中只有4個(gè)是有效的密碼按鍵,其它的都是干擾按鍵,若按下干擾鍵,鍵盤輸入電路自動(dòng)清零,原先輸入的密碼無效,需要重新輸入;如果用戶輸入密碼的時(shí)間超過10秒(一般情況下,用戶不會(huì)超過10秒,若用戶覺得不便,還可以修改)電路將報(bào)警20秒,若電路連續(xù)報(bào)警三次,電路將鎖定鍵盤2分鐘,防止他人的非法操作。采用數(shù)字電路設(shè)計(jì)的方案好處就是設(shè)計(jì)簡單但控制的準(zhǔn)確性和靈活性差.故不采用。HYPERLINK4.7顯示部分為了提高密碼鎖的密碼顯示效果能力。本設(shè)計(jì)的顯示部分由液晶顯示器LCD1602取代普通的數(shù)碼管來完成。只有按下鍵盤上的開啟按鍵后,顯示器才處于開啟狀態(tài)。同理只有按下關(guān)閉按鍵后顯示器才處于關(guān)閉狀態(tài)。否則顯示器將一直處于初始狀態(tài),當(dāng)需要對(duì)密碼鎖進(jìn)行開鎖時(shí),按下鍵盤上的開鎖按鍵后利用鍵盤上的數(shù)字鍵0-9輸入密碼,每按下一個(gè)數(shù)字鍵后在顯示器上顯示一個(gè)*,輸入多少位就顯示多少個(gè)*.當(dāng)密碼輸入完成時(shí),按下確認(rèn)鍵,如果輸入的密碼正確的話,LCD子顯示“RIGHT”,單片機(jī)其中P3.0引角會(huì)輸出低電平,使三極管Q2導(dǎo)通,電磁鐵吸合,電子密碼鎖被打開,如果密碼不正確,LCD顯示屏?xí)@示“ERROR”,P3。0輸出的是高電平,電子密碼鎖不能被打開。通過LCD顯示屏,可以清楚的判斷出鎖所處的狀態(tài)。其顯示部分引腳接口如圖4—7所示:圖4-7顯示電路原理圖4。8報(bào)警部分報(bào)警部分由蜂鳴器發(fā)聲裝置及外圍電路組成,加電后不發(fā)聲,當(dāng)有鍵按下時(shí),“嘀”聲,每按一下,發(fā)聲一次,密碼正確時(shí),不發(fā)聲直接開鎖,當(dāng)密碼輸入錯(cuò)誤時(shí),單片機(jī)的P3.5引腳為低電平,三極管Q1導(dǎo)通轟鳴器發(fā)出噪鳴聲報(bào)警。如圖4-8所示:圖4-8報(bào)警電路原理圖PAGEREF_Toc201543254\h4.9開鎖部分開鎖控制電路的功能是當(dāng)輸入正確的密碼后將鎖打開。系統(tǒng)使用單片機(jī)其中一引腳線發(fā)出信號(hào),經(jīng)三極管放大后,由繼電器驅(qū)動(dòng)電磁閥動(dòng)作將鎖打開.用戶通過鍵盤任意設(shè)置密碼,并儲(chǔ)存在EEPROM中作為鎖碼指令。只有用戶操作鍵盤時(shí),單片機(jī)的電源端才能得到5V電源,否則.單片機(jī)處于節(jié)電工作方式。開鎖步驟如下:首先按下鍵盤上的開鎖按鍵,然后利用鍵盤上的數(shù)字鍵0-9輸入密碼,最后按下確認(rèn)鍵。當(dāng)用戶輸入一密碼后,單片機(jī)自動(dòng)識(shí)碼,如果識(shí)碼不符,則報(bào)警。只有當(dāng)識(shí)碼正確,單片機(jī)才能控制電子鎖內(nèi)的微型繼電器吸臺(tái)。當(dāng)繼電器吸臺(tái)以后帶動(dòng)鎖桿伸縮,這時(shí),鎖勾在彈簧的作用下彈起,完成本次開鎖。開鎖以后,單片機(jī)自動(dòng)清除掉由用戶輸人的這個(gè)密碼.如圖4—9所示:圖4-9開鎖電路原理圖5系統(tǒng)軟件設(shè)計(jì)本系統(tǒng)軟件設(shè)計(jì)由主程序、初始化程序、LCD顯示程序、鍵盤掃描程序、鍵功能程序、密碼設(shè)置程序、EEPROM讀寫程序和延時(shí)程序等組成。主要程序設(shè)計(jì)流程圖如下所示:PAGEREF_Toc201543256\h初始化初始化鍵盤掃描啟動(dòng)程序鍵盤掃描鍵功能程序關(guān)閉程序開始結(jié)束圖5-1主程序流程圖PAGEREF_Toc201543255\h鍵值=鍵值=‘0-9’?鍵值=‘開鎖’?鍵值=‘清除’?鍵值=‘設(shè)置’?鍵值=‘確認(rèn)’?密碼輸入程序設(shè)置程序清除程序開鎖程序確認(rèn)程序YYYYYNNNNN鍵值=‘清零’?清零程序YN返回功能鍵程序圖5-2鍵功能流程圖YYNNYNY初始化按下設(shè)置鍵輸舊密碼確認(rèn)程序所輸入舊密碼正確?輸新密碼確認(rèn)程序輸入次數(shù)加1次數(shù)>3?報(bào)警程序確認(rèn)程序再次輸新密碼兩次新密碼輸入相同?返回設(shè)置成功設(shè)置程序圖5-3密碼設(shè)置流程圖開鎖成功N開鎖成功NNYY初始化按開鎖鍵輸入密碼確認(rèn)程序所輸入密碼正確?輸入次數(shù)加1次數(shù)>3?報(bào)警程序返回開鎖程序圖5-4開鎖流程圖HYPERLINK\l”_Toc201543257"6總結(jié)隨著期末的到來,各種課程設(shè)計(jì)都在有序進(jìn)行中。經(jīng)過兩周的奮戰(zhàn),我的單片機(jī)課程設(shè)計(jì)終于完成了。在沒有做課程設(shè)計(jì)以前覺得課程設(shè)計(jì)只是對(duì)這門課程所學(xué)知識(shí)的單純總結(jié),但是通過這次做課程設(shè)計(jì)發(fā)現(xiàn)自己的看法有點(diǎn)太片面。課程設(shè)計(jì)不僅是對(duì)前面所學(xué)知識(shí)的一種檢驗(yàn),而且也是對(duì)自己能力的一種提高.通過這次課程設(shè)計(jì)使我明白了自己原來課堂所學(xué)知識(shí)還比較欠缺.自己要學(xué)習(xí)的東西還太多,以前老是覺得自己什么東西都會(huì),什么東西都懂,有點(diǎn)眼高手低。通過這次課程設(shè)計(jì),我才明白學(xué)習(xí)是一個(gè)長期積累的過程,在以后的工作、生活中都應(yīng)該不斷的學(xué)習(xí),努力提高自己知識(shí)和綜合素質(zhì)。在此要感謝老師的指導(dǎo),感謝同學(xué)給我的幫助。在設(shè)計(jì)過程中,我通過查閱大量有關(guān)資料,與同學(xué)交流經(jīng)驗(yàn)和自學(xué),并向同學(xué)請(qǐng)教等方式,使自己學(xué)到了不少知識(shí),也經(jīng)歷了不少艱辛,但收獲同樣巨大。在整個(gè)設(shè)計(jì)中我懂得了許多東西,也培養(yǎng)了我獨(dú)立工作的能力,樹立了對(duì)自己工作能力的信心,相信會(huì)對(duì)今后的學(xué)習(xí)工作生活有非常重要的影響.而且大大提高了實(shí)踐的能力,使我充分體會(huì)到了在創(chuàng)造過程中探索的艱難和成功時(shí)的喜悅。雖然這個(gè)設(shè)計(jì)做的也不太好,但是在設(shè)計(jì)過程中所學(xué)到的東西是這次課程設(shè)計(jì)的最大收獲和財(cái)富,使我終身受益。課程設(shè)計(jì)組2016年6月29日于湖南理工學(xué)院PAGEREF_Toc201543257\h參考文獻(xiàn):[1]彭偉編著.單片機(jī)C語言程序設(shè)計(jì)實(shí)訓(xùn)100例.電子工業(yè)出版社[2]趙全利主編。單片機(jī)原理及應(yīng)用教程.機(jī)械工業(yè)出版社.第3版[3]郭天祥編著.51單片機(jī)C語言教程.電子工業(yè)出版社[4]張文祥等編著.單片機(jī)系統(tǒng)設(shè)計(jì)與開發(fā)教程。電子工業(yè)出版社[5]康光華主編。電子技術(shù)基礎(chǔ).高等教育出版社。第五版[6]楊路明主編。C語言程序設(shè)計(jì)教程.北京郵電大學(xué)出版社.第2版PAGEREF_Toc201543259\h附錄一程序清單:#include<reg51。h〉#include<string。h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#defineLCDIOP2#definedelay4us()_nop_();_nop_();_nop_();_nop_();ucharbuffer[6]={0};sbitsda=P3^7;sbitscl=P3^6;sbitbeep=P3^5;sbitrs=P0^4;sbitrd=P0^3;sbitlcden=P0^2;sbitled=P3^0;bitflag=0,a=0,b=0,d=0,aa;unsignedintn=0;unsignedcharfrq,j=0;ucharDSY_BUFFER[16]="";ucharDSY_BUFFER1[16]="”;ucharUserpassword[6]={0};ucharcodetable2[]="123456";ucharcodetable[]="YourPassword。。。";voiddelayms(uintz)//延時(shí)Zms程序{uintx,y;for(x=z;x>0;x--)for(y=110;y〉0;y--);}voidbaojin()//報(bào)警發(fā)聲子程序{TMOD=0x01;frq=0x00;TH0=0x00;TL0=0xff;TR0=1;EA=1;ET0=1;n=0;while(n<5003){if(n>5000){TR0=0;beep=0;}frq++;n++;delayms(1);}}voidtimer0()interrupt1//定時(shí)器0中斷程序{TH0=0xfe;TL0=frq;{beep=~beep;}}voidBee(cuò)p()//按鍵發(fā)聲和報(bào)警發(fā)聲程序{uchari;if(j==3||(b==1&&d==0))baojin();else{for(i=0;i<100;i++){delayms(1);beep=~beep;}bee(cuò)p=0;}}voiddelay()//微秒延時(shí)程序{;;}voidwrite_com(ucharcom){rs=0;rd=0;lcden=0;P2=com;delayms(3);lcden=1;delayms(3);lcden=0;}voidwrite_date(uchardate){rs=1;rd=0;lcden=0;P2=date;delayms(3);lcden=1;delayms(3);lcden=0;}voidDisplay_String(uchar*p,ucharcom){uchari;write_com(com);for(i=0;i〈16;i++){write_date(p[i]);}}voidinit_lcd()//液晶顯示初始化{lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);Display_String(table,0x80);Display_String(”LockOK!",0xc0);}voidstart()//啟動(dòng)信號(hào){sda=1;scl=1;delay4us();sda=0;delay4us();scl=0;}voidstop()//停止信號(hào){sda=0;scl=1;delay4us();sda=1;delay4us();scl=0;}voidinit()//總線初始化{sda=1;delay();scl=1;delay();}voidack()//應(yīng)答信號(hào){sda=0;scl=1;delay4us();scl=0;sda=1;}voidnoack()//非應(yīng)答信號(hào){sda=1;scl=1;delay4us();scl=0;sda=0;}ucharrecbyte()//寫一個(gè)字節(jié){uchari,rd;rd=0x00;sda=1;for(i=0;i<8;i++){scl=1;rd<<=1;rd|=sda;delay4us();scl=0;delay4us();}scl=0;delay4us();returnrd;}ucharsendbyte(ucharwd)//讀一個(gè)字節(jié){uchari;bitack0;for(i=0;i<8;i++){sda=(bit)(wd&0x80);_nop_();_nop_();scl=1;delay4us();scl=0;wd<〈=1;}delay4us();sda=1;scl=1;delay4us();ack0=!sda;scl=0;delay4us();returnack0;}ucharRecstring(ucharslave,ucharsubaddr,uchar*buffer,ucharn){uchari;start();if(!sendbyte(slave))return0;if(!sendbyte(subaddr))return0;start();if(!sendbyte(slave+1))return0;for(i=0;i<n-1;i++){buffer[i]=recbyte();ack();}buffer[n—1]=recbyte();noack();stop();return1;}ucharSendstring(ucharslave,ucharsubaddr,uchar*buffer,ucharn){uchari;start();if(!sendbyte(slave))return0;if(!sendbyte(subaddr))return0;for(i=0;i<n;i++){if(!sendbyte(buffer[i]))return0;}stop();return1;}voidclear_password(){uchari;for(i=0;i<6;i++){Userpassword[i]='’;}for(i=0;i<16;i++){DSY_BUFFER[i]='’;}}ucharKeys_Scan()//鍵盤掃描程序{uchartemp,keynum;P1=0x0F;delayms(5);temp=P1^0x0F;switch(temp){case1:keynum=0;break;case2:keynum=1;break;case4:keynum=2;break;case8:keynum=3;break;break;}P1=0xF0;delayms(5);temp=P1>>4^0x0F;while(P1==0xF0){switch(temp){case1:keynum+=0;break;case2:keynum+=4;break;case4:keynum+=8;break;case8:keynum+=12;break;break;}d=1;Bee(cuò)p();d=0;delayms(600);returnkeynum;}voidmain()//主程序{uchartemp,i=0,k=0,n;ucharIS_valid_user;bee(cuò)p=1;init();init_lcd();delayms(5);aa=Sendstring(0xa0,1,table2,6);delayms(5);aa=Recstring(0xa0,1,buffer,6);delayms(10);P1=0x0f;while(1){if(P1!=0x0f){temp=Keys_Scan();switch(temp)//數(shù)字鍵{case0:case1:case2:case3:case4:case5:case6:case7:case8:case9:if(i〈=5){Userpassword[i]=temp;DSY_BUFFER[i]='*';Display_String(DSY_BUFFER,0xc0);i++;}break;case10://確定鍵if(!a){for(k=0;k<6;k++){if(buffer[k]==(Userpassword[k]+48))flag=1;elseflag=0;}if(flag==1){flag=0;i=0;led=0;clear_password();Display_String("",0x80);Display_String(”OPENOK!”,0xc0);IS_valid_user=1;j=0;}else{if(b==0)j++;if(j==3||b==1){Beep();b=0;}led=1;clear_password();Display_String("ERROR!Havetry”,0xc0);write_com(0xcf);write_date(0x30+j);IS_valid_user=0;}i=0;}else{if(!IS_valid_user){i=0;Display_String("Norights!”,0xc0);delayms(1000);Display_String("YourPassword。..",0x80);Display_String("LockOK!",0xc0);}else{i=0;init();delayms(5);for(k=0;k<6;k++){Userpassword[k]=Userpassword[k]+48;}aa=Sendstring(0xa0,1,Userpassword,6);delayms(5);aa=Recstring(0xa0,1,buffer,6);delayms(5);clear_password();Display_String(table,0x00);Display_String("",0x80);Display_String(”PasswordSaved!",0xc0);delayms(1000);Display_String("OPENOK!",0xc0);Display_String(””,0x80);a=0;}break;}break;case11://上鎖鍵led=1;clear_password();Display_String(table,0x80);Display_String("LockOK!",0xc0);i=0;IS_valid_user=0;break;case12://設(shè)置鍵a=1;if(!IS_valid_user){i=0;Display_String(”Norights!”,0xc0);delayms(1000);Display_String(”YourPassword.。。",0x80);Display_String("LockOK!",0xc0);a=0;b=1;}else{i=0;Display_String(”NowPassword..?!?,0x80);Display_String("",0xc0);}break;case13://未定義鍵break;case14://清零鍵i=0;clear_password();Display_String("”,0xc0);break;case15://清除鍵if(i!=0)i——;for(n=0;n〈i;n++){DSY_BUFFER1[n]='*';}Display_String(DSY_BUFFER1,0xc0);}P1=0x0f;}if(j==3){Display_String(”THIEF!!!THIEF?。。。?,0xc0);j=0;beep=0;}}}}PAGEREF_Toc201543261\h附錄二部分仿真結(jié)果展示:鎖關(guān):鎖開:設(shè)置密碼:密碼設(shè)置成功:密碼輸入錯(cuò)誤:PAGEREF_Toc201543262\h一、前言電子密碼鎖的使用體現(xiàn)了人們的消費(fèi)水平、保安意識(shí)和科技水平的提高,而且避免了攜帶甚至丟失鑰匙的麻煩。目前設(shè)計(jì)密碼鎖的方法很多,例如傳統(tǒng)的PCB板設(shè)計(jì)、用PLC設(shè)計(jì)或者單片機(jī)設(shè)計(jì)等等.而用VHDL可以更加快速、靈活地設(shè)計(jì)出符合各種要求的密碼鎖,優(yōu)于其他設(shè)計(jì)方法。VHDL是一種符合IEEE標(biāo)準(zhǔn)的硬件描述語言,其最大的特點(diǎn)是借鑒高級(jí)程序語言的功能特性,對(duì)電路的行為與結(jié)構(gòu)進(jìn)行高度的抽象化、規(guī)范化的形式描述,并對(duì)設(shè)計(jì)的不同層次、不同領(lǐng)域的模擬驗(yàn)證與綜合優(yōu)化等處理,使設(shè)計(jì)過程延到高度自動(dòng)化。二、方案設(shè)計(jì)密碼鎖的的構(gòu)成主要由密碼輸入、密碼設(shè)置、比較控制和報(bào)警部分組成,此外密碼鎖必須能夠保存已設(shè)置的密碼,因而需要一個(gè)寄存器來保存密碼,同時(shí)由于控制電路和報(bào)警電路要用到不同的時(shí)鐘,因而需要一個(gè)時(shí)序產(chǎn)生電路來生成需要的不同信號(hào),采用分頻方法實(shí)現(xiàn)。根據(jù)密碼鎖的電路特點(diǎn),選用的是實(shí)驗(yàn)箱的模式6電路,根據(jù)電路功能,在這里設(shè)計(jì)的密碼鎖以4位2進(jìn)制代碼作為密碼的電子密碼鎖.其原理框圖如下所示:報(bào)警電路時(shí)序產(chǎn)生電路報(bào)警電路時(shí)序產(chǎn)生電路比較控制比較控制密碼輸入開鎖信號(hào)密碼輸入開鎖信號(hào)寄存器(保存設(shè)置的密碼)寄存器(保存設(shè)置的密碼)密碼設(shè)置密碼設(shè)置圖一、電子密碼鎖原理框圖三、功能模塊的實(shí)現(xiàn)1、時(shí)序電路在密碼鎖的電路中,輸入計(jì)時(shí)、報(bào)警計(jì)時(shí)需要的1HZ的時(shí)鐘脈沖信號(hào),而驅(qū)動(dòng)蜂鳴器工作需要的很高頻率的脈沖信號(hào),因而這里采用輸入一個(gè)高頻脈沖(1024HZ)信號(hào)來驅(qū)動(dòng)蜂鳴器,采用分頻的方法得到1HZ的計(jì)時(shí)脈沖,程序如下:process(clk_1k)variablecnt1:integer:=0;beginifrising_edge(clk_1k)thenifcnt1=512thenclk_1〈=notclk_1;cnt1:=0;elsecnt1:=cnt1+1;endif;endif;endprocess;程序說明:clk_1k為輸入的1024HZ高頻脈沖,cnt為分頻得到的1HZ計(jì)時(shí)脈沖。2、密碼設(shè)置為了安全性,密碼鎖必須能夠重復(fù)的設(shè)定密碼,在設(shè)定密碼鎖后,應(yīng)該設(shè)置一個(gè)寄存器來存儲(chǔ)設(shè)定的密碼,程序如下:process(rst,password,enter_p)isbeginifrst=’0'thenifenter_p='1'thenram〈=password;en1〈='1';endif;endif;endprocess;程序說明:rst低電平時(shí)所有的模塊復(fù)位,只有密碼設(shè)置模塊工作;password為設(shè)置密碼時(shí)的輸入端,ram就是存儲(chǔ)密碼的寄存器;enter_p為在這里為密碼設(shè)置使能端,高電平有效。密碼設(shè)置的仿真波形如下圖,由圖中可以清楚地看到在enter_p高電平時(shí)寄存器ram中得到了輸入的密碼1001。圖二、密碼設(shè)置仿真波形密碼輸入密碼輸入部分要求在密碼開始輸入時(shí)進(jìn)行計(jì)時(shí),超時(shí)了要求報(bào)警,因此在密碼輸入時(shí)設(shè)置一個(gè)計(jì)時(shí)使能信號(hào)en2,密碼開始輸入時(shí)使能信號(hào)en2有效,控制電路的計(jì)時(shí)器開始計(jì)時(shí);而且在密碼確認(rèn)鍵按下之前,電路不能對(duì)輸入密碼和已設(shè)置密碼進(jìn)行比較,因此需要設(shè)置一個(gè)寄存器,來存儲(chǔ)輸入的數(shù)據(jù),當(dāng)確認(rèn)鍵按下時(shí),就將寄存器里的數(shù)據(jù)送給控制部分進(jìn)行比較。程序如下:process(rst,enter_c,en1,code)beginifrst=’1'thenifen1=’1'thenifenter_c=’1'thencode_tmp〈=code;en2〈='1';endif;elsecode_tmp<="0000";en2〈='0';endif;elsecode_tmp<="0000";en2<='0';endif;endprocess;程序說明:rst置高,設(shè)置密碼模塊不工作,其他部分正常工作,en1為高時(shí)代表密碼設(shè)置完畢,密碼鎖開始工作;enter_c是密碼輸入使能信號(hào),高電平時(shí)表示開始密碼輸入,此時(shí)code_tmp中開始存儲(chǔ)輸入的數(shù)據(jù),計(jì)時(shí)使能信號(hào)en2也變成高電平.密碼輸入仿真波形如下,由圖中可清楚的看到在enter_c為高時(shí),寄存器code_tmp中存儲(chǔ)了輸入的數(shù)據(jù)code(系統(tǒng)仿真時(shí)有10ns的延時(shí))。圖三、密碼輸入仿真波形控制部分此部分是密碼鎖設(shè)計(jì)的核心模塊,它實(shí)現(xiàn)密碼鎖的邏輯功能。開鎖代碼為4位二進(jìn)制數(shù),當(dāng)輸入代碼的位數(shù)和位值與鎖內(nèi)設(shè)置的密碼一致,且在規(guī)定時(shí)間內(nèi)開鎖,方可打開,并且點(diǎn)亮開鎖指示燈led_g;否則,系統(tǒng)進(jìn)入“錯(cuò)誤"狀態(tài),并且發(fā)出警報(bào)。警報(bào)的方式為蜂鳴器發(fā)出警報(bào),指示燈led_r閃爍。直到30秒過后或者按下復(fù)位鍵,經(jīng)行下一次密碼輸入.模塊源程序:process(rst,clk_1,en2)variablelock:std_logic:=’0’;variablecnt3:integer:=0;beginifrst=’0’thenlock:='0’;cnt3:=0;sp_en<='0';led_g<='0';led_r〈='0';elseifrising_edge(clk_1)theniflock='0'thenifen2='1'thenifcnt3=5thensp_en<='1’;led_g<='0';led_r<=’1';cnt3:=0;lock:='1';elseifcode_en=’1'thenifram=code_tmpthensp_en<='0';led_g<='1’;led_r<=’0';lock:='1';elsesp_en〈=’1’;led_g<='0';led_r〈=’1’;endif;endif;cnt3:=cnt3+1;endif;endif;elsecnt3:=0;endif;endif;endif;endprocess;程序說明:eq\o\ac(○,1)、lock為自鎖信號(hào),lock為1時(shí),系統(tǒng)進(jìn)入自鎖狀態(tài),不再工作。eq\o\ac(○,2)、Cnt3為密碼輸入計(jì)時(shí)信號(hào),en2為1(即開始輸入密碼)時(shí)開始計(jì)時(shí),當(dāng)超過5秒而沒有輸入正確密碼時(shí),系統(tǒng)自鎖并報(bào)警。eq\o\ac(○,3)、code_en為密碼確認(rèn)鍵,此鍵按下時(shí),系統(tǒng)開始將輸入的密碼和設(shè)置的密碼進(jìn)行比較,若二者一致則發(fā)出開鎖信號(hào),若不一致則發(fā)出報(bào)警信號(hào),系統(tǒng)進(jìn)入自鎖狀態(tài)。報(bào)警電路報(bào)警電路的作用就是在密碼輸入錯(cuò)誤或者輸入超時(shí)的情況下經(jīng)行報(bào)警,蜂鳴器發(fā)出聲音,并且警報(bào)燈不停閃爍,直到復(fù)位鍵按下或者計(jì)時(shí)30s結(jié)束。源程序如下:process(rst,sp_en,clk_1,clk_1k)variabletmp_en1:std_logic:='0';variablecnt4:integer:=1;beginifrst=’1’thenifrising_edge(clk_1)thenifsp_en=’1'andcnt4>0thenifcnt4=31thencnt4:=0;tmp_en1:='0’;elsecnt4:=cnt4+1;tmp_en1:='1';endif;endif;endif;elsetmp_en1:='0’;cnt4:=1;endif;speaker<=tmp_en1andclk_1k;led_f<=tmp_en1andclk_1;endprocess;程序說明:Cnt4是一個(gè)30進(jìn)制計(jì)數(shù)器,對(duì)報(bào)警時(shí)間進(jìn)行計(jì)時(shí)。Sp_en是控制電路發(fā)出的報(bào)警信號(hào)。軟件仿真將完整的程序在Quartus軟件下進(jìn)行編譯,通過之后進(jìn)行波形仿真,觀察仿真波形看是否實(shí)現(xiàn)了密碼鎖的邏輯功能,下面是在密碼輸入正確、密碼輸入超時(shí)和密碼輸入錯(cuò)誤時(shí)的仿真波形圖.圖四、密碼輸入正確仿真波形如圖所示,首先在rst為0時(shí)將密碼設(shè)為1001,然后輸入密碼1001,當(dāng)確認(rèn)鍵code_en按下時(shí),系統(tǒng)判斷密碼正確,輸出一個(gè)開鎖信號(hào),開鎖指示燈led_g點(diǎn)亮.圖五、密碼輸入錯(cuò)誤仿真波形如圖,密碼設(shè)置仍然為1001,但輸入一個(gè)錯(cuò)誤的密碼1000,當(dāng)密碼確認(rèn)按下時(shí),系統(tǒng)發(fā)出錯(cuò)誤警報(bào),蜂鳴器Speaker發(fā)出響聲,報(bào)警燈led_f閃爍。圖六、出入超時(shí)仿真波形如圖,密碼設(shè)置不變,依舊是1001,但是密碼輸入按鍵enter_c按下,輸入密碼后不按下確認(rèn)鍵,五秒過后,系統(tǒng)判斷密碼輸入超時(shí),此時(shí)輸出超時(shí)警報(bào),蜂鳴器報(bào)警,led_g點(diǎn)亮,led_f閃爍。心得體會(huì)這次的課程設(shè)計(jì)安排在了假期以后,上學(xué)期的VHDL語言已經(jīng)有些生疏了,這給編程帶來了一些難度,但是經(jīng)過復(fù)習(xí)還是重新熟悉了編程的方法和技巧。在寫程序的時(shí)候有時(shí)候不注意仿真,犯了想當(dāng)然的毛病,認(rèn)為程序會(huì)實(shí)現(xiàn)想象中的邏輯功能,但實(shí)際不然,所以在編程過程中,不能單憑想象來做,必須寫完一部分后就進(jìn)行一次仿真,及時(shí)發(fā)現(xiàn)問題,及時(shí)改正,避免可在寫完程序之后才發(fā)現(xiàn)錯(cuò)誤,這時(shí)再修改就會(huì)很麻煩了。這次的課程設(shè)計(jì)標(biāo)題是密碼鎖設(shè)計(jì),通過在查閱資料的過程中了解了電子密碼鎖的發(fā)展前景和FPGA的廣泛應(yīng)用,在日常生活中會(huì)有許多的電子設(shè)備都與FPGA有關(guān),因此學(xué)好EDA技術(shù)對(duì)自己的以后的發(fā)展會(huì)有很大的幫助.本科生學(xué)年論文(設(shè)計(jì))(2011級(jí))基于protues的電子密碼鎖設(shè)計(jì)姚曉強(qiáng)電氣信息工程電子1102指導(dǎo)教師(職稱)孫亞萍(講師)6280成果完成時(shí)間2013-12—26杭州師范大學(xué)錢江學(xué)院教學(xué)部制基于protues的電子密碼鎖設(shè)計(jì)電氣信息專業(yè)1102班姚曉強(qiáng)指導(dǎo)教師孫亞萍摘要:本文以AT89C51單片機(jī)為核心器件,結(jié)合按鍵電路、LED數(shù)碼管顯示電路、報(bào)警指示電路和開鎖機(jī)構(gòu),利用單片機(jī)靈活的編程設(shè)計(jì)和豐富的I/O端口,及其控制的準(zhǔn)確性通過軟件程序來控制整個(gè)系統(tǒng)實(shí)現(xiàn)電子密碼鎖的基本功能,其主要具有如下功能:●密碼通過鍵盤輸入,若密碼正確,則將鎖打開●密碼輸入錯(cuò)誤,蜂鳴器將報(bào)警提示●用戶可以自由設(shè)定密碼本密碼鎖具有設(shè)計(jì)方法合理,簡單易行成本低,安全實(shí)用等特點(diǎn),具有一定的推廣價(jià)值。關(guān)鍵詞:AT89C51;電子密碼鎖;功能Thedesignofelectronic

lockontheProtuesYaoXiaoqiangInstructor:SunYapingAbstract:BasedontheAT89C51single-chipmicrocomputerasthecoredevice,combiningwiththekeycircuit,LEDdigitaltubedisplaycircuit,analarmcircuitandunlockingmechanism,designthewholesystemtoachievethebasicfunctionsofelectroniccipherlockbyitsflexibleprogramming,richI/Oport,andaccuracybasingonthesoftwareprogram.Withthefollowingfunctions:●Inputpasswordthroughthekeyboard,ifthepasswordiscorrect,lockwillopen●Ifthepasswordiserror,thebuzzerwillalarm●UserscanfreelysetthepasswordThelockhassomefeatureslikeareasonabledesignmethods,simpletowork,lowcostandsecurity,italsohassomepromotionvalue。Keywords:AT89C51;Electroniclock;Function目錄TO(shè)C\o”1—3"\h\z\u第一章引言PAGEREF_Toc375833545\h1HYPERLINK\l"_Toc375833546”1.1研究背景PAGEREF_Toc375833546\h1HYPERLINK\l"_Toc375833547"1.2應(yīng)用現(xiàn)狀PAGEREF_Toc375833547\h1HYPERLINK\l”_Toc375833548”2.1Protues軟件概述PAGEREF_Toc375833548\h2HYPERLINK\l”_Toc375833549”2.2Protues軟件的功能和特點(diǎn)PAGEREF_Toc375833549\h2HYPERLINK\l"_Toc375833550”第三章電子密碼鎖電路的設(shè)計(jì)PAGEREF_Toc375833550\h2HYPERLINK\l”_Toc375833551”3。1電子密碼鎖的工作原理PAGEREF_Toc375833551\h23。2系統(tǒng)的總體思路設(shè)計(jì)5833552\h33.3主要元器件介紹PAGEREF_Toc375833553\h3HYPERLINK\l"_Toc375833554”3。3。1AT89C51介紹PAGEREF_Toc375833554\h3HYPERLINK\l”_Toc375833555”3.3.2LED數(shù)碼管介紹PAGEREF_Toc375833555\h5HYPERLINK\l"_Toc375833556"3.3.3LED矩陣鍵盤介紹3556\h6第四章電子密碼鎖的仿真分析PAGEREF_Toc375833557\h64.1Protues原理圖設(shè)計(jì)PAGEREF_Toc375833558\h64。1。1單片機(jī)主控制模塊(含晶振、復(fù)位基本工作電路)PAGEREF_Toc375833559\h7HYPERLINK\l”_Toc375833560"4。1。2鍵盤輸入模塊5833560\h74.1.3顯示模塊PAGEREF_Toc375833561\h8HYPERLINK\l"_Toc375833562"4。1。4報(bào)警模塊和開鎖模塊PAGEREF_Toc375833562\h94。2仿真效果總圖PAGEREF_Toc375833563\h10HYPERLINK\l"_Toc375833564”總結(jié)PAGEREF_Toc375833564\h10HYPERLINK\l”_Toc375833565"參考文獻(xiàn)PAGEREF_Toc375833565\h10HYPERLINK\l"_Toc375833566”附錄PAGEREF_Toc375833566\h11基于protues的電子密碼鎖設(shè)計(jì)電子信息專業(yè)1102班姚曉強(qiáng)指導(dǎo)教師孫亞萍第一章引言1.1研究背景電子線路的設(shè)計(jì)需要經(jīng)過設(shè)計(jì)方案提出、方案驗(yàn)證和修改三個(gè)階段,有時(shí)甚至需要經(jīng)過多次的反復(fù).傳統(tǒng)的設(shè)計(jì)方法一般是采用搭接實(shí)驗(yàn)電路的方法進(jìn)行,這種方法費(fèi)時(shí)、費(fèi)用高、效率低。隨著計(jì)算機(jī)技術(shù)水平的不斷提高,電子線路設(shè)計(jì)仿真軟件迅速發(fā)展起來,EDA[1](ElectronicDesignAutomation電子設(shè)計(jì)自動(dòng)化)技術(shù)應(yīng)運(yùn)而起,功能日益強(qiáng)大,運(yùn)行速度快,使得電子線路設(shè)計(jì)人員能在計(jì)算機(jī)上完成電路的功能設(shè)計(jì)、邏輯設(shè)計(jì)、性能分析等等。Protues軟件是英國Labcenterelectronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具.雖然目前國內(nèi)推廣剛起步,但已受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞.1.2應(yīng)用現(xiàn)狀現(xiàn)今常見的密碼鎖設(shè)計(jì)主要有兩種方案,一種是中規(guī)模集成電路控制的方案,另一種是單片機(jī)控制的方案。對(duì)于采用集成電路控制的方案,其中的編碼電子鎖電路分為編碼電路、控制電路、復(fù)位電路、解碼電路、防盜報(bào)警電路、門鈴電路,而電子鎖主要由輸入元件、電路(包括電源)以及鎖體三部分組成。顯然此種方案的物理實(shí)現(xiàn)結(jié)構(gòu)較為復(fù)雜且重新設(shè)置密碼、輸入密碼的操作過程也會(huì)給用戶帶來一定的不方便;而利用單片機(jī)控制的方案,由于單片機(jī)靈活的編程設(shè)計(jì)和豐富的I/O端口,及其控制的準(zhǔn)確性,不但能實(shí)現(xiàn)基本的密碼鎖功能,還能添加掉電存儲(chǔ)、聲光提示甚至添加遙控控制功能,但其也有一定的局限性,就在于其控制原理的復(fù)雜以及要求設(shè)計(jì)人員具有更加良好的程序設(shè)計(jì)能力,調(diào)試較為繁瑣,否則程序一旦跑飛將造成意想不到的損失。通過對(duì)這兩種方案的優(yōu)缺點(diǎn)比較,再考慮到本人自己對(duì)單片機(jī)設(shè)計(jì)具有一定的基礎(chǔ),所以此次選擇利用單片機(jī)來進(jìn)行密碼鎖的設(shè)計(jì)。第二章Protues軟件包介紹2.1Protues軟件概述Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。迄今為止是世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái),其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即將增加Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MATLAB等多種編譯。2。2Protues軟件的功能和特點(diǎn)Protues軟件具有其它EDA工具軟件(例:multisim)的功能。這些功能是:(1)原理布圖(2)PCB自動(dòng)或人工布線(3)SPICE電路仿真第三章電子密碼鎖電路的設(shè)計(jì)3。1電子密碼鎖的工作原理以AT89C51單片機(jī)為主控制單元,鍵盤為主要輸入單元,結(jié)合開鎖裝置、報(bào)警器和顯示器完成整個(gè)系統(tǒng)設(shè)計(jì)。它的系統(tǒng)結(jié)構(gòu)圖如圖.3.1所示:圖.3。1系統(tǒng)結(jié)構(gòu)圖3.2系統(tǒng)的總體思路設(shè)計(jì)系統(tǒng)的運(yùn)行過程大致如下:假設(shè)初始狀態(tài)為閉鎖,此時(shí)整個(gè)系統(tǒng)只等待按鍵輸入,數(shù)碼管也不顯示.先按除號(hào)鍵修改密碼,每按下一個(gè)數(shù)據(jù)鍵(即每輸入一個(gè)密碼),數(shù)碼管相應(yīng)的顯示一個(gè)“-”標(biāo)志,當(dāng)密碼全部輸入完成后,需按下確認(rèn)鍵“ON/C".設(shè)置密碼后,先按“+”復(fù)位,然后輸入密碼,輸入完畢后按下確認(rèn)鍵“ON/C”,此時(shí)系統(tǒng)判斷密碼是否正確,正確則開鎖(仿真中以數(shù)碼管顯示全8、綠色LED燈亮為標(biāo)志),錯(cuò)誤則報(bào)警,此后數(shù)碼管熄滅繼續(xù)等待按鍵。3.3主要元器件介紹3.3.1AT89C51介紹AT89C51是一種帶4K字節(jié)FLASH存儲(chǔ)器(FPEROM-FlashProgrammableandErasableReadOnlyMemory)的低電壓、高性能CMOS8位微處理器,俗稱單片機(jī).單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。圖3。3.1。1AT89C51封裝圖圖3.3.1。2AT89C51引腳圖AT89C51主要特性:1.與MCS—51兼容2.4K字節(jié)可編程FLASH存儲(chǔ)器3.壽命:1000寫/擦循環(huán)4.數(shù)據(jù)保留時(shí)間:10年5.全靜態(tài)工作:0Hz—24MHz6.三級(jí)程序存儲(chǔ)器鎖定7.128×8位內(nèi)部RAM8.32可編程I/O線9。兩個(gè)16位定時(shí)器/計(jì)數(shù)器10。5個(gè)中斷源11.可編程串行通道12.低功耗的閑置和掉電模式13。片內(nèi)振蕩器和時(shí)鐘電路AT89C51單片機(jī)引腳:VCC:供電電壓.GND:接地。P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P0口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的低八位.在FIASH編程時(shí),P0口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須接上拉電阻.P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流.P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為低八位地址接收。P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢,當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:口管腳備選功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2/INT0(外部中斷0)P3.3/INT1(外部中斷1)P3.4T0(記時(shí)器0外部輸入)P3.5T1(記時(shí)器1外部輸入)P3。6/WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7/RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖.在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6.因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高.如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。振蕩器特性:XTAL1和XTAL2分別為反向放大器的輸入和輸出.該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度.3.3.2LED數(shù)碼管介紹圖3.3。2數(shù)碼管LED數(shù)碼管實(shí)際上是由七個(gè)發(fā)光管組成8字形構(gòu)成的,加上小數(shù)點(diǎn)就是8個(gè)。這些段分別由字母a,b,c,d,e,f,g,dp來表示.當(dāng)數(shù)碼管特定的段加上電壓后,這些特定段就會(huì)發(fā)亮,以形成我們眼睛看到的樣子。以“2"為例,應(yīng)當(dāng)是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。LED數(shù)碼管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。小尺寸數(shù)碼管的顯示筆畫常用一個(gè)發(fā)光二極管組成,而大尺寸的數(shù)碼管由二個(gè)或多個(gè)發(fā)光二極管組成,一般情況下,單個(gè)發(fā)光二極管的管壓降為1。8V左右,電流不超過30mA。發(fā)光二極管的陽極連接到一起連接到電源正極的稱為共陽數(shù)碼管,發(fā)光二極管的陰極連接到一起連接到電源負(fù)極的稱為共陰數(shù)碼管.常用LED數(shù)碼管顯示的數(shù)字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。3。3.3LED矩陣鍵盤介紹在鍵盤中按鍵數(shù)量較多時(shí),為了減少I/O口的占用,通常將按鍵排列成矩陣形式,如圖1所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個(gè)按鍵加以連接。這樣,一個(gè)端口(如P1口)就可以構(gòu)成4*4=16個(gè)按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比較多時(shí),采用矩陣法來做鍵盤是合理的。矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識(shí)別也要復(fù)雜一些,上圖中,列線通過電阻接正電源,并將行線所接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當(dāng)按鍵沒有按下時(shí),所有的輸入端都是高電平,代表無鍵按下.行線輸出是低電平,一旦有鍵按下,則輸入線就會(huì)被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。本設(shè)計(jì)采用Protues庫中KEYPAD-SMALLCALC作為鍵盤。第四章電子密碼鎖的仿真分析4.1Protues原理圖設(shè)計(jì)4.1。1單片機(jī)主控制模塊(含晶振、復(fù)位基本工作電路)圖4。1。1主控制模塊4。1.2鍵盤輸入模塊本設(shè)計(jì)中采用Protues庫中KEYPAD-SMALLCALC作為鍵盤,與AT89C51的P3口相連,提供按鍵輸入,如圖4。1。2:圖4。1。2鍵盤輸入模塊按鍵鍵名功能說明1-9鍵數(shù)字鍵輸入密碼÷鍵重設(shè)密碼鍵設(shè)定新密碼+鍵復(fù)位鍵密碼全部一次刪除=鍵密碼刪除鍵一次刪除一位密碼ON/C鍵確定鍵確認(rèn)密碼輸入完畢表4。1。2按鍵功能4.1.3顯示模塊圖4.1。3顯示模塊此設(shè)計(jì)中,使用了四個(gè)共陽極數(shù)碼管,使用動(dòng)態(tài)顯示技術(shù)控制數(shù)碼管。其6個(gè)位選信號(hào)與P2.0—P2.5相連,當(dāng)其中某位為低電平時(shí)表示選中該位;8段段選信號(hào)與P0口相連,當(dāng)其中某段為高電平時(shí)導(dǎo)通該段,特殊的,由于AT89C51的P0口的驅(qū)動(dòng)能力較弱,不足以驅(qū)動(dòng)數(shù)碼管點(diǎn)亮,故在此又引入上拉電阻以驅(qū)動(dòng)數(shù)碼管.關(guān)于上拉電阻有如下介紹:1、當(dāng)TTL電路驅(qū)動(dòng)CMOS電路時(shí),如果電路輸出的高電平低于CMOS電路的最低高電平(一般為3.5V),這時(shí)就需要在TTL的輸出端接上拉電阻,以提高輸出高電平的值.2、OC門電路必須加上拉電阻,以提高輸出的高電平值。3、為加大輸出引腳的驅(qū)動(dòng)能力,有的單片機(jī)管腳上也常使用上拉電阻.4、在CMOS芯片上,為了防止靜電造成損壞,不用的管腳不能懸空,一般接上拉電阻產(chǎn)生降低輸入阻抗,提供泄荷通路.5、芯片的管腳加上拉電阻來提高輸出電平,從而提高芯片輸入信號(hào)的噪聲容限增強(qiáng)抗干擾能力。6、提高總線的抗電磁干擾能力.管腳懸空就比較容易接受外界的電磁干擾。7、長線傳輸中電阻不匹配容易引起反射波干擾,加上下拉電阻是電阻匹配,有效的抑制反射波干擾。4。1.4報(bào)警模塊和開鎖模塊圖4。1.4報(bào)警和開鎖模塊4.2仿真效果總圖圖4.2輸入正確密碼時(shí)仿真效果總圖總結(jié)通過上述設(shè)計(jì)電路的仿真分析,不難發(fā)現(xiàn)使用單片機(jī)制作的電子密碼鎖具有軟硬件設(shè)計(jì)簡單,易于開發(fā),成本較低,安全可靠,操作方便等特點(diǎn)。正是由于單片機(jī)的眾多優(yōu)良特性的吸引,最終從經(jīng)濟(jì)實(shí)用的角度出發(fā),采用單片機(jī)AT89C51作為主控芯片,結(jié)合外圍的鍵盤輸入、顯示、報(bào)警、開鎖等電路,用C語言編寫主控芯片的控制程序,設(shè)計(jì)了一款可以多次更改密碼具有報(bào)警功能的電子密碼鎖。參考文獻(xiàn)[1]于殿泓,王新年。單片機(jī)原理與程序設(shè)計(jì)實(shí)驗(yàn)教程[M].西安電子科技大學(xué)出版社,2007.127-151頁.[2]趙文博,劉文濤.單片機(jī)語言C51程序設(shè)計(jì)[M].人民郵電出版社,2005.258—294頁.附錄#include<at(yī)89x51。h>#defineucharunsignedchar#defineuintunsignedintuintnum=10;?//開始讓數(shù)碼管什么都顯示bitset=0; //定義設(shè)置密碼的位charcount=—1; //開始讓COUNT=-1,方便后面顯示數(shù)碼管sbitBeep=P1^2;//蜂鳴器uchartemp;ucharpws[6]={8,8,8,8,8,8};?//原始密碼ucharpwx[6]; ??//按下的數(shù)字存儲(chǔ)區(qū)bitrightflag;?? //密碼正確標(biāo)志位ucharworkbuf[6];ucharcodetabledu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};???//段選碼,共陰極ucharcodetablewe[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; ??//位選碼uintkeyscan();voiddelay(ucharz)??//延時(shí),ms級(jí) {?uchary;?for(;z>0;z—-) for(y=120;y〉0;y——);}voidsetpw() //設(shè)置密碼函數(shù){ keyscan();}uintkeyscan() //鍵盤掃描函數(shù){?P3=0xfe; temp=P3;?temp=temp&0xf0; if(temp!=0xf0) { ?delay(5);?//鍵盤去抖,最好20ms以上,這里用了5ms temp=P3; temp=temp&0xf0;??if(temp!=0xf0) { ? count++;//按鍵計(jì)數(shù)加1 temp=P3;? switch(temp) { ? case0xee:?? ?{ num=7; ??if(count〈6) //六位密碼,所以COUNT<6 ?{ ?? if(set==0) //設(shè)置密碼鍵沒有按下時(shí)?? ? ?pwx[count]=num;//存儲(chǔ)按下的數(shù)字? ? ?else?? ? ?pws[count]=num;//設(shè)置密碼鍵按下時(shí),設(shè)置新密碼? ??workbuf[count]=tabledu[11];//相應(yīng)位的數(shù)碼管顯示"-—”,不顯示相應(yīng)的數(shù)字,密碼是保密的? ?} ? }?? ?break;????case0xde: { ??? num=8; ? ??if(count<6) ?//以下掃描鍵盤的原理差不多同上 {????? if(set==0) ? ? ?pwx[count]=num; ?? ? else??????pws[count]=num;? ? ? workbuf[count]=tabledu[11]; ??}?? } ?break; ?case0xbe:? {?? ? num=9; ???{???? ?if(count<6)?? ?? { ? ???if(set==0)? ? pwx[count]=num;???? ? else ? ?pws[count]=num; workbuf[count]=tabledu[11];? ? ?}? ?? } ? ?}? break; ? case0x7e: //設(shè)置密碼鍵按下 ?{ ? set=1; //設(shè)置密碼標(biāo)志位置1?? ?P1_3=0; //設(shè)置密碼指示燈亮? ? workbuf[0]=0x00;//數(shù)碼管第一位不顯示 ????workbuf[1]=0x00;//。..。.。???? workbuf[2]=0x00;//..。。.. ????workbuf[3]=0x00; ? ?workbuf[4]=0x00; ?? ?workbuf[5]=0x00;//。..... ? ?count=-1; //按鍵計(jì)數(shù)復(fù)位為-1 if(count〈6) //密碼沒有設(shè)置完,繼續(xù)設(shè)置密碼?? ? { ???? setpw(); //設(shè)置密碼? ??}? ? } break; ? }???while(temp!=0xf0)//按鍵抬起檢測?? { ??temp=P3;?? ?temp=temp&0xf0; ? }? }?} P3=0xfd; temp=P3; temp=temp&0xf0; if(temp!=0xf0)?{??delay(5); temp=P3;? temp=temp&0xf0;??if(temp!=0xf0) ?{? count++; ??temp=P3;? ?switch(temp) ??{? ??case0xed: ???{ ?? ?num=4;?????if(count<6) ?? ?{???? if(set==0)? ? pwx[count]=num;? ?? ?else ? ?pws[count]=num;? ? ??workbuf[count]=tabledu[11]; ? }? ?}????break; ??case0xdd: ? {? ?? ?num=5;? ?? if(count<6)?? ?{? if(set==0)?? ?pwx[count]=num;? ??else?? ? ?pws[count]=num;????? workbuf[count]=tabledu[11]; ????}?? } ??break; case0xbd:?? {? ???num=6;??? if(count<6) ???{ ? ?if(set==0) ?? pwx[count]=num; ? ? else???? ?pws[count]=num;? ?workbuf[count]=tabledu[11];???? } ???}? ? break;? ?} while(temp!=0xf0)? ?{??? temp=P3;?? temp=temp&0xf0; }? }?}?P3=0xfb; temp=P3;?temp=temp&0xf0; if(temp!=0xf0) { ?delay(5); temp=P3;??temp=temp&0xf0; if(temp!=0xf0)??{ ??count++; temp=P3; ? switch(temp)???{ ???case0xeb: ??{? num=1;? ? if(count<6) ????{??? ??if(set==0) ??? pwx[count]=num;?? else? ? pws[count]=num; ?????workbuf[count]=tabledu[11]; ? ??} ?? } ???break; ???case0xdb: ???{ ? ?num=2;?? ??if(count<6)?? { ?? if(set==0)? ? ?pwx[count]=num;??? else? ?? ?pws[count]=num;? ?? workbuf[count]=tabledu[11];??? }? ?} ?break; ? case0xbb:? ? {?? ??num=3;? ?if(count<6) ??? { ? ? if(set==0)? ?? pwx[count]=num;?? ? else ? ???pws[count]=num;? workbuf[count]=tabledu[11]; ? ? }? ? }? ?break;???}???while(temp!=0xf0)? { ? ?temp=P3;?? temp=temp&0xf0;? ?}??}?}?P3=0xf7; te

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論