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

下載本文檔

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

文檔簡介

1、2013級電子信息工程專業(yè)單片機課程設(shè)計單片機課程設(shè)計報告書課題名稱基于89C51單片機無線電子密碼鎖的設(shè)計姓 名劉武學 號131220330學 院通信與電子工程學院專 業(yè)電子信息工程指導教師祝秋香 講師2015年 12月20日一、設(shè)計任務及要求設(shè)計任務: 設(shè)計一個六位密碼的無線電子密碼鎖。要 求:(1)通過無線的方式進行遠程開關(guān)密碼鎖;(2)通過無線的方式更改密碼;(3)實現(xiàn)密碼掉電存儲。指導教師簽名: 年 月 日 二、指導教師評語 指導教師簽名: 年 月 日 三、成績 驗收蓋章 年 月 日 基于89C51單片機無線電子密碼鎖的設(shè)計1 設(shè)計目的(1)了解MCS-51單片機使用方法和熟悉藍牙模

2、塊;(2)掌握AT89C51芯片的使用方法及藍牙模塊的連接與使用;(3)熟悉單片機程序仿真軟件Proteus的使用;(4)了解MCS-51單片機開發(fā)板工作原理以及芯片的組合;(5)熟悉無線電子密碼鎖的設(shè)計及實現(xiàn)。2 設(shè)計思路2.1 選擇設(shè)計電路 設(shè)計51單片機與藍牙連接的電路。2.2 所選設(shè)計電路的原因(1)由于無線電子密碼鎖的設(shè)計需要用到藍牙模塊,用到的單片機資源并不是很多,而51單片機的資源有8位CPU、4KB的ROM、128B的RAM、2個16位定時/計數(shù)器、4組8位的I/O、1個串口和5個中斷源,可以更有效率的利用到51單片機的資源。(2)可現(xiàn)實無線功能的模塊有:藍牙模塊、無線模塊、紅

3、外遙控模塊,因為相對之下,藍牙模塊更容易實現(xiàn),更容易操作,最后選擇藍牙模塊實現(xiàn)手機遠程控制。(3)為了提高效率,可以利用51單片機開發(fā)板的硬件,用LED燈模擬密碼鎖的開關(guān),當LED燈亮起時代表鎖已經(jīng)開啟,熄滅則代表密碼鎖被關(guān)閉。應用在實際中可用繼電器替代LED的亮滅去控制強電開關(guān)。3 設(shè)計過程 3.1 設(shè)計總框圖無線電子密碼鎖分為兩個主要功能模塊:51單片機模塊,藍牙實現(xiàn)模塊。這兩個模塊共同工作完成本電路的功能實現(xiàn)。其中利用AT89C51芯片來實現(xiàn)51單片機模塊功能,完成數(shù)碼管、發(fā)光二極管的實現(xiàn),同時利用HC06藍牙模塊來實現(xiàn)手機遠程控制功能。其設(shè)計總框圖如圖1所示:圖1 總體方框圖3.2 單

4、元模塊設(shè)計3.2.1. 總電路其設(shè)計的總電路如圖2所示:圖2 總電路圖其工作原理如下:通過在51單片機開發(fā)板對AT89C52芯片寫入程序,建立單片機與藍牙模塊之間的串口通信,并通過手機輸入指令輸入到藍牙模塊之中,通過程序利用單片機串口將藍牙與51單片機進行通信,并控制單片機的引腳,從而控制外圍電路的LED燈的亮滅和數(shù)碼管的功能實現(xiàn)。3.2.2 51單片機系統(tǒng)單片機最小系統(tǒng)是在以MCS-51單片機為基礎(chǔ)上擴展,使其能更方便地運用于測試系統(tǒng)中,不僅具有控制方便、組態(tài)簡單和靈活性大等優(yōu)點,而且可以大幅度提高被測試的技術(shù)指標,從而能夠大大提高產(chǎn)品的質(zhì)量和數(shù)量。單片機以其功能強、體積小、可靠性高、造價低

