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

下載本文檔

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

文檔簡介

1、- 1 - 單單 片片 機機 課課 程程 設設 計計 報報 告告 課題名稱:基于單片機的電子密碼鎖 學 校: 系 別:機械電子工程系 專 業(yè):應用電子技術(shù) 姓 名: 學 號: 指導教師: - 2 - 目錄目錄 一一 設計總說明設計總說明.- 3 - 二二 電子密碼鎖的系統(tǒng)設計電子密碼鎖的系統(tǒng)設計.- 4 - 2.12.1 設計方案論證與比較設計方案論證與比較.- 4 - 2.22.2 電子密碼鎖總體設計電子密碼鎖總體設計.- 4 - 三三 硬件電路設計硬件電路設計.- 5 - 3.13.1 單片機單片機 at89c51at89c51 簡介簡介.- 5 - 3.23.2 4444 矩陣鍵盤矩陣鍵

2、盤 .- 5 - 3.33.3 震蕩電路震蕩電路 .- 6 - 3.43.4 外部存儲器電路外部存儲器電路 .- 6 - 3.53.5 1602lcd1602lcd 液晶顯示液晶顯示 .- 7 - 3.63.6 ledled 及蜂鳴器及蜂鳴器 .- 7 - 3.73.7 完整電路圖及元器件清單完整電路圖及元器件清單.- 8 - 四四 軟件程序設計軟件程序設計.- 9 - 4.14.1 程序設計流程圖程序設計流程圖.- 9 - 4.24.2 電子密碼鎖源程序電子密碼鎖源程序 .- 10 - 五五 仿真調(diào)試仿真調(diào)試.- 15 - 5.15.1 使用使用 k keileil生成生成hexhex文件文

3、件.- 15 - 5.25.2 使用使用 p proteusroteus仿真過程仿真過程.- 16 - 六六 總結(jié)與體會總結(jié)與體會.- 19 - 七七 參考文獻及參考文獻及 pcbpcb 封裝圖封裝圖.- 19 - 7.17.1 參考文獻參考文獻 .- 19 - 7.27.2 pcbpcb 封裝圖封裝圖 .- 20 - - 3 - 一 設計總說明 在日常的生活和工作中, 住宅與部門的安全防范、單位的文件檔案、財務報表以及一 些個人資料的保存多以加鎖的辦法來解決。若使用傳統(tǒng)的機械式鑰匙開鎖,人們常需攜帶 多把鑰匙, 使用極不方便, 且鑰匙丟失后安全性即大打折扣。隨著科學技術(shù)的不斷發(fā)展, 人們對日

4、常生活中的安全保險器件的要求越來越高。為滿足人們對鎖的使用要求,增加其 安全性,用密碼代替鑰匙的密碼鎖應運而生。密碼鎖具有安全性高、成本低、功耗低、易 操作等優(yōu)點。 在安全技術(shù)防范領(lǐng)域,具有防盜報警功能的電子密碼鎖逐漸代替?zhèn)鹘y(tǒng)的機械式密碼鎖, 克服了機械式密碼鎖密碼量少、安全性能差的缺點,使密碼鎖無論在技術(shù)上還是在性能上 都大大提高一步。隨著大規(guī)模集成電路技術(shù)的發(fā)展,特別是單片機的問世,出現(xiàn)了帶微處 理器的智能密碼鎖,它除具有電子密碼鎖的功能外,還引入了智能化管理、專家分析系統(tǒng) 等功能,從而使密碼鎖具有很高的安全性、可靠性,應用日益廣泛。 基于以上思路,本次設計使用 atmel 公司的 at8

5、9c51 實現(xiàn)一基于單片機的電子密碼鎖 的設計,其主要具有如下功能: (1)設置 6 位密碼,密碼通過鍵盤輸入,按鍵確實按下,發(fā)出提示音。若密碼正確, 則將鎖打開。 (2)密碼可以由用戶自己修改設定(只支持 6 位密碼) ,鎖打開后才能修改密碼。 (3)斷電后密碼可保存。 電子密碼鎖的設計主要由三部分組成:44 矩陣鍵盤接口電路、密碼鎖的控制電路、 密碼存儲電路、輸出顯示電路。另外系統(tǒng)還有 led 提示燈,蜂鳴器等。 密碼鎖設計的關(guān)鍵問題是實現(xiàn)密碼的輸入、清除、更改、開鎖等功能: (1)密碼輸入功能:按下一個數(shù)字鍵,依次輸入密碼。 (2)密碼清除功能:當按下清除鍵時,清除前面輸入的所有值,并清

