版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 課程設計(論文)說明書</p><p> 題 目: </p><p> 院 (系): </p><p> 專 業(yè): </p><p> 學生姓名: </p><p> 學 號: </p>
2、<p> 指導教師: </p><p> 職 稱: </p><p> 20年 月 日</p><p><b> 摘 要</b></p><p> 隨著電子產(chǎn)品向智能化和微型化的不斷發(fā)展,單片機已成為電子產(chǎn)品研制和開發(fā)中首選的控制器。隨著人們
3、生活水平的提高,如何實現(xiàn)家庭防盜這一問題也變的尤其的突出,傳統(tǒng)的機械鎖由于其構造的簡單,安全性能低,無法滿足人們的需要。</p><p> 本設計從經(jīng)濟實用的角度出發(fā),采用美國Atmel公司的單片機AT89S51與低功耗CMOS型E2PROM AT24C02作為主控芯片與數(shù)據(jù)存儲器單元,結(jié)合外圍的鍵盤輸入、顯示、報警、開鎖等電路,用匯編語言編寫主控芯片的控制程序,設計了一款可以多次更改密碼具有報警功能的電子密碼
4、鎖。</p><p> 經(jīng)實驗證明,該密碼鎖具有設計方法合理,簡單易行,成本低,安全實用等特點,符合住宅、辦公室用鎖要求,具有推廣價值。</p><p> 關鍵詞:密碼鎖;單片機;安全性</p><p><b> 目 錄</b></p><p> 引言 …………………………………………………………………1
5、</p><p> 1 設計方案 ……………………………………………………………1</p><p> 1.1 電子密碼鎖的設計分析…………………………………………………………1</p><p> 1.2 設計要求…………………………………………………………………………2</p><p> 2 硬件電路設計…………………………………
6、……………………2</p><p> 2.1 單片機AT89S51簡介……………………………………………………………2</p><p> 2.1.1 ATS89S51………………………………………………………………………2</p><p> 2.1.2 ATS89S51主要特性……………………………………………………………2</p><p&
7、gt; 2.2整體硬件原理圖…………………………………………………………………3</p><p> 2.3 鍵盤設計…………………………………………………………………………4</p><p> 2.3.1矩陣鍵盤和行列式鍵盤………………………………………………………4</p><p> 2.3.2掃描原理………………………………………………………………………
8、5</p><p> 2.3.3 鍵盤設計圖……………………………………………………………………5</p><p> 2.4 液晶顯示設計……………………………………………………………………5</p><p> 3 程序設計…………………………………………………………6</p><p> 3.1 程序設計內(nèi)容………………………………
9、……………………………………6</p><p> 3.2 C語言源程序……………………………………………………………………6</p><p> 4 心得體會…………………………………………………………6</p><p> 謝辭 …………………………………………………………………7</p><p> 參考文獻 ………………………………
10、……………………………8</p><p> 附錄 …………………………………………………………………9</p><p><b> 引言</b></p><p> 隨著人們對安全的重視和科技的發(fā)展,許多電子智能鎖(指紋識別,IC 卡辨認)已在國內(nèi)外相繼面世。但是這些產(chǎn)品的特點是針對特定的指紋和有效卡,只能適用于保密要求的箱,柜,門等。而且指
11、紋識識別器若在公共場所使用存在容易機械損壞,IC 卡還存在容易丟失,損壞等特點.加上其成本較高,一定程度上限制了這類產(chǎn)品的普及和推廣。鑒于目前的技術水平與市場的接收程度,電子密碼鎖是這類電子防盜產(chǎn)品的主流。</p><p><b> 設計方案</b></p><p> 1.1 電子密碼鎖的設計分析</p><p> 在日常的生活和工作中,
12、住宅與部門的安全防范,單位的文件檔案,財務報表以及一些個人資料的保存多以加鎖的辦法來解決。若使用傳統(tǒng)的機械式鑰匙開鎖,人們常需攜帶 多把鑰匙,使用極不方便,且鑰匙丟失后安全性即大打折扣。隨著科學技術的不斷發(fā)展,人們對日常生活中的安全保險器件的要求越來越高。為滿足人們對鎖的使用要求,增加其 安全性,用密碼代替鑰匙的密碼鎖應運而生。密碼鎖具有安全性高,成本低,功耗低,易操作等優(yōu)點。在安全技術防范領域,具有防盜報警功能的電子密碼鎖逐漸代替?zhèn)鹘y(tǒng)
13、的機械式密碼鎖,克服了機械式密碼鎖密碼量少,安全性能差的缺點,使密碼鎖無論在技術上還是在性 能上都大大提高一步。隨著大規(guī)模集成電路技術的發(fā)展,特別是單片機的問世,出現(xiàn)了帶微處理器的智能密碼鎖,它除具有電子密碼鎖的功能外,還引入了智能化管理,專家分析系統(tǒng)等功能,從而使密碼鎖具有很高的安全性,可靠性,應用日益廣泛。在國內(nèi)外電子防盜鎖應用于金融業(yè),其根本的作用是"授權" ,即被"授權"的人才可以存取錢物
14、。廣義上講,金融業(yè)的"授權"主要包括以下三種層次的內(nèi)容:1,授予 保管權,如使用保管箱,保險箱和保險柜;2,授予出入權,如出入金庫,運鈔車</p><p><b> 1.2 設計要求</b></p><p> 設計一個密碼鎖,其功能有:1.設置8位密碼,密碼通過鍵盤輸入,若密碼正確,則將鎖打開; 2. 密碼可以由用戶自己修改設定(只支持6 位密
15、碼),修改密碼之前必須再次輸入密碼, 在輸入新密碼時候需要二次確認,以防止誤操作; 3. 報警功能(用二極管仿真).密碼輸入正確或錯誤報警設備會出現(xiàn)相關提示。</p><p><b> 硬件電路設計 </b></p><p> 2.1單片機AT89S51簡介</p><p> 2.1.1 AT89S51</p><p&
16、gt; AT89S51是美國ATMEL公司生產(chǎn)的低功耗,高性能CMOS8位單片機,片內(nèi)含4Kb的可系統(tǒng)編程的Flash只讀程序存儲器,器件采用ATMEL公司的高密度,非易失性存儲技術生產(chǎn),兼容標準8051指令系統(tǒng)及引腳。它集Flash程序存儲器,既可在線編程(ISP)也可用傳統(tǒng)方法進行編程及通8位微處理器于單片芯片中,ATMEL公司的功能強大,低價位AT89S51單片機可為您提供許多高性價比的應用場合,可靈活應用于各種控制領域。<
17、;/p><p> 2.1.2 AT89S51主要特性</p><p> MCS-51兼容4K字節(jié)可編程閃爍存儲器壽命1000寫/擦;循環(huán)數(shù)據(jù)保留時間:10年;全靜態(tài)工作:0Hz-24Hz;三級程序存儲器鎖定128*8位;內(nèi)部RAM 32可編程I/O線兩個;16位定時器/計數(shù)器,5個中斷源 可編程串行通道,低功耗的閑置和掉電模式,片內(nèi)振蕩器和時鐘電路。</p><p>
18、;<b> 圖1 單片機</b></p><p> 2.2整體硬件原理圖</p><p> 硬件部分包括鍵盤部分,顯示部分以及用單片機編程用到的的連接口部分。</p><p><b> 圖2 硬件原理圖</b></p><p><b> 2.3鍵盤設計</b><
19、/p><p> 2.3.1矩陣鍵盤和行列式鍵盤</p><p> 鍵盤設計一般采用行列式鍵盤,能減少鍵盤與單片機接口時所占用的I/O線的數(shù)目,在按鍵比較多的時候,通常采用這樣方法。每一條水平(行線)與垂直線(列線)的交叉處不相通,而是通過一個按鍵來連通,利用這種行列式矩陣結(jié)構只需要N條行線和M條列線,即可組成具有N×M個按鍵的鍵盤。在這種行列式矩陣鍵盤非鍵盤編碼的單片機系統(tǒng)中,鍵
20、盤處理程序首先執(zhí)行等待按鍵并確認有無按鍵按下的程序段。</p><p> 這次設計中采用的就是矩陣鍵盤。在鍵盤中按鍵數(shù)量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式,如圖5所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口(如P1口)就可以構成 4*4=16個按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構
21、成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵) 。</p><p><b> 2.3.2掃描原理</b></p><p> 把每個鍵都分成水平和垂直的兩端接入,比如說掃描碼是從垂直的入,那就代表那一行所接收到的掃描碼是同一bit,而讀入掃描碼的則是水平,掃描的動作是先輸入掃描碼,再去讀取輸入的值,經(jīng)過比對之后就可知道是哪個鍵被按下。比如說掃描碼送入01111
22、111,前面的0111是代表此時掃描第一行P1。0列,而后面的1111是讓讀取的4行接腳先設為VDD,若此時第一行的第三列按鍵被按下,那讀取的結(jié)果 就會變成01111101(注意1111變成1101),其中LSB 的第三個bit 會由1變成0,這是因 為這個按鍵被按下之后,會被垂直的掃描碼電位 short,而把讀取的LSB的bit 電位拉到0,此即為掃描原理。由於這種按鍵是機械式的開關,當按鍵被按下時,鍵會震動一小段時間才穩(wěn)定,為了避免
23、讓8051誤判為多次輸入同一按鍵,我們必須在偵測到有按鍵被按下,就Delay一小段時間,使鍵盤以達穩(wěn)定狀態(tài),再去判讀所按下的鍵,就可以讓鍵盤的輸入穩(wěn)定。</p><p> 2.3.3鍵盤設計圖</p><p> 如圖,按鍵0到9是對應輸入數(shù)字“0”到“9”,按鍵Del刪除一位輸入的數(shù)字,按鍵enter是確認鍵。</p><p><b> 圖3 鍵盤設
24、計圖</b></p><p><b> 2.4液晶顯示設計</b></p><p> 顯示部分包括液晶和LED發(fā)光二極管。液晶顯示提示消息,如輸入密碼正確,液晶顯示“OK”;而發(fā)光二極管發(fā)亮,表示開鎖;發(fā)光二極管滅,表示沒有開鎖。</p><p> 圖4 液晶部分原理圖</p><p><b>
25、; 3. 程序設計</b></p><p><b> 3.1程序設計內(nèi)容</b></p><p> (1).4×4矩陣鍵盤識別;(2).液晶顯示,當密碼輸入完后,按下確認鍵,進行密碼比較,如果密碼正確,液晶顯示“OK”。在密碼輸入過程中,若輸入錯誤,可以利用“DEL”鍵刪除剛才輸入的錯誤的數(shù)字。每輸入一個數(shù)字需等待1秒才能繼續(xù)輸入下一個數(shù)字
26、。</p><p> 3.2 C語言源程序</p><p><b> 程序及流程圖見附錄</b></p><p><b> 4. 心得體會</b></p><p> 從開始進行設計密碼鎖到完成實現(xiàn)密碼鎖功能,我找了很多資料,并應用了protel99se軟件進行畫圖和仿真,并運用單片機知識進
27、行編程以完成設計要求的功能。我已經(jīng)盡了自己的最大努力,也從中學到了很多知識,獲益匪淺。</p><p><b> 謝 辭</b></p><p> 感謝學院給我們提供這樣的實踐動手機會,并通過課程設計使我們能夠有機會將書本上學到的知識運用到的實際中去。在課設過程中施娟老師給了我很多的指導和幫助,并監(jiān)督我及時完成了本次課程設計,在此特別感謝施娟老師和給予我?guī)椭耐?/p>
28、學。</p><p><b> 參考文獻</b></p><p> [1] 劉文濤. MCS-51單片機培訓教程(C51)版.電子工業(yè)出版社, 2005.8.</p><p> [2] 王宜懷.單片機原理及其嵌入式應用教程.北京希望電子出版社, 2002.8.</p><p> [3] 邵貝貝.單片機嵌入式應用的
29、在線開發(fā)方法.清華大學出版社, 2006.3.</p><p> [4] 龔運新.單片機C 語言開發(fā)技術.清華大學出版社, 2006.10.</p><p> [5] Jean J.Labrosse 著. 嵌入式系統(tǒng)構件.袁勤勇等譯.北京:機械工業(yè)出版社, 2002.</p><p><b> 附 錄</b></p>&l
30、t;p><b> PCB圖:</b></p><p><b> C語言程序流程圖:</b></p><p><b> C語言源程序:</b></p><p> #include"reg52.h"</p><p> #define uchar
31、unsigned char</p><p> #define uint unsigned int</p><p> sbit fmq=P3^3;</p><p> sbit RS=P2^4;</p><p> sbit RW=P2^5;</p><p> sbit EN=P2^6; </p>
32、<p> uchar code table0[]="shemi: ";</p><p> uchar code table1[]="kaimi: ";</p><p> uchar code success[]=" OK ";</p><
33、;p> uchar j=0;</p><p> uchar shemi[10]={0,0,0,0,0,0,0,0,0,0};//設密值裝載體</p><p> uchar kaimi[10]={0,0,0,0,0,0,0,0,0,0};//開密值裝載體</p><p> //uchar n=0;//次數(shù)</p><p><
34、b> //延時子程序</b></p><p> void delay(uint z)</p><p><b> {</b></p><p><b> uint x,y;</b></p><p> for(x=z;x>0;x--)</p><p&g
35、t; for(y=110;y>0;y--);</p><p><b> }</b></p><p> void fmqxiang()</p><p> {uchar z=20;</p><p> while(z--)</p><p><b> {fmq=0;</b
36、></p><p> delay(20);</p><p><b> fmq=1;</b></p><p> delay(20);}</p><p><b> }</b></p><p> void write_cmd(uchar cmd)//1602寫指令&
37、lt;/p><p><b> {</b></p><p> RS=0;RW=0;EN=0;P0=cmd;delay(5);EN=1;delay(5);EN=0;</p><p><b> }</b></p><p> void write_date(uchar date)//1602寫數(shù)據(jù)<
38、;/p><p><b> {</b></p><p> RS=1;RW=0;EN=0;P0=date;delay(5);EN=1;delay(5);EN=0;</p><p><b> }</b></p><p> void chushihua_LCD()</p><p>
39、; {uchar i;</p><p> write_cmd(0x38);write_cmd(0x0c);write_cmd(0x06);write_cmd(0x01);write_cmd(0x80);</p><p> for(i=0;i<16;i++)</p><p> {write_date(table0[i]);</p><
40、;p><b> delay(5);</b></p><p><b> }</b></p><p> write_cmd(0x80+0x40);</p><p> for(i=0;i<16;i++)</p><p> {write_date(table1[i]);</p&g
41、t;<p><b> delay(5);</b></p><p><b> }</b></p><p><b> }</b></p><p> keyscan()//鍵盤掃描</p><p><b> {</b></p>
42、<p> uchar temp,key;</p><p> P1=0xFE;//掃描第一行按鍵;</p><p> temp=P1;temp&=0xF0;</p><p> if(temp!=0xf0)</p><p><b> {</b></p><p><
43、b> delay(5);</b></p><p><b> temp=P1;</b></p><p> temp&=0xf0;</p><p> if(temp!=0xf0)</p><p><b> {</b></p><p><b
44、> temp=P1;</b></p><p> switch(temp)</p><p><b> {</b></p><p> case 0x7E:key=10;break;</p><p> case 0xBE:key=11;break;</p><p> cas
45、e 0xDE:key=12;break;</p><p> case 0xEE:key=13;break;</p><p> default:break;</p><p><b> }</b></p><p> while(temp!=0xf0)//等待松手</p><p><b&g
46、t; {</b></p><p><b> temp=P1;</b></p><p> temp=temp&0xf0;</p><p><b> }</b></p><p> return(key);</p><p><b> }&l
47、t;/b></p><p><b> }</b></p><p> P1=0xFD;//掃描第二行按鍵;</p><p> temp=P1;temp&=0xF0;</p><p> if(temp!=0xf0)</p><p><b> {</b>&l
48、t;/p><p><b> delay(5);</b></p><p><b> temp=P1;</b></p><p> temp&=0xf0;</p><p> if(temp!=0xf0)</p><p><b> {</b><
49、;/p><p><b> temp=P1;</b></p><p> switch(temp)</p><p><b> {</b></p><p> case 0x7D:key=14;break;</p><p> case 0xBD:key=15;break;<
50、;/p><p> case 0xDD:key=16;break;</p><p> case 0xED:key=17;break;</p><p> default:break;</p><p><b> }</b></p><p> while(temp!=0xf0)//等待松手</
51、p><p><b> {</b></p><p><b> temp=P1;</b></p><p> temp=temp&0xf0;</p><p><b> }</b></p><p> return(key);</p>
52、<p><b> }</b></p><p><b> }</b></p><p> P1=0xFB;//掃描第三行按鍵;</p><p> temp=P1;temp&=0xF0;</p><p> if(temp!=0xf0)</p><p>&
53、lt;b> {</b></p><p><b> delay(5);</b></p><p><b> temp=P1;</b></p><p> temp&=0xf0;</p><p> if(temp!=0xf0)</p><p>&l
54、t;b> {</b></p><p><b> temp=P1;</b></p><p> switch(temp)</p><p><b> {</b></p><p> case 0x7B:key=18;break;</p><p> cas
55、e 0xBB:key=19;break;</p><p> case 0xDB:key=1;break;</p><p> case 0xEB:key=1;break;</p><p> default:break;</p><p><b> }</b></p><p> while(t
56、emp!=0xf0)//等待松手</p><p><b> {</b></p><p><b> temp=P1;</b></p><p> temp=temp&0xf0;</p><p><b> }</b></p><p> ret
57、urn(key);</p><p><b> }</b></p><p><b> }</b></p><p> P1=0xF7;//掃描第四行按鍵;</p><p> temp=P1;temp&=0xF0;</p><p> if(temp!=0xf0)&
58、lt;/p><p><b> {</b></p><p><b> delay(5);</b></p><p><b> temp=P1;</b></p><p> temp&=0xf0;</p><p> if(temp!=0xf0)&l
59、t;/p><p><b> {</b></p><p><b> temp=P1;</b></p><p> switch(temp)</p><p><b> {</b></p><p> case 0x77:key=20;break;</
60、p><p> case 0xB7:key=21;break;</p><p> case 0xD7:key=22;break;</p><p> case 0xE7:key=23;break;</p><p> default:break;</p><p><b> }</b></p&
61、gt;<p> while(temp!=0xf0)//等待松手</p><p><b> {</b></p><p><b> temp=P1;</b></p><p> temp=temp&0xf0;</p><p><b> }</b><
62、;/p><p> return(key);</p><p><b> }</b></p><p><b> }</b></p><p> } </p><p> void shemima()//設密部分</p>
63、;<p><b> {</b></p><p> uchar key1,m=10;</p><p> key1=keyscan();</p><p> if(key1==20)</p><p><b> { </b></p><p> write
64、_cmd(0x80+0x06);</p><p> write_cmd(0x0f);//光標閃爍</p><p><b> while(m)</b></p><p><b> {</b></p><p> key1=keyscan(); </p>
65、<p> if((key1>=10)&&(key1<=19))</p><p><b> {</b></p><p> write_date('*');</p><p><b> m--;</b></p><p> shemi[j]=k
66、ey1;</p><p> j++; </p><p><b> }</b></p><p> if(key1==22)</p><p><b> m=0;</b></p><p><b> }</b></p><
67、;p> write_cmd(0x0c);</p><p><b> }</b></p><p><b> }</b></p><p> void jiemima()//解密系統(tǒng)</p><p><b> {</b></p><p>
68、uchar key1,i,m=10,k=0;</p><p> j=0;//全局變量j清零</p><p> key1=keyscan();</p><p> if(key1==23)</p><p><b> {</b></p><p> write_cmd(0x80+0x46);&
69、lt;/p><p> write_cmd(0x0f);//光標閃爍</p><p><b> while(m)</b></p><p><b> {</b></p><p> key1=keyscan(); </p><p> if((ke
70、y1>=10)&&(key1<=19))</p><p><b> {</b></p><p> write_date('*');</p><p><b> m--;</b></p><p> kaimi[j]=key1;</p>&
71、lt;p> j++; </p><p><b> }</b></p><p> if(key1==22)</p><p><b> m=0;</b></p><p><b> }</b></p><p> write_cmd
72、(0x0c);</p><p> for(i=0;i<10;i++)</p><p><b> {</b></p><p> if(shemi[i]==kaimi[i])</p><p><b> k++;</b></p><p><b> }<
73、;/b></p><p><b> if(k==10)</b></p><p><b> {</b></p><p> write_cmd(0x38);write_cmd(0x0c);write_cmd(0x06);write_cmd(0x01);write_cmd(0x80);</p><
74、p> for(i=0;i<16;i++)</p><p><b> {</b></p><p> write_date(success[i]);</p><p><b> delay(5);</b></p><p><b> }</b></p>
75、<p><b> }</b></p><p><b> else</b></p><p> fmqxiang();</p><p><b> }</b></p><p><b> }</b></p><p&g
76、t; void main()</p><p> {uchar key2;</p><p> chushihua_LCD();</p><p><b> while(1)</b></p><p> {key2=keyscan();//沒有按鍵按下key2的值總為0;</p><p>
77、 while(!key2)</p><p> key2=keyscan();//判斷按鍵按下時執(zhí)行以下語句</p><p> shemima();</p><p> jiemima();</p><p><b> }</b></p><p> } </p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 無限密碼鎖畢業(yè)設計
- 電子密碼鎖畢業(yè)設計
- 密碼鎖畢業(yè)設計論文
- 電子密碼鎖畢業(yè)設計
- 電子密碼鎖畢業(yè)設計
- 畢業(yè)設計---電子密碼鎖設計
- 電子密碼鎖設計畢業(yè)設計
- 電子密碼鎖的畢業(yè)設計
- 電子密碼鎖畢業(yè)設計論文
- 紅外遙控密碼鎖畢業(yè)設計
- 電子密碼鎖畢業(yè)設計論文
- 電子密碼鎖畢業(yè)設計 (2)
- 畢業(yè)設計220數(shù)字密碼鎖設計
- 畢業(yè)設計220數(shù)字密碼鎖設計
- 電子密碼鎖設計畢業(yè)設計論文
- 電子密碼鎖的畢業(yè)設計論文
- 單片機密碼鎖畢業(yè)設計
- 電子密碼鎖畢業(yè)設計論文 (2)
- eda電子密碼鎖畢業(yè)設計論文
- 畢業(yè)設計220數(shù)字密碼鎖設計.doc
評論
0/150
提交評論