5、和開發(fā)周期短等優(yōu)點,稱為在實時檢測和自動控制領(lǐng)域中廣泛應用的器件,在工業(yè)生產(chǎn)中稱為必不可少的器件,尤其是在日常生活中發(fā)揮的作用也越來越大。本課題設(shè)計主要在MCS-51單片機上擴展I/O口,擴展定時器定時范圍,擴展鍵盤顯示接口。下圖為AT89C51芯片引腳圖如圖3所示:圖3 89C51芯片引腳圖3.2.3 復位及振蕩電路單片機中的復位及振蕩電路如圖4所示:圖4 復位及振蕩電路圖復位電路由按鍵復位和上電復位兩部分組成。按鍵復位就是在復位電容上并聯(lián)一個開關(guān),當開關(guān)按下時電容被放電、RST也被拉到高電平,而且由于電容的充電,會保持一段時間的高電平來使單片機復位。MCS51使用11.0592MHz的晶體

6、振蕩器作為振蕩源,由于單片機內(nèi)部帶有振蕩電路,所以外部只要連接一個晶振和兩個電容即可,電容容量一般在15pF至50pF之間。3.2.4 八段數(shù)碼顯示管單片機中數(shù)碼管的實現(xiàn)與顯示電路如圖5所示:圖5 數(shù)碼管電路圖 MCS-51單片機包含六個共陰極8段數(shù)碼管顯示器,可以使用動態(tài)掃描或者靜態(tài)顯示方式驅(qū)動。八位段選在通過330限流后連接在單片機的P0口上。3.2.5 按鍵及LED電路 單片機中LED燈與按鍵電路如圖6所示:圖6 按鍵及LED電路圖開發(fā)板上提供了8個獨立LED,由P2口控制,同樣采用共陽級接法,所以只有當P2口輸出低電平時LED才會點亮。這樣做的主要原因是因為單片機的低電平驅(qū)動能力高。3

7、.2.6 藍牙模塊 HC-06是主從一體化的藍牙串口模塊,主從可指令切換,指令少于HC-05,使用簡單。(供電電壓 3.3V3.6V)主機:用來搜索從設(shè)備,不能被其他設(shè)備搜索。(帶白點的藍牙模塊)從機:用來被搜索的設(shè)備,不能主動搜索其他設(shè)備。主從連上以后就相當于一根串口線使用,這個時候就不分主從,也就是透傳模式。藍牙透傳模塊可以讓你原來使用串口的設(shè)備擺脫線纜的束縛在10米范圍內(nèi)實現(xiàn)無線串口通信。4 系統(tǒng)設(shè)計4.1 主程序流程圖系統(tǒng)總流程圖如圖7所示,流程圖分析:首先系統(tǒng)初始化,系統(tǒng)開始運行,當手機輸入數(shù)字密碼時,數(shù)碼管會以加密的方式顯示輸入狀態(tài),若是6位密碼輸入正確,則LED亮起(代

8、表鎖打開),否則熄滅。在LED燈亮起的前提下,可以輸入命令c進入更改密碼模式,然后重新輸入新密碼,此時數(shù)碼管顯示的是不加密的明文。輸入新密碼完成之后輸入命令d對新密碼進行確認,所有的操作均在手機端的APP中完成。在手機按鍵操作之下點擊close可以直接關(guān)閉密碼鎖,點擊retry能夠重新開始輸入密碼。本密碼鎖能實現(xiàn)掉電密碼保存功能,即使斷電重啟也不會重新恢復初始密碼,大大提高了電子密碼鎖的實用性和安全性。而更改密碼這一功能是在高級模式下更改的,一般人即使知道了密碼但是不知道更改密碼的命令是無法更改密碼的,安全保障更上一層。注:更改密碼為此密碼鎖的高級模式,普通權(quán)限下使用的是“鍵盤模式”。圖7 程

9、序流程圖4.2 硬件測試 (1)用手機連上HC06模塊的藍牙之后,在手機APP中的鍵盤模式里面輸入初始密碼012345并觀察單片機的變化,顯示結(jié)果如圖8所示:圖8 輸入初始密碼的測試結(jié)果圖 數(shù)碼管上顯示輸入密碼的狀態(tài),6位密碼均被用進行加密,從手機APP的圖上面可以看出輸入的密碼為012345,密碼輸入正確,數(shù)碼管下方的一排LED燈亮起。(2)在手機APP的命令模式中輸入c(在開鎖的狀態(tài)下),設(shè)置新密碼為321654,此時新密碼設(shè)置的過程為明文在數(shù)碼管上顯示。然后輸入d對新密碼進行確認。顯示結(jié)果如圖9所示:圖9 設(shè)置新密碼(3)進入APP鍵盤模式,點擊close按鈕,關(guān)閉密碼鎖,然后重新掉電啟