6、除所有顯示。 (3)密碼更改功能:將輸入的值作為新的密碼并保存。 (4)開鎖功能:當按下開鎖鍵,系統(tǒng)將輸入與密碼進行檢查核對,如果正確鎖打 開,否則不打開。 主要的設計實施過程:首先,選用 atmel 公司的單片機 at89c51,以及選購其他電子 元器件。第二步,使用 proteus pro7.7 設計硬件電路原理圖,并設計 pcb 圖完成布線。第 三步,使用 keil uvision3 軟件編寫單片機的 c 語言程序、仿真、軟件調(diào)試。第四部,使 用 proteus 軟件進行模擬軟、硬件調(diào)試,完成本次課程設計。 - 4 - 摘要(關(guān)鍵詞):電子密碼鎖 at89c51 44 矩陣鍵盤 密碼輸入

7、與修改 二 電子密碼鎖的系統(tǒng)設計 2.12.1 設計方案論證與比較設計方案論證與比較 方案一:卡片式電子密碼鎖??ㄆ诫娮用艽a鎖,它利用光電耦合的方式,將密碼信息 從打孔的形式做在卡片上 ,只要將卡片插入鎖內(nèi),就能將鎖打開。如果卡片上密碼信息不 對,密碼鎖發(fā)出報警聲。這種方法是需要卡片做為鑰匙,容易被盜和被仿制,安全性不高。 方案二:磁卡式電子密碼鎖,具有功能強、故障率低、可靠性高和工作壽命長等優(yōu)點, 但這種方法的缺點是磁卡容易消磁,對用戶造成不必要的麻煩。 方案三:用at89c51設計的多功能密碼鎖。以單片機作為微控制器,可以實現(xiàn)基于以上 優(yōu)點,本系統(tǒng)選用該方案作為設計方案。按鍵有效指示、輸

8、入錯誤、控制開鎖、錯誤報警、 密碼修改等功能,工作穩(wěn)定可靠,保密性高,實用性強。 2.22.2電子密碼鎖總體設計電子密碼鎖總體設計 51 單片機 44 鍵盤 lcd 外部存儲器 揚聲器 晶振電路 發(fā)光二極管 等 圖 2-1 系統(tǒng)原理框圖 - 5 - 三 硬件電路設計 3.13.1 單片機單片機 at89c51at89c51 簡介簡介 at89c51 是美國 atmel 公司生產(chǎn)的低電壓,高性能 cmos 8 位單片機,片內(nèi)含 4k bytes 的可反復擦寫的只讀程序存儲器(eprom)和 128bytes 的隨機存取數(shù)據(jù)序存器(ram) ,器 件采用 atmel 公司的高密度/非易失性存儲技術(shù)

9、生產(chǎn),兼容標準 mcs-51 指令系統(tǒng),片內(nèi)置 通用 8 位中央處理器(cpu)和 flash 存儲單元,at89c51 單片機為許多嵌入式控制系統(tǒng)提 供了一種靈活行高且價廉的方案。 主要特性: 與 mcs-51 兼容 4k 字節(jié)可編程 flash 存儲器(壽命:1000 寫/ 擦循環(huán)) 全靜態(tài)工作:0hz-24khz 三級程序存儲器保密鎖定 128*8 位內(nèi)部 ram 32 條可編程 i/o 線 兩個 16 位定時器/計數(shù)器 5 個中斷源 可編程串行通道 低功耗的閑置和掉電模式 片內(nèi)振蕩器和時鐘電路 圖 3-1 at89c51 引腳 圖 3.23.2 4444 矩陣鍵盤矩陣鍵盤 如圖 3-2

10、 所示,本系統(tǒng)采用 44 矩陣鍵盤,16 個按鍵分為輸入數(shù)字鍵: 0、1、2、3、4、5、6、7、8、9;功能鍵確定、上鎖、修改密碼、保存密碼、clr。 - 6 - 圖 圖圖 3-2 44 矩陣鍵盤 3.33.3 震蕩電路震蕩電路 c1 30pf c2 30pf x1 圖 3-3 振蕩電路 本設計晶振選擇頻率為 12mhz,電容選擇 30pf 如圖 3-3。 經(jīng)計算得單片機工作機器周期為: 12(112m)=1us。 - 7 - 3.43.4 外部存儲器電路外部存儲器電路 為了保證用戶密碼在系統(tǒng)掉電時不會丟失,本系統(tǒng)采用 at24c04 的 eeprom 存儲器來存 儲用戶密碼。電擦除可編程只

11、讀存儲器 eeprom(electrically erasable prom)是近年來開 始被廣泛使用的一種只讀存儲器,它能在應用系統(tǒng)中進行在線改寫,并能在掉電的情況下 保存數(shù)據(jù)而不需保證電源,因而完全符合系統(tǒng)的設計要求。雖然 eeprom 的擦除時間較長, 但這不影響整個系統(tǒng)的功能。在本系統(tǒng),用戶設定的密碼就存于 eeprom at24c04 中。 at24c04 與單片機之間采用 i2c 總線通訊方式。 圖 3-4 24c04a 外部存儲器 3.53.5 1602lcd1602lcd 液晶顯示液晶顯示 圖 3-5 lcd 液晶顯示 主要技術(shù)參數(shù) 顯示容量芯片工作電壓工作電流最佳工作電壓字符

