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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

13、etry”,或者進(jìn)入實(shí)時命令模式輸入'a',當(dāng)設(shè)置密碼時,設(shè)置中途想更改密碼,也可按下此鍵重新設(shè)置。4、關(guān)閉密碼鎖:手機(jī)端app的"鍵盤模式"中點(diǎn)擊“close”,或者進(jìn)入實(shí)時命令模式下輸入'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ù)進(jìn)行分配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() /驗(yàn)證密碼是否正確if(wanbi) /只有當(dāng)六位密碼均輸入完畢后方進(jìn)行驗(yàn)證if(new1=old1)&(new2=old2)&(new3=old3)&(new4=old4)&(new5=old5)&(new6=old6)allow=1;/當(dāng)輸入的密碼正確,會得到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) /驗(yàn)證完后,若allow為1,則開鎖P1=0x00;if(!genggai)wanbi=0;if(genggai) /當(dāng)更改密碼鍵('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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論