10、動密碼鎖,輸入012345舊密碼,顯示結(jié)果如圖10所示:圖10 密碼更新之后輸入舊密碼 可見數(shù)碼管右下方的LED燈沒有亮起,說明輸入密碼錯誤。(4)點擊APP鍵盤模式里面的retry重新輸入密碼。輸入密碼為321654顯示結(jié)果如圖11所示:圖11 輸入新密碼測試圖 由結(jié)果可知輸入正確的新密碼之后可以成功開啟密碼鎖,而原始的密碼則不能。說明密碼更改成功。4.3測試結(jié)果分析與結(jié)論 在編寫程序的時候,需要一定的邏輯思維,同時需要有耐心同時又要細心。在編譯成功后,產(chǎn)生以 “*.hex”和“*.bin” 后綴的目標文件。 在下載程序的時候,需要注意的是,先要將程序下載到AT89C51中再將藍牙與單片機用

11、杜邦線連接起來。 從硬件測試的結(jié)果可以知道,顯示功能與所寫程序?qū)崿F(xiàn)的功能基本符合,基本完成了基礎(chǔ)的無線電子密碼鎖設(shè)計。5 設(shè)計體會 經(jīng)過多次的反復測試與分析,對電路的原理及功能更加熟悉,同時提高了設(shè)計能力與及對電路的分析能力。同時在軟件的編程方面得到更到的提高,對編程能力得到加強,同時對所學的知識得到很大的提高與鞏固。總之,在這次課程設(shè)計過程中,我收獲了很多,不僅對我以后的學習有很大的幫助,也為將來的人生之路坐了一個很好的鋪墊。參考文獻1 黃輝先. 單片機原理及應用M. 湘潭: 湘潭大學出版社, 2013.附錄 程序設(shè)計/*無線電子密碼鎖 1312203-30 劉武* 與P1相連的8位發(fā)光LE

12、D點亮代表鎖被打開;熄滅代表鎖被鎖上。程序功能: 本程序結(jié)合了24C02存儲器的存儲功能,可以掉電保存密碼。利用HC-06無線藍牙模塊與手機端的藍牙進行通信,再通過HC-06的串口與51單片機進行串口通信 ,從而達到遠程開關(guān)鎖的功能。遠程距離可達510米(視場地空曠程度而定)1、 開鎖:開啟設(shè)備,從手機端輸入密碼,當6位密碼正確時點亮8位發(fā)光LED。 2、更改密碼:只有當開鎖(LED亮)后,該功能方可使用。從手機app進入實時命令模式,輸入'c'(change)之后再輸入想要更改的密碼,最后輸入'd'確認密碼。 3、重試密碼:手機端app的“鍵盤模式”中點擊“r

13、etry”,或者進入實時命令模式輸入'a',當設(shè)置密碼時,設(shè)置中途想更改密碼,也可按下此鍵重新設(shè)置。4、關(guān)閉密碼鎖:手機端app的"鍵盤模式"中點擊“close”,或者進入實時命令模式下輸入'b'。注:更改密碼為此密碼鎖的高級模式,普通權(quán)限下使用的是“鍵盤模式”。*/#include<reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charuchar old1,old2,old3,old4,old5,old6; uc

14、har new1,new2,new3,new4,new5,new6; /新采集的密碼uchar a=16,b=16,c=16,d=16,e=16,f=16; /送入數(shù)碼管顯示的變量uchar wei,key,temp,input;bit allow,genggai,ok,wanbi,retry,close,on; /各個狀態(tài)位sbit dula=P26;sbit wela=P27;sbit beep=P23;sbit sda=P20; /IO口定義sbit scl=P21;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0

15、x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40;/*IIC芯片24C02存儲器驅(qū)動程序*/void nop()_nop_();_nop_();/24C02讀寫驅(qū)動程序/void delay1(unsigned int m)unsigned int n; for(n=0;n<m;n+);void init() /24c02初始化子程序scl=1;nop();sda=1;nop(); void start() /啟動I2C總線sda=1;nop();scl=1;nop();sda=0;nop();scl=0;nop();void s