12、尺寸 - 8 - 162 個字符4.55.5v2.0ma(5.0v)5.0v3.954.35mm 3.63.6 ledled 及蜂鳴器及蜂鳴器 圖 3-6 led 開鎖提示 如圖,led 模擬鎖的開關(guān)狀態(tài)。若 led 亮,表示密碼正確,開鎖。 圖 3-7 蜂鳴器 按鍵按下,密碼鎖打開等動作實現(xiàn)時發(fā)出提示音。 3.73.7 完整電路圖及元器件清單完整電路圖及元器件清單 - 9 - 開始 輸入密碼 正確否? 開鎖 判斷按鍵 上鎖鍵 修改密碼鍵 上鎖 結(jié)束 輸入新密碼 修改密碼 yes no 圖 3-8 仿真電路圖 元器件規(guī)格/型號數(shù)量 單片機at89c511 存儲器24c04a1 lcdlm016

13、l1 晶振crystal1 瓷片電容cap2 電解電容cap-elec 電阻res2 電阻排respack-81 發(fā)光二級管led-yellow1 蜂鳴器sounder1 按鈕button16 表 3-9 元件清單 四 軟件程序設計 程序主要完成:開始時 lcd 顯示“your password”提示輸入密碼,輸入密碼后按下確 認鍵,系統(tǒng)會將所輸入與系統(tǒng)密碼進行比對。若輸入密碼正確則顯示“unlock ok”開鎖, 然后可以選擇上鎖或者修改密碼,如果密碼錯誤則顯示“error” 。開鎖后,按下上鎖鍵, 系統(tǒng)上鎖并返回,選擇修改密碼則可以對系統(tǒng)進行修改密碼操作。 4.14.1 程序設計流程圖程序

14、設計流程圖 - 10 - 圖 4-1 程序設計流程圖 4.24.2 電子密碼鎖源程序電子密碼鎖源程序 /-main.c- /名稱:電子密碼鎖 /- / / 當輸入 0-9 中的數(shù)字時可以輸入密碼,不超過 6 位,輸入完成后按下 a / 鍵開鎖,密碼正確時 led 點亮,液晶屏顯示開鎖成功。 / 其他鍵功能是:b 上鎖 c 重新輸入密碼 d 保存新密碼 e 清除。 / 重設密碼時要求先輸入正確的密碼成功開鎖。 /- #include #include #include #define uchar unsigned char #define uint unsigned int #define de

15、lay4us(); /上次按鍵和當前按鍵序號,該矩陣中序號范圍為 0-15,16 表示無按鍵 uchar pre_keyno = 16, keyno = 16; uchar code title_text = your password.;/標題字符串 uchar dsy_buffer10 = ;/顯示緩沖 uchar userpassword10 = ;/用戶輸入的密碼 void lcd_init();/液晶初始化 void display_string(uchar * str, uchar lineno);/在液晶指定行顯示字符串 void iic_24c04_init();/iic 初始

16、化 - 11 - void beep();/蜂鳴器 uchar recstring (uchar slave,uchar subaddr,uchar *buffer,uchar n);/從 iic 讀取 數(shù)據(jù) uchar sendstring (uchar slave,uchar subaddr,uchar *buffer,uchar n);/向 iic 寫入 數(shù)據(jù) uchar keys_scan();/鍵盤掃描,返回鍵盤號 0-15 sbit led_open =p27;/開鎖亮燈 sbit beep =p37;/蜂鳴器 /- / 延時 /- void delayms(uint x) uch

17、ar i; while (x-) for (i = 0;i 120; i+); /- / 蜂鳴器子程序 /- void beep() uchar i; for (i = 0;i 100; i+) delayms(1); beep = beep; beep=0; /- / 清除密碼 /- void clear_password() userpassword0 = 0; dsy_buffer0 = 0; /- / 主程序 /- void main() uchar i = 0; uchar iic_password10; uchar is_valid_user = 0; p0 = 0 xff; p1

18、 = 0 xff; p2 = 0 xff; tmod = 0 x02; /t0 設置為 8 位自動重裝模式 th0 = 175; tl0 = 175; tr0 = 1; /啟動 t0 delayms(10); lcd_init(); /初始化 lcd - 12 - iic_24c04_init(); /初始化 24c04 display_string(title_text,0 x00); /在第 1 行顯示標題 recstring(0 xa0, 0 , iic_password, 6); iic_password6 = 0; while(1) p1 = 0 xf0; if(p1 != 0 xf

19、0) keyno = keys_scan(); /掃描鍵盤獲取鍵序號 keyno switch ( keyno ) case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: if ( i= 5 ) /密碼限制在 6 位以內(nèi) /如果 i 為 0 則執(zhí)行一次清屏 if (i =0) display_string( ,0 x40); userpasswordi = keyno + 0; userpasswordi+1 = 0; dsy_bufferi = *; dsy_bufferi+1 = 0;

