九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

單片機課程設計報告-基于AT89C52單片機的電子密碼鎖設計.doc

上傳人:good****022 文檔編號:116548742 上傳時間:2022-07-05 格式:DOC 頁數(shù):18 大?。?30.50KB
收藏 版權(quán)申訴 舉報 下載
單片機課程設計報告-基于AT89C52單片機的電子密碼鎖設計.doc_第1頁
第1頁 / 共18頁
單片機課程設計報告-基于AT89C52單片機的電子密碼鎖設計.doc_第2頁
第2頁 / 共18頁
單片機課程設計報告-基于AT89C52單片機的電子密碼鎖設計.doc_第3頁
第3頁 / 共18頁

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《單片機課程設計報告-基于AT89C52單片機的電子密碼鎖設計.doc》由會員分享,可在線閱讀,更多相關(guān)《單片機課程設計報告-基于AT89C52單片機的電子密碼鎖設計.doc(18頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、沈陽理工大學課程設計專用紙 .18摘 要隨著社會的發(fā)展進步,密碼鎖逐漸成為我們生活中很重要的一部分,密碼鎖是安全的一個很好的保障措施。本論文設計一個基于單片機和存儲器的,能夠進行開鎖,上鎖,修改密碼的電子密碼鎖。電子密碼鎖是現(xiàn)代電子科技與安全結(jié)合的產(chǎn)物。它在現(xiàn)代鎖業(yè)扮演著重要的角色,本文的主要內(nèi)容是用AT89c52單片機為核心控制元件,用存儲器24c04進行存儲密碼鎖的密碼,當用戶輸入的密碼與存儲器儲存的密碼相同時,即可開鎖成功,并也可以修改密碼,若不相同,則不能開鎖,并提示密碼錯誤。關(guān)鍵詞:AT89C52單片機 密碼鎖 LCD 矩陣鍵盤 目錄摘 要1目錄21.引 言32. 總體設計42.1基

2、本原理42.2系統(tǒng)總體框圖及設計思路43.詳細設計53.1 硬件設計53.2軟件設計.83.2.1程序設計思路83.2.2 程序流程圖83.2.3 程序代碼94. 系統(tǒng)調(diào)試及分析155.心得體會17參考文獻181.引 言單片機又稱單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計算機系統(tǒng)集成到一個芯片上。相當于一個微型的計算機,和計算機相比,單片機只缺少了I/O設備。概括的講:一塊芯片就成了一臺計算機。它的體積小、質(zhì)量輕、價格便宜、為學習、應用和開發(fā)提供了便利條件。同時,學習使用單片機是了解計算機原理與結(jié)構(gòu)的最佳選擇。 密碼鎖是一種通過密碼輸入來控制電路或是芯片工作,從而控制機械開關(guān)的

3、閉合,完成開鎖、閉鎖任務的電子產(chǎn)品。它的種類很多,有簡易的電路產(chǎn)品,也有基于芯片的性價比較高的產(chǎn)品。現(xiàn)在應用較廣的數(shù)字密碼鎖是以芯片為核心,通過編程來實現(xiàn)的。其性能和安全性已大大超過了機械鎖。其特點是保密性好,隨機開鎖成功率幾乎為零。密碼可變,用戶可以隨時更改密碼,防止密碼被盜,同時也可以避免因人員的更替而使鎖的密級下降。無活動零件,不會磨損,壽命長。使用靈活性好,不像機械鎖必須佩帶鑰匙才能開鎖。數(shù)字密碼鎖操作簡單易行,一學就會。2. 總體設計2.1基本原理電子密碼鎖是才用存儲芯片24C04進行存放密碼,單片機可以對24C04進行讀取密碼和寫入密碼,本密碼鎖是事先吧初始密碼123456寫入24

4、C04中,用戶輸入密碼后,通過對用戶輸入的密碼和24C04中的密碼進行比較,若比較相同則提示開鎖稱成功,開鎖后,用戶可以修改密碼,即把用戶輸入的新密碼寫入到24C04當中,并清除之前的密碼,按下保存鍵后,繼成功修改密碼。其中24C04的原理如下:AT24C04是美國Atmel公司的低功耗CMOS型E2PROM,內(nèi)含2568位存儲空間,具有工作電壓寬(2.55.5 V)、擦寫次數(shù)多(大于10000次)、寫入速度快(小于10 ms)、抗干擾能力強、數(shù)據(jù)不易丟失、體積小等特點。而且他是采用了I2C總線式進行數(shù)據(jù)讀寫的串行器件,占用很少的資源和IO線,并且支持在線編程,進行數(shù)據(jù)實時的存取十分方便。AT

5、24C04中帶有的片內(nèi)地址寄存器。每寫入或讀出一個數(shù)據(jù)字節(jié)后,該地址寄存器自動加1,以實現(xiàn)對下一個存儲單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時間,一次操作可寫入多達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ā)出一個確認信號ACK。AT24C04的控制字由8位二進制數(shù)構(gòu)成,在開始信號發(fā)出以后,主機便會發(fā)出控制字,以選擇從機并控制總線傳送的方向。2.2系統(tǒng)總體框圖及設計思路電子密碼鎖24C04存儲密碼矩陣鍵盤進行輸入LCD顯示提示信息 總體設計思路:本設計利用單片機靈活的編程設計和豐富的IO端口,及其控制的準確性,不但能實現(xiàn)基本的密碼鎖功能,還能添加掉電存儲。其中,0-9為用戶可以輸入密碼可選擇的數(shù)字,10號功能為開鎖鍵,11號功能為上鎖,12號功能為輸入修改后的密碼,13號功能為保存密碼,14號功能為重新輸入。利用LCD來顯示提示信息,用LED來提示密碼鎖的狀態(tài)。3.詳細

