單片機課程設(shè)計報告-基于AT89C52單片機的電子密碼鎖設(shè)計.doc
《單片機課程設(shè)計報告-基于AT89C52單片機的電子密碼鎖設(shè)計.doc》由會員分享,可在線閱讀,更多相關(guān)《單片機課程設(shè)計報告-基于AT89C52單片機的電子密碼鎖設(shè)計.doc(18頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、沈陽理工大學(xué)課程設(shè)計專用紙 .18摘 要隨著社會的發(fā)展進(jìn)步,密碼鎖逐漸成為我們生活中很重要的一部分,密碼鎖是安全的一個很好的保障措施。本論文設(shè)計一個基于單片機和存儲器的,能夠進(jìn)行開鎖,上鎖,修改密碼的電子密碼鎖。電子密碼鎖是現(xiàn)代電子科技與安全結(jié)合的產(chǎn)物。它在現(xiàn)代鎖業(yè)扮演著重要的角色,本文的主要內(nèi)容是用AT89c52單片機為核心控制元件,用存儲器24c04進(jìn)行存儲密碼鎖的密碼,當(dāng)用戶輸入的密碼與存儲器儲存的密碼相同時,即可開鎖成功,并也可以修改密碼,若不相同,則不能開鎖,并提示密碼錯誤。關(guān)鍵詞:AT89C52單片機 密碼鎖 LCD 矩陣鍵盤 目錄摘 要1目錄21.引 言32. 總體設(shè)計42.1基
2、本原理42.2系統(tǒng)總體框圖及設(shè)計思路43.詳細(xì)設(shè)計53.1 硬件設(shè)計53.2軟件設(shè)計.83.2.1程序設(shè)計思路83.2.2 程序流程圖83.2.3 程序代碼94. 系統(tǒng)調(diào)試及分析155.心得體會17參考文獻(xiàn)181.引 言單片機又稱單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計算機系統(tǒng)集成到一個芯片上。相當(dāng)于一個微型的計算機,和計算機相比,單片機只缺少了I/O設(shè)備。概括的講:一塊芯片就成了一臺計算機。它的體積小、質(zhì)量輕、價格便宜、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。同時,學(xué)習(xí)使用單片機是了解計算機原理與結(jié)構(gòu)的最佳選擇。 密碼鎖是一種通過密碼輸入來控制電路或是芯片工作,從而控制機械開關(guān)的
3、閉合,完成開鎖、閉鎖任務(wù)的電子產(chǎn)品。它的種類很多,有簡易的電路產(chǎn)品,也有基于芯片的性價比較高的產(chǎn)品?,F(xiàn)在應(yīng)用較廣的數(shù)字密碼鎖是以芯片為核心,通過編程來實現(xiàn)的。其性能和安全性已大大超過了機械鎖。其特點是保密性好,隨機開鎖成功率幾乎為零。密碼可變,用戶可以隨時更改密碼,防止密碼被盜,同時也可以避免因人員的更替而使鎖的密級下降。無活動零件,不會磨損,壽命長。使用靈活性好,不像機械鎖必須佩帶鑰匙才能開鎖。數(shù)字密碼鎖操作簡單易行,一學(xué)就會。2. 總體設(shè)計2.1基本原理電子密碼鎖是才用存儲芯片24C04進(jìn)行存放密碼,單片機可以對24C04進(jìn)行讀取密碼和寫入密碼,本密碼鎖是事先吧初始密碼123456寫入24
4、C04中,用戶輸入密碼后,通過對用戶輸入的密碼和24C04中的密碼進(jìn)行比較,若比較相同則提示開鎖稱成功,開鎖后,用戶可以修改密碼,即把用戶輸入的新密碼寫入到24C04當(dāng)中,并清除之前的密碼,按下保存鍵后,繼成功修改密碼。其中24C04的原理如下:AT24C04是美國Atmel公司的低功耗CMOS型E2PROM,內(nèi)含2568位存儲空間,具有工作電壓寬(2.55.5 V)、擦寫次數(shù)多(大于10000次)、寫入速度快(小于10 ms)、抗干擾能力強、數(shù)據(jù)不易丟失、體積小等特點。而且他是采用了I2C總線式進(jìn)行數(shù)據(jù)讀寫的串行器件,占用很少的資源和IO線,并且支持在線編程,進(jìn)行數(shù)據(jù)實時的存取十分方便。AT
5、24C04中帶有的片內(nèi)地址寄存器。每寫入或讀出一個數(shù)據(jù)字節(jié)后,該地址寄存器自動加1,以實現(xiàn)對下一個存儲單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時間,一次操作可寫入多達(dá)8個字節(jié)的數(shù)據(jù)。I2C總線是一種用于IC器件之間連接的二線制總線。他通過SDA(串行數(shù)據(jù)線)及SCL(串行時鐘線)兩根線在連到總線上的器件之間傳送信息,并根據(jù)地址識別每個器件。 AT24C02正是運用了I2C規(guī)程,使用主從機雙向通信,主機(通常為單片機)和從機(AT24C04)均可工作于接收器和發(fā)送器狀態(tài)。主機產(chǎn)生串行時鐘信號(通過SCL引腳)并發(fā)出控制字,控制總線的傳送方向,并產(chǎn)生開始和停止的條件。無論是主機還是
6、從機,接收到一個字節(jié)后必須發(fā)出一個確認(rèn)信號ACK。AT24C04的控制字由8位二進(jìn)制數(shù)構(gòu)成,在開始信號發(fā)出以后,主機便會發(fā)出控制字,以選擇從機并控制總線傳送的方向。2.2系統(tǒng)總體框圖及設(shè)計思路電子密碼鎖24C04存儲密碼矩陣鍵盤進(jìn)行輸入LCD顯示提示信息 總體設(shè)計思路:本設(shè)計利用單片機靈活的編程設(shè)計和豐富的IO端口,及其控制的準(zhǔn)確性,不但能實現(xiàn)基本的密碼鎖功能,還能添加掉電存儲。其中,0-9為用戶可以輸入密碼可選擇的數(shù)字,10號功能為開鎖鍵,11號功能為上鎖,12號功能為輸入修改后的密碼,13號功能為保存密碼,14號功能為重新輸入。利用LCD來顯示提示信息,用LED來提示密碼鎖的狀態(tài)。3.詳細(xì)
7、設(shè)計3.1 硬件設(shè)計1芯片及原理介紹(一) AT89C52AT89C52與MCS-51單片機產(chǎn)品兼容 、8K字節(jié)在系統(tǒng)可編程Flash存儲器、 1000次擦寫周期、 全靜態(tài)操作:0Hz33MHz 、 三級加密程序存儲器 、 32個可編程I/O口線 、三個16位定時器/計數(shù)器 八個中斷源 、全雙工UART串行通道、 低功耗空閑和掉電模式 、掉電后中斷可喚醒 、看門狗定時器 、雙數(shù)據(jù)指針 、掉電標(biāo)識符 。 P1口引腳特殊功能P1.0T2(定時器T2外部輸入)P3口引腳P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2(外部中斷0)P3.3(外部中斷1)P3.4T0(定時器0外部輸入)
8、P3.5T1(定時器1外部輸入)P3.6WR(外部數(shù)據(jù)存儲器寫選通)P3.7RD(外部數(shù)據(jù)存儲器讀先通)AT89C52的一些特殊功能口,如下表所示:(二) 矩陣鍵盤使用矩陣鍵盤,所以本設(shè)計就采用行列式鍵盤,同時也能減少鍵盤與單片機接口時所占用的I/O線的數(shù)目,在按鍵比較多的時候,通常采用這樣方法。其原理如圖。本設(shè)計中矩陣鍵盤接在單片機的P1口。每一條水平(行線)與垂直線(列線)的交叉處不相通,而是通過一個按鍵來連通,利用這種行列式矩陣結(jié)構(gòu)只需要N條行線和M條列線,即可組成具有NM個按鍵的鍵盤。在這種行列式矩陣鍵盤非鍵盤編碼的單片機系統(tǒng)中,鍵盤處理程序首先執(zhí)行等待按鍵并確認(rèn)有無按鍵按下的程序段。
9、當(dāng)確認(rèn)有按鍵按下后,下一步就要識別哪一個按鍵按下。對鍵的識別通常有兩種方法:一種是常用的逐行掃描查詢法;另一種是速度較快的線反轉(zhuǎn)法。(三) LCD1602本系統(tǒng)設(shè)計的顯示電路是為了給使用者以提示而設(shè)置的。本系統(tǒng)的顯示采用了LCD1602作為顯示模塊,其能夠同時顯示16x02即32個字符。LCD在系統(tǒng)中,其D0-D7引腳分別接單片機的P0口、VSS和VDD分別接電源和地線、VEE為液晶亮度調(diào)節(jié)按鈕(可接電位器)、RS為數(shù)據(jù)或命令的選擇端接P2.0、RW為讀寫的選擇端接P2.1、E為使能信號接P2.2。如圖所示。(四) 24C04本設(shè)計中為了在系統(tǒng)掉電時能夠保存系統(tǒng)的設(shè)置密碼,使用了具有I2C總線
10、接口的E2PROM的24C04芯片來保存密碼鎖的密碼。SCL串行時鐘 AT24C02串行時鐘輸入管腳用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收的時鐘,這是一個輸入管腳。 SDA串行數(shù)據(jù)/地址 AT24C02 雙向串行數(shù)據(jù)/地址管腳用于器件所有數(shù)據(jù)的發(fā)送或接收,SDA 是一個開漏輸出管腳,可與其它開漏輸出或集電極開路輸出進(jìn)行線或(wire-OR)。 A0、A1、A2器件地址輸入端 這些輸入腳用于多個器件級聯(lián)時設(shè)置器件地址,當(dāng)這些腳懸空時默認(rèn)值為0。當(dāng)使用AT24C02 時最大可級聯(lián)8個器件。如果只有一個AT24C02被總線尋址,這三個地址輸入腳(A0、A1、A2 )可懸空或連接到Vss,如果只有一個AT24
11、C02被總線尋址這三個地址輸入腳(A0、A1、A2 )必須連接到Vss。 WP寫保護(hù) 如果WP管腳連接到Vcc,所有的內(nèi)容都被寫保護(hù)只能讀。當(dāng)WP管腳連接到Vss 或懸空允許器件進(jìn)行正常的讀/寫操作2.硬件原理圖P1口通過連接1個矩陣鍵盤,作為密碼輸入和功能選擇按鍵;P0口接LCD1602的8位數(shù)據(jù)通信線;P2.0,P2.1,P2.2接LCD控制端;P3.2和P3.3接24C04。 3.2 軟件設(shè)計. 3.2.1程序設(shè)計思路電子密碼鎖工作的主要過程是LCD提示開始選擇操作功能(選擇開鎖還是更改密碼),通過10號鍵盤開鎖,13號14號進(jìn)行密碼的修改與保存。當(dāng)用戶選擇開鎖時,通過鍵盤輸入開鎖密碼。
12、如果密碼輸入正確,則LCD提示密碼正確、LED燈亮表示開鎖。如果密碼輸入錯誤則LCD提示密碼錯誤。當(dāng)用戶選擇更改密碼功能時,要求用戶先輸入當(dāng)前密碼。當(dāng)密碼正確時LCD提示用戶進(jìn)一步操作。單片機向24C04寫入新密碼,否則提示錯誤并返回初狀態(tài)。3.2.1程序流程圖開始功能鍵盤掃描檢測子程序輸入開鎖還是改密碼?提示輸入開鎖密碼LCD用*動態(tài)提示已輸入數(shù)字提示輸入舊密碼將已輸入的數(shù)字暫存與單片機RAM判斷舊密碼是否正確?N提示密碼錯誤調(diào)用存于24C04的密碼與其比較?Y清單片機RAM密碼暫存區(qū)提示輸入新密碼YN判斷輸入的密碼是正確?第一個LED亮N提示出錯Y將新密碼寫入AT24C02 結(jié)束提示密碼修
13、改成功3.2.3 程序代碼1、預(yù)定義部分#include#include#include#include #include #include #define uchar unsigned char#define uint unsigned int/上次按鍵和當(dāng)前按鍵序號,該矩陣中序號范圍015,16表示無按鍵uchar pre_keyno=16,keyno=16;uchar code Title_Text=your password.;/標(biāo)題字符串uchar DSY_BUFFER16= ;/顯示緩沖uchar userpassword7= ;/用戶輸入的密碼uchar IIC_Password
14、7;uchar IS_Valid_User = 0;uchar i = 0;void Beep();uchar Clear_Password();sbit LED_OPEN = P20;/開鎖燈亮sbit BEEP = P37;/蜂鳴器2、功能控制void key_main() P1 = 0 xF0; if(P1 != 0 xF0) keyno = keys_scan(); /掃描鍵盤獲取鍵序號KeyNo if(pre_keyno != keyno) if(i=6) switch ( keyno ) case 0: case 1: case 2: case 3: case 4: case 5:
15、 case 6: case 7: case 8: case 9: if (i = 0) display_string( ,0 x40); userpasswordi = keyno + 0; userpasswordi+1 = ;/DSY_BUFFERi = userpasswordi; DSY_BUFFERi = *; DSY_BUFFERi+1 = ; display_string(DSY_BUFFER,0 x40); i+;break; case 10: /按A鍵開鎖 if (strcmp(userpassword,IIC_Password) = 0) LED_OPEN = 0; /點亮
16、LED Clear_Password(); display_string(Unlock OK! ,0 x40); IS_Valid_User = 1; else LED_OPEN =1; /關(guān)閉LED Clear_Password(); display_string(ERROR ! ,0 x40); IS_Valid_User = 0; i = 0; break; case 11: /按B鍵上鎖 LED_OPEN =1; Clear_Password(); display_string(Title_Text,0 x00); display_string( ,0 x40); i = 0; IS_
17、Valid_User = 0; break; case 12: /按C鍵設(shè)置新密碼 /如果是合法用戶則提示輸入新密碼 if ( !IS_Valid_User ) display_string(No rights !,0 x40); else i = 0; display_string(New Password: ,0 x00); display_string( ,0 x40); break; case 13: /按D鍵保存新密碼 if ( !IS_Valid_User ) display_string(No rights !,0 x40); else sendstring(0 xa0, 0 ,
18、 userpassword, 6); /重新讀入剛寫的密碼 recstring(0 xa0, 0 , IIC_Password, 6); IIC_Password6 = ; i = 0; display_string(Title_Text,0 x00); display_string(Password Saved! ,0 x40); break; case 14: /按E鍵消除所有輸入 i = 0; Clear_Password(); display_string( ,0 x40); beep(); pre_keyno = keyno;/delay(100);/ Beep(); delay(1
19、00); P1= 0 xF0; while (P1 != 0 xF0); /如果有鍵未釋放則等待 while (P1 = 0 xF0); /如果沒有再次按下按鍵則等待 3、24C04讀寫程序 /-從芯片讀取1字節(jié)uchar recbyte() uchar i,rd; rd=0 x00; SDA=1; for(i=0;i8;i+) SCL=1;rd=1;rd|=SDA;delay4us();SCL=0;delay4us(); SCL=0; delay4us(); return rd;/-向芯片發(fā)送一個字節(jié)uchar sendbyte(uchar wd) uchar i; bit ACK0; fo
20、r(i=0;i8;i+) SDA=(bit)(wd&0 x80); _nop_();_nop_(); SCL=1;delay4us(); SCL=0; wd=1; delay4us(); SDA=1; SCL=1; delay4us(); ACK0=!SDA; SCL=0; delay4us(); return ACK0;/發(fā)送多字節(jié)數(shù)據(jù)函數(shù) uchar sendstring(uchar slave,uchar subaddr,uchar *buffer,uchar N)uchar i;start();if(!sendbyte(slave) return 0;if(!sendbyte(suba
21、ddr) return 0;for(i=0;iN-1;i+)if(!sendbyte(bufferi) return 0; stop(); return 1;/-接收多字節(jié)數(shù)據(jù)函數(shù)uchar recstring(uchar slave,uchar subaddr,uchar *buffer,uchar N)uchar i;start();if(!sendbyte(slave) return 0;if(!sendbyte(subaddr) return 0;start();if(!sendbyte(slave+1) return 0;for(i=0;iN-1;i+) bufferi=recbyt
22、e(); ACK(); bufferN-1= recbyte(); no_ACK(); stop(); return 1;4、LCD1602顯示部分/測試LCD忙狀態(tài) 返回resultbit lcd_bz()bit result;rs = 0;rw = 1;eq = 1;_nop_();_nop_();_nop_();_nop_();result = (bit)(P0&0 x80);eq = 0;return result; /寫指令數(shù)據(jù)到LCDvoid lcd_wcmd(uchar cmd)rs = 0;rw = 0;eq = 0;P0 = cmd;eq = 1;delay_lcd(1);e
23、q = 0;/寫入顯示數(shù)據(jù)到LCDvoid lcd_wdat(uchar dat)while(lcd_bz();rs = 1;rw = 0; P0 = dat;delay_lcd(1);eq = 1;eq = 0;/LCD初始化void lcd_init()lcd_wcmd(0 x38);/顯示模式設(shè)置,5*7點陣,8位數(shù)據(jù)接口while(lcd_bz();lcd_wcmd(0 x0c);/顯示開及光標(biāo)設(shè)置不顯示lcd_wcmd(0 x06);/顯示光標(biāo)移動設(shè)置lcd_wcmd(0 x01);/顯示清屏void display_string(uchar *str,uchar lineno)/在
24、液晶指定行顯示字符串uchar i;lcd_wcmd(0 x80 + lineno);for(i=0; i4)0 x0f;switch(temp)case 1: k+=0;break;case 2: k+=4;break;case 4: k+=8;break;case 8: k+=12;break;default:break ;/keyno=k;return k;6、主函數(shù)void main() init_main(); display_string(Title_Text,0 x00); /在第1行顯示標(biāo)題 /24C04的內(nèi)容已由初始化BIN文件導(dǎo)入 /將24C04中預(yù)先寫入的密碼讀入pass
25、 recstring(0 xa0, 0 , IIC_Password, 6); IIC_Password6 = 0; while(1) key_main(); 4. 系統(tǒng)調(diào)試及分析用keil編寫程序編譯運行通過后,用Proteus仿真結(jié)果如下,以下是輸入密碼正確,開鎖成功; 修改密碼,提示輸入新密碼,并保存成功。5.心得體會在著手本次課程設(shè)計時,通過查閱網(wǎng)絡(luò)與圖書館搜集到的資料,加上指導(dǎo)老師指點,結(jié)合生活中對密碼鎖的功能特性要求,設(shè)計出了這一套電子密碼鎖系統(tǒng)的主要硬件結(jié)構(gòu)和軟件結(jié)構(gòu),基本完成了課題。不過由于了解的專業(yè)知識尚淺,對課題的研究經(jīng)驗的不足,使得在技術(shù)的解決與運用上顯得粗糙了一些,特別
26、是功能鍵的設(shè)定。在設(shè)計的過程當(dāng)中經(jīng)歷和克服了許多困難,暴露我們知識和經(jīng)驗不足的同時也積累了實踐經(jīng)驗,檢閱了大學(xué)所學(xué)的知識,使所學(xué)的知識得到復(fù)習(xí)和鞏固。通過這次畢業(yè)設(shè)計我學(xué)到了很多東西,復(fù)習(xí)了理論知識,特別是單片機外圍電路模塊電路設(shè)計及其應(yīng)用編程;學(xué)會收集和處理資料的一些基本問題,提高獲取新知識的能力、分析和解決問題的能力以及交流與合作的能力。這次課程設(shè)計終于順利完成了,在設(shè)計中遇到了很多編程問題,在同學(xué)的幫助下,終于游逆而解。非常感謝!參考文獻(xiàn)1李群芳 張士軍 黃建 單片微型計算機與接口技術(shù)電子工業(yè)出版社2周美娟 肖來勝 單片機原理及系統(tǒng)設(shè)計清華大學(xué)出版社3 黃鑫,馬善農(nóng),趙永科.基于CPLD的電子琴研究與設(shè)計J.科技廣場. 4 趙亮,侯國銳.單片機C語言編程與實例M.北京:人民郵電出版社. 5 徐新艷單片機原理、應(yīng)用與實踐M北京:高等教育出版社沈陽理工大學(xué)
- 溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025《增值稅法》高質(zhì)量發(fā)展的增值稅制度規(guī)范增值稅的征收和繳納
- 深入學(xué)習(xí)《中華人民共和國科學(xué)技術(shù)普及法》推進(jìn)實現(xiàn)高水平科技自立自強推動經(jīng)濟(jì)發(fā)展和社會進(jìn)步
- 激揚正氣淬煉本色踐行使命廉潔從政黨課
- 加強廉潔文化建設(shè)夯實廉政思想根基培育風(fēng)清氣正的政治生態(tài)
- 深入學(xué)習(xí)2024《突發(fā)事件應(yīng)對法》全文提高突發(fā)事件預(yù)防和應(yīng)對能力規(guī)范突發(fā)事件應(yīng)對活動保護(hù)人民生命財產(chǎn)安全
- 2023年四年級數(shù)學(xué)上冊第一輪單元滾動復(fù)習(xí)第10天平行四邊形和梯形作業(yè)課件新人教版
- 2023年四年級數(shù)學(xué)上冊第14單元階段性綜合復(fù)習(xí)作業(yè)課件新人教版
- 2023年四年級數(shù)學(xué)上冊易錯清單十五課件新人教版
- 2023年四年級數(shù)學(xué)上冊易錯清單七課件西師大版
- 2023年五年級數(shù)學(xué)下冊易錯清單六作業(yè)課件北師大版
- 2023年五年級數(shù)學(xué)下冊易錯清單二作業(yè)課件北師大版
- 2023年五年級數(shù)學(xué)下冊四分?jǐn)?shù)的意義和性質(zhì)第10課時異分母分?jǐn)?shù)的大小比較作業(yè)課件蘇教版
- 2023年五年級數(shù)學(xué)下冊周周練四作業(yè)課件北師大版
- 2023年五年級數(shù)學(xué)下冊六折線統(tǒng)計圖單元復(fù)習(xí)卡作業(yè)課件西師大版
- 2023年四年級數(shù)學(xué)上冊6除數(shù)是兩位數(shù)的除法單元易錯集錦一作業(yè)課件新人教版