20、display_string(dsy_buffer,0 x40); i+; break; case 10: /按 a 鍵開鎖 if (strcmp(userpassword,iic_password) = 0) led_open = 0; /點亮 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

21、; break; case 11: /按 b 鍵上鎖 led_open =1; clear_password(); display_string(title_text,0 x00); - 13 - display_string( ,0 x40); i = 0; is_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)

22、; display_string( ,0 x40); break; case 13: /按 d 鍵保存新密碼 if ( !is_valid_user ) display_string(no rights !,0 x40); else sendstring(0 xa0, 0 , userpassword, 6); /重新讀入剛寫的密碼 recstring(0 xa0, 0 , iic_password, 6); iic_password6 = 0; i = 0; display_string(title_text,0 x00); display_string(password saved! ,0

23、 x40); break; case 14: /按 e 鍵消除所有輸入 i = 0; clear_password(); display_string( ,0 x40); beep(); delayms(100); p1= 0 xf0; while (p1 != 0 xf0); /如果有鍵未釋放則等待 while (p1 = 0 xf0); /如果沒有再次按下按鍵則等待 /- 24c04.c - / 24c04 iic 讀/寫程序 /- sbit scl = p32;/串行時鐘 sbit sda = p33;/串行數(shù)據(jù) /- / 起始位 /- void start() - 14 - sda =

24、 1; scl = 1; delay4us(); sda = 0; delay4us(); scl = 0; /- / 停止位 /- void stop() sda = 0; scl = 1; delay4us(); sda = 1; delay4us(); scl = 0; /- / iic 總線初始化 /- void ack() sda = 0; scl = 1; delay4us(); scl = 0; sda =1; /- / 發(fā)送非應答信號 /- void no_ack() sda = 1; scl =1; delay4us(); scl = 0; sda = 0; /- / 從芯片

25、讀取 1 字節(jié) /- uchar recbyte() uchar i,rd; rd = 0 x00; sda = 1;/置數(shù)據(jù)線為輸入方式 for(i = 0;i 8; i+) scl = 1; rd = 1; rd|=sda; delay4us();scl = 0; delay4us(); scl = 0; - 15 - delay4us(); return rd; /- / 向芯片發(fā)送 1 字節(jié) /- uchar sendbyte(uchar wd) uchar i; bit ack0; for(i = 0;i 8;i+)/循環(huán)移入 8 位 sda = (bit)(wd _nop_();

26、_nop_(); scl = 1; delay4us(); scl = 0 ;wd = 1; delay4us(); sda = 1;/釋放總線并準備讀取應答 scl = 1; delay4us(); ack0 = !sda;/0 表示無應答 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

27、 (!sendbyte(subaddr) return 0;/器件子地址 start(); if (!sendbyte(slave + 1) return 0; /器件地址,讀操作 for (i = 0; i 4 0 x0f; /對 0-3 行分別附加起始值 0,4,8,12 switch (tmp) case 1: keyno += 0; break; case 2: keyno += 4; break; case 4: keyno += 8; break; case 8: keyno += 12; return keyno; 五 仿真調(diào)試 5.15.1 使用使用 keilkeil 生成生成

28、 hexhex 文件文件 將上述代碼經(jīng) keil 生成 hex 文件以便 proteus 仿真。keil 界面如下圖: 圖 5-1 keil 的使用 5.25.2 使用使用 proteusproteus 仿真過程仿真過程 - 17 - 使用 proteus 繪制原理圖,然后將上一步 keil 生成的 hex 程序文件載入到單片機中, 點擊運行,過程大致如下: 1.初始界面:lcd 顯示“your password.”,提示輸入密碼,如下圖: 圖 5-2 初始界面 2.密碼輸入: 輸入密碼,按確定鍵,如果正確,顯示“unlock ok!”并解鎖。 圖 5-3 密碼正確 圖 5-4 燈亮開鎖 輸入密碼,按確定鍵,如果錯誤,則顯示“error!”,不解鎖。 - 18 - 圖 5-5 密碼錯誤 圖 5-6 鎖未開 3.密碼修改及保存: 在密碼輸入正確,鎖打開的情況下,按“修改密碼”鍵,進入密碼修改界面: 圖 5-7 輸入新密碼 - 19 - 輸入新密碼后,按“保存密碼”鍵,保存新密碼: 圖 5-8 保存密碼 六 總結(jié)與體會 通過

溫馨提示

  • 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

提交評論