7、設計3.1 硬件設計1芯片及原理介紹(一) AT89C52AT89C52與MCS-51單片機產(chǎn)品兼容 、8K字節(jié)在系統(tǒng)可編程Flash存儲器、 1000次擦寫周期、 全靜態(tài)操作:0Hz33MHz 、 三級加密程序存儲器 、 32個可編程I/O口線 、三個16位定時器/計數(shù)器 八個中斷源 、全雙工UART串行通道、 低功耗空閑和掉電模式 、掉電后中斷可喚醒 、看門狗定時器 、雙數(shù)據(jù)指針 、掉電標識符 。 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的一些特殊功能口,如下表所示:(二) 矩陣鍵盤使用矩陣鍵盤,所以本設計就采用行列式鍵盤,同時也能減少鍵盤與單片機接口時所占用的I/O線的數(shù)目,在按鍵比較多的時候,通常采用這樣方法。其原理如圖。本設計中矩陣鍵盤接在單片機的P1口。每一條水平(行線)與垂直線(列線)的交叉處不相通,而是通過一個按鍵來連通,利用這種行列式矩陣結(jié)構(gòu)只需要N條行線和M條列線,即可組成具有NM個按鍵的鍵盤。在這種行列式矩陣鍵盤非鍵盤編碼的單片機系統(tǒng)中,鍵盤處理程序首先執(zhí)行等待按鍵并確認有無按鍵按下的程序段。