16、top() /停止I2C總線sda=0;nop();scl=1;nop();sda=1;nop();void writebyte(unsigned char j) /寫一個字節(jié)unsigned char i,temp; temp=j; for (i=0;i<8;i+) temp=temp<<1; scl=0; nop(); sda=CY;/temp左移時,移出的值放入了CY中 nop(); scl=1;/待sda線上的數(shù)據(jù)穩(wěn)定后,將scl拉高 nop(); scl=0; nop(); sda=1; nop();unsigned char readbyte() /讀一個字節(jié) u

17、nsigned char i,j,k=0; scl=0; nop(); sda=1; for (i=0;i<8;i+) nop(); scl=1; nop(); if(sda=1) j=1; elsej=0; k=(k<<1)|j; scl=0; nop();return(k);void clock() /I2C總線時鐘 unsigned char i=0; scl=1; nop(); while(sda=1)&&(i<255) i+; scl=0; nop();/從24c02的地址address中讀取一個字節(jié)數(shù)據(jù)/unsigned char read2

18、4c02(unsigned char address) unsigned char i; start(); writebyte(0xa0); clock(); writebyte(address); clock(); start(); writebyte(0xa1); clock(); i=readbyte(); stop(); delay1(100); return(i);/向24c02的address地址中寫入一字節(jié)數(shù)據(jù)info/void write24c02(unsigned char address,unsigned char info) start(); writebyte(0xa0

19、); clock(); writebyte(address); clock(); writebyte(info); clock(); stop(); delay1(5000); /*密碼鎖程序模塊*/void delay(unsigned char i)uchar j,k; for(j=i;j>0;j-) for(k=125;k>0;k-);void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f) dula=0; P0=tablea; dula=1; dula=0; wela=0; P0=0xfe; wela=1;

20、wela=0; delay(5); P0=tableb; dula=1; dula=0; P0=0xfd; wela=1; wela=0; delay(5); P0=tablec; dula=1; dula=0; P0=0xfb; wela=1; wela=0; delay(5); P0=tabled; dula=1; dula=0; P0=0xf7; wela=1; wela=0; delay(5); P0=tablee; dula=1; dula=0; P0=0xef; wela=1; wela=0; delay(5); P0=tablef; dula=1; dula=0; P0=0xdf

21、; wela=1; wela=0; delay(5);void keyscan()/輸入按鍵掃描模塊 if(on) switch(input) case '0': key=0; wei+; break; case '1': key=1; wei+; break; case '2': key=2; wei+; break; case '3': key=3; wei+; break; case '4': key=4; wei+; break; case '5': key=5; wei+; break;

22、case '6': key=6; wei+; break; case '7': key=7; wei+; break; case '8': key=3; wei+; break; case '9': key=3; wei+; break; case 'a': retry=1; break; case 'b': close=1; break; case 'c': genggai=1; wei=0; break; case 'd': if(allow) ok=1; bre

23、ak; beep=0; /delay(500); beep=1; on=0; void shumima()/對按鍵采集來的數(shù)據(jù)進行分配if(!wanbi)switch(wei)case 1:new1=key; if(!allow)a=17; else a=key;break;case 2:new2=key;if(a=17) b=17;else b=key;break;case 3:new3=key; if(a=17) c=17;else c=key;break;case 4:new4=key;if(a=17) d=17;else d=key;break;case 5:new5=key; if(

24、a=17) e=17;else e=key;break;case 6:new6=key; if(a=17) f=17;else f=key;wanbi=1;break;void yanzheng() /驗證密碼是否正確if(wanbi) /只有當六位密碼均輸入完畢后方進行驗證if(new1=old1)&(new2=old2)&(new3=old3)&(new4=old4)&(new5=old5)&(new6=old6)allow=1;/當輸入的密碼正確,會得到allowe置1void serial_init() SCON=0X50; TMOD=0X20;

25、 TH1=0XFD; TL1=0XFD; TR1=1; EA=1; ES=1;void main()init(); /初始化24C02old1=read24c02(110); old2=read24c02(111);old3=read24c02(112);old4=read24c02(113);old5=read24c02(114);old6=read24c02(115); serial_init();/初始化串口中斷while(1)keyscan();shumima();yanzheng();if(allow) /驗證完后,若allow為1,則開鎖P1=0x00;if(!genggai)wanbi=0;if(genggai) /當更改密碼鍵('c')被按下,genggai會被置1if(allow) /若已經(jīng)把鎖打開,才有更改密碼的權(quán)限while(

溫馨提示

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

提交評論