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

下載本文檔

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

文檔簡介

電子信息工程專業(yè)單片機課程設(shè)計※※※※※※※※※※※電子信息工程專業(yè)單片機課程設(shè)計※※※※※※※※※※※※※※※※※※※※※※※※單片機課程設(shè)計報告書課題名稱基于89C51單片機無線電子密碼鎖的設(shè)計姓名學號學院通信與電子工程學院專業(yè)電子信息工程指導教師一、設(shè)計任務及要求設(shè)計任務:設(shè)計一個六位密碼的無線電子密碼鎖。要求:(1)通過無線的方式進行遠程開關(guān)密碼鎖;(2)通過無線的方式更改密碼;(3)實現(xiàn)密碼掉電存儲。指導教師簽名:年月日二、指導教師評語指導教師簽名:年月日三、成績驗收蓋章年月日基于89C51單片機無線電子密碼鎖的設(shè)計1設(shè)計目的(1)了解MCS-51單片機使用方法和熟悉藍牙模塊;(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)實無線功能的模塊有:藍牙模塊、無線模塊、紅外遙控模塊,因為相對之下,藍牙模塊更容易實現(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單元模塊設(shè)計3.2.1.總電路其設(shè)計的總電路如圖2所示:圖2總電路圖其工作原理如下:通過在51單片機開發(fā)板對AT89C52芯片寫入程序,建立單片機與藍牙模塊之間的串口通信,并通過手機輸入指令輸入到藍牙模塊之中,通過程序利用單片機串口將藍牙與51單片機進行通信,并控制單片機的引腳,從而控制外圍電路的LED燈的亮滅和數(shù)碼管的功能實現(xiàn)。3.2.251單片機系統(tǒng)單片機最小系統(tǒng)是在以MCS-51單片機為基礎(chǔ)上擴展,使其能更方便地運用于測試系統(tǒng)中,不僅具有控制方便、組態(tài)簡單和靈活性大等優(yōu)點,而且可以大幅度提高被測試的技術(shù)指標,從而能夠大大提高產(chǎn)品的質(zhì)量和數(shù)量。單片機以其功能強、體積小、可靠性高、造價低和開發(fā)周期短等優(yōu)點,稱為在實時檢測和自動控制領(lǐng)域中廣泛應用的器件,在工業(yè)生產(chǎn)中稱為必不可少的器件,尤其是在日常生活中發(fā)揮的作用也越來越大。本課題設(shè)計主要在MCS-51單片機上擴展I/O口,擴展定時器定時范圍,擴展鍵盤顯示接口。下圖為AT89C51芯片引腳圖如圖3所示:圖389C51芯片引腳圖3.2.3復位及振蕩電路單片機中的復位及振蕩電路如圖4所示:圖4復位及振蕩電路圖復位電路由按鍵復位和上電復位兩部分組成。按鍵復位就是在復位電容上并聯(lián)一個開關(guān),當開關(guān)按下時電容被放電、RST也被拉到高電平,而且由于電容的充電,會保持一段時間的高電平來使單片機復位。MCS51使用11.0592MHz的晶體振蕩器作為振蕩源,由于單片機內(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.2.6藍牙模塊HC-06是主從一體化的藍牙串口模塊,主從可指令切換,指令少于HC-05,使用簡單。(供電電壓

3.3V~3.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亮起(代表鎖打開),否則熄滅。在LED燈亮起的前提下,可以輸入命令’c’進入更改密碼模式,然后重新輸入新密碼,此時數(shù)碼管顯示的是不加密的明文。輸入新密碼完成之后輸入命令’d’對新密碼進行確認,所有的操作均在手機端的APP中完成。在手機按鍵操作之下點擊’close’可以直接關(guān)閉密碼鎖,點擊’retry’能夠重新開始輸入密碼。本密碼鎖能實現(xiàn)掉電密碼保存功能,即使斷電重啟也不會重新恢復初始密碼,大大提高了電子密碼鎖的實用性和安全性。而更改密碼這一功能是在高級模式下更改的,一般人即使知道了密碼但是不知道更改密碼的命令是無法更改密碼的,安全保障更上一層。注:更改密碼為此密碼鎖的高級模式,普通權(quán)限下使用的是“鍵盤模式”。圖7程序流程圖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)閉密碼鎖,然后重新掉電啟動密碼鎖,輸入’012345’舊密碼,顯示結(jié)果如圖10所示:圖10密碼更新之后輸入舊密碼可見數(shù)碼管右下方的LED燈沒有亮起,說明輸入密碼錯誤。(4)點擊APP鍵盤模式里面的‘retry’重新輸入密碼。輸入密碼為‘321654’顯示結(jié)果如圖11所示:圖11輸入新密碼測試圖由結(jié)果可知輸入正確的新密碼之后可以成功開啟密碼鎖,而原始的密碼則不能。說明密碼更改成功。4.3測試結(jié)果分析與結(jié)論在編寫程序的時候,需要一定的邏輯思維,同時需要有耐心同時又要細心。在編譯成功后,產(chǎn)生以“*.hex”和“*.bin”后綴的目標文件。在下載程序的時候,需要注意的是,先要將程序下載到AT89C51中再將藍牙與單片機用杜邦線連接起來。從硬件測試的結(jié)果可以知道,顯示功能與所寫程序?qū)崿F(xiàn)的功能基本符合,基本完成了基礎(chǔ)的無線電子密碼鎖設(shè)計。5設(shè)計體會經(jīng)過多次的反復測試與分析,對電路的原理及功能更加熟悉,同時提高了設(shè)計能力與及對電路的分析能力。同時在軟件的編程方面得到更到的提高,對編程能力得到加強,同時對所學的知識得到很大的提高與鞏固。總之,在這次課程設(shè)計過程中,我收獲了很多,不僅對我以后的學習有很大的幫助,也為將來的人生之路坐了一個很好的鋪墊。參考文獻[1]黃輝先.單片機原理及應用[M].湘潭:湘潭大學出版社,2013.附錄程序設(shè)計/******************************************************************** 無線電子密碼鎖1312203-30劉武********************************************************************* 與P1相連的8位發(fā)光LED點亮代表鎖被打開;熄滅代表鎖被鎖上。程序功能:本程序結(jié)合了24C02存儲器的存儲功能,可以掉電保存密碼。利用HC-06無線藍牙模塊與手機端的藍牙進行通信,再通過HC-06的串口與51單片機進行串口通信,從而達到遠程開關(guān)鎖的功能。遠程距離可達5~10米(視場地空曠程度而定)開鎖:開啟設(shè)備,從手機端輸入密碼,當6位密碼正確時點亮8位發(fā)光LED。2、更改密碼:只有當開鎖(LED亮)后,該功能方可使用。從手機app進入實時命令模式,輸入'c'(change)之后再輸入想要更改的密碼,最后輸入'd'確認密碼。3、重試密碼:手機端app的“鍵盤模式”中點擊“retry”,或者進入實時命令模式輸入'a',當設(shè)置密碼時,設(shè)置中途想更改密碼,也可按下此鍵重新設(shè)置。4、關(guān)閉密碼鎖:手機端app的"鍵盤模式"中點擊“close”,或者進入實時命令模式下輸入'b'。注:更改密碼為此密碼鎖的高級模式,普通權(quán)限下使用的是“鍵盤模式”。*******************************************************************/#include<reg52.h>#include<intrins.h>#defineuintunsignedint#defineucharunsignedcharucharold1,old2,old3,old4,old5,old6;ucharnew1,new2,new3,new4,new5,new6;//新采集的密碼uchara=16,b=16,c=16,d=16,e=16,f=16;//送入數(shù)碼管顯示的變量ucharwei,key,temp,input;bitallow,genggai,ok,wanbi,retry,close,on; //各個狀態(tài)位sbitdula=P2^6;sbitwela=P2^7;sbitbeep=P2^3;sbitsda=P2^0;//IO口定義sbitscl=P2^1;unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};/*****************IIC芯片24C02存儲器驅(qū)動程序**************/voidnop(){ _nop_(); _nop_();}/////////24C02讀寫驅(qū)動程序////////////////////voiddelay1(unsignedintm){ unsignedintn; for(n=0;n<m;n++);}voidinit()//24c02初始化子程序{ scl=1; nop(); sda=1; nop();}voidstart()//啟動I2C總線{ sda=1; nop(); scl=1; nop(); sda=0; nop(); scl=0; nop();}voidstop()//停止I2C總線{ sda=0; nop(); scl=1; nop(); sda=1; nop();}voidwritebyte(unsignedcharj)//寫一個字節(jié){ unsignedchari,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();}unsignedcharreadbyte()//讀一個字節(jié){unsignedchari,j,k=0;scl=0;nop();sda=1;for(i=0;i<8;i++){ nop();scl=1;nop(); if(sda==1) j=1; else j=0; k=(k<<1)|j; scl=0; } nop(); return(k);}voidclock()//I2C總線時鐘{unsignedchari=0;scl=1;nop();while((sda==1)&&(i<255)) i++;scl=0;nop();}////////從24c02的地址address中讀取一個字節(jié)數(shù)據(jù)/////unsignedcharread24c02(unsignedcharaddress){unsignedchari;start();writebyte(0xa0);clock();writebyte(address);clock();start();writebyte(0xa1);clock();i=readbyte();stop();delay1(100);return(i);}//////向24c02的address地址中寫入一字節(jié)數(shù)據(jù)info/////voidwrite24c02(unsignedcharaddress,unsignedcharinfo){start();writebyte(0xa0);clock();writebyte(address);clock();writebyte(info);clock();stop();delay1(5000);}/****************密碼鎖程序模塊*********************/voiddelay(unsignedchari){ ucharj,k;for(j=i;j>0;j--)for(k=125;k>0;k--);}voiddisplay(uchara,ucharb,ucharc,uchard,uchare,ucharf){dula=0;P0=table[a];dula=1;dula=0;wela=0;P0=0xfe;wela=1;wela=0;delay(5);P0=table[b];dula=1;dula=0;P0=0xfd;wela=1;wela=0;delay(5);P0=table[c];dula=1;dula=0;P0=0xfb;wela=1;wela=0;delay(5);P0=table[d];dula=1;dula=0;P0=0xf7;wela=1;wela=0;delay(5);P0=table[e];dula=1;dula=0;P0=0xef;wela=1;wela=0;delay(5);P0=table[f];dula=1;dula=0;P0=0xdf;wela=1;wela=0;delay(5);}voidkeyscan()//輸入按鍵掃描模塊{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; 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; break; }beep=0;} //delay(500);beep=1; on=0;}voidshumima() //對按鍵采集來的數(shù)據(jù)進行分配{ if(!wanbi) { switch(wei) { case1:new1=key; if(!allow) a=17; elsea=key; break; case2:new2=key; if(a==17)b=17; elseb=key; break; case3:new3=key; if(a==17)c=17; elsec=key; break; case4:new4=key; if(a==17)d=17; elsed=key; break; case5:new5=key; if(a==17)e=17; elsee=key; break; case6:new6=key; if(a==17)f=17; elsef=key; wanbi=1; break; } }}voidyanzheng() //驗證密碼是否正確{ if(wanbi) //只有當六位密碼均輸入完畢后方進行驗證 { if((new1==old1)&(new2==old2)&(new3==old3)&(new4==old4)&(new5==old5)&(new6==old6)) allow=1; //當輸入的密碼正確,會得到allowe置1 }}voidserial_init(){SCON=0X50;TMOD=0X20;TH1=0XFD;TL1=0XFD;TR1=1;EA=1;ES=1;}voidmain(){ init();//初始化24C02 old1=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會被置1 { if(allow) //若已經(jīng)把鎖打開,才有更改密碼的權(quán)限 { while(!wanbi) //當新的六位密碼沒有設(shè)

溫馨提示

  • 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

提交評論