9、當確認有按鍵按下后,下一步就要識別哪一個按鍵按下。對鍵的識別通常有兩種方法:一種是常用的逐行掃描查詢法;另一種是速度較快的線反轉(zhuǎn)法。(三) LCD1602本系統(tǒng)設計的顯示電路是為了給使用者以提示而設置的。本系統(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本設計中為了在系統(tǒng)掉電時能夠保存系統(tǒng)的設置密碼,使用了具有I2C總線

10、接口的E2PROM的24C04芯片來保存密碼鎖的密碼。SCL串行時鐘 AT24C02串行時鐘輸入管腳用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收的時鐘,這是一個輸入管腳。 SDA串行數(shù)據(jù)/地址 AT24C02 雙向串行數(shù)據(jù)/地址管腳用于器件所有數(shù)據(jù)的發(fā)送或接收,SDA 是一個開漏輸出管腳,可與其它開漏輸出或集電極開路輸出進行線或(wire-OR)。 A0、A1、A2器件地址輸入端 這些輸入腳用于多個器件級聯(lián)時設置器件地址,當這些腳懸空時默認值為0。當使用AT24C02 時最大可級聯(lián)8個器件。如果只有一個AT24C02被總線尋址,這三個地址輸入腳(A0、A1、A2 )可懸空或連接到Vss,如果只有一個AT24

11、C02被總線尋址這三個地址輸入腳(A0、A1、A2 )必須連接到Vss。 WP寫保護 如果WP管腳連接到Vcc,所有的內(nèi)容都被寫保護只能讀。當WP管腳連接到Vss 或懸空允許器件進行正常的讀/寫操作2.硬件原理圖P1口通過連接1個矩陣鍵盤,作為密碼輸入和功能選擇按鍵;P0口接LCD1602的8位數(shù)據(jù)通信線;P2.0,P2.1,P2.2接LCD控制端;P3.2和P3.3接24C04。 3.2 軟件設計. 3.2.1程序設計思路電子密碼鎖工作的主要過程是LCD提示開始選擇操作功能(選擇開鎖還是更改密碼),通過10號鍵盤開鎖,13號14號進行密碼的修改與保存。當用戶選擇開鎖時,通過鍵盤輸入開鎖密碼。

12、如果密碼輸入正確,則LCD提示密碼正確、LED燈亮表示開鎖。如果密碼輸入錯誤則LCD提示密碼錯誤。當用戶選擇更改密碼功能時,要求用戶先輸入當前密碼。當密碼正確時LCD提示用戶進一步操作。單片機向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、預定義部分#include#include#include#include #include #include #define uchar unsigned char#define uint unsigned int/上次按鍵和當前按鍵序號,該矩陣中序號范圍015,16表示無按鍵uchar pre_keyno=16,keyno=16;uchar code Title_Text=your password.;/標題字符串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鍵設置新密碼 /如果是合法用戶則提示輸入新密碼 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);/顯示模式設置,5*7點陣,8位數(shù)據(jù)接口while(lcd_bz();lcd_wcmd(0 x0c);/顯示開及光標設置不顯示lcd_wcmd(0 x06);/顯示光標移動設置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行顯示標題 /24C04的內(nèi)容已由初始化BIN文件導入 /將24C04中預先寫入的密碼讀入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.心得體會在著手本次課程設計時,通過查閱網(wǎng)絡與圖書館搜集到的資料,加上指導老師指點,結(jié)合生活中對密碼鎖的功能特性要求,設計出了這一套電子密碼鎖系統(tǒng)的主要硬件結(jié)構(gòu)和軟件結(jié)構(gòu),基本完成了課題。不過由于了解的專業(yè)知識尚淺,對課題的研究經(jīng)驗的不足,使得在技術(shù)的解決與運用上顯得粗糙了一些,特別

26、是功能鍵的設定。在設計的過程當中經(jīng)歷和克服了許多困難,暴露我們知識和經(jīng)驗不足的同時也積累了實踐經(jīng)驗,檢閱了大學所學的知識,使所學的知識得到復習和鞏固。通過這次畢業(yè)設計我學到了很多東西,復習了理論知識,特別是單片機外圍電路模塊電路設計及其應用編程;學會收集和處理資料的一些基本問題,提高獲取新知識的能力、分析和解決問題的能力以及交流與合作的能力。這次課程設計終于順利完成了,在設計中遇到了很多編程問題,在同學的幫助下,終于游逆而解。非常感謝!參考文獻1李群芳 張士軍 黃建 單片微型計算機與接口技術(shù)電子工業(yè)出版社2周美娟 肖來勝 單片機原理及系統(tǒng)設計清華大學出版社3 黃鑫,馬善農(nóng),趙永科.基于CPLD的電子琴研究與設計J.科技廣場. 4 趙亮,侯國銳.單片機C語言編程與實例M.北京:人民郵電出版社. 5 徐新艷單片機原理、應用與實踐M北京:高等教育出版社沈陽理工大學

展開閱讀全文
溫馨提示:
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!