基于msp430的數字密碼鎖_第1頁
基于msp430的數字密碼鎖_第2頁
基于msp430的數字密碼鎖_第3頁
基于msp430的數字密碼鎖_第4頁
基于msp430的數字密碼鎖_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、基于msp430f149的數字密碼鎖摘要在日常的生活和工作中, 住宅與部門的安全防范、單位的文件檔案、財務報表以及一些個人資料的保存多以加鎖的辦法來解決。若使用傳統(tǒng)的機械式鑰匙開鎖,人們常需攜帶多把鑰匙, 使用極不方便, 且鑰匙丟失后安全性即大打折扣。在安全技術防范領域,具有防盜報警功能的電子密碼鎖逐漸代替了傳統(tǒng)的機械式密碼鎖,電子密碼鎖具有安全性高、成本低、功耗低、易操作等優(yōu)點。在本次萌芽計劃電子設計制作中,我們采用TI公司生產的msp430作為主控芯片,結合外圍的矩陣鍵盤輸入、LCD顯示、蜂鳴器報警和LED顯示等,用C語言編寫主控芯片程序,設計了一款可以數字字母混合密碼輸入,具有報警功能的

2、數字密碼鎖。關鍵詞:數字密碼鎖 msp430 報警目錄目錄2第一章 系統(tǒng)方案設計與論證3方案比較3方案設計與論證3設計框圖4第二章 主要元器件介紹4Msp430f1494LCD1602液晶顯示器7LM78058ASM1117-3.310第三章 系統(tǒng)硬件結構設計12單片機電路12矩陣鍵盤電路12復位單路13LCD顯示電路13LED顯示電路13報警電路14電源電路14第四章 系統(tǒng)軟件設計14主程序流程圖14功能按鍵軟件設計15密碼設置軟件設計16第五章 實驗分析17測試方法17測試分析18第五章 總結18附錄19附錄一 整體電路圖19附錄二 PCB封裝圖20附錄三 部分程序20第一章 系統(tǒng)方案設計

3、與論證方案比較方案一:以STC89C52單片機為電子密碼鎖系統(tǒng)核心,使用4*4矩陣鍵盤作為數據輸入方式,驅動LCD1602顯示器提示程序運行過程和開鎖的步驟,利用AT24C02芯片實現掉電存儲。方案二:以msp430f149單片機為電子密碼鎖系統(tǒng)核心,使用4*4矩陣鍵盤作為數據輸入方式,驅動LCD1602顯示器提示程序運行過程和開鎖的步驟。方案比較:msp430f149單片機性能比STC89C52單片機高,且I/O口遠多于STC89C52單片機,方便更好的利用多余的I/O口 擴充其他功能。因此本次設計選擇方案二。方案設計與論證由于單片機種類繁多,各種型號都有其一定的應用環(huán)境,因此在選用時要多加

4、比較,合理選擇,以期獲得最佳的性價比。一般來說在選取單片機時從下面幾個方面考慮:性能、存儲器、運行速度、I/O口、定時/計數器、串行接口、模擬電路功能、工作電壓、功耗、封裝形式、抗干擾性、保密性,除了以上的一些的還有一些最基本的比如:中斷源的數量和優(yōu)先級、工作溫度范圍、有沒有低電壓檢測功能、單片機內有無時鐘振蕩器、有無上電復位功能等。在開發(fā)過程中單片機還受到:開發(fā)工具、編程器、開發(fā)成本、開發(fā)人員的適應性、技術支持和服務等等因素?;谝陨弦蛩乇驹O計選用單片機msp430f149作為本設計的核心元件,利用單片機靈活的編程設計和豐富的I/O端口,及其控制的準確性,實現基本的密碼鎖功能。在單片機的外圍

5、電路外接輸入鍵盤用于密碼的輸入和一些功能的控制,外接LCD1602顯示器用于顯示作用。當用戶需要開鎖時,先輸入密碼,如果密碼輸入正確則開鎖或設置新密碼,不正確顯示密碼錯誤重新輸入密碼,當三次密碼錯誤則發(fā)出報警;當用戶需要修改密碼時,先按下鍵盤設置鍵后輸入新密碼,新密碼輸入后再次輸入新密碼,兩次輸入一致則密碼修改成功。設計框圖第二章 主要元器件介紹Msp430f149MSP430是TI公司新開發(fā)的一類具有16位總線的帶FLASH 的單片機,由于其性價比和集成度高,受到廣大技術開發(fā)人員的青睞。它采用16位的總線,外設和內存統(tǒng)一編址,尋址范圍可達64K,還可以外擴展存儲器。具有統(tǒng)一的中斷管理,具有豐

6、富的片上外圍模塊,片內有精密硬件乘法器、兩個16位定時器、一個14路的12位的模數轉換器、一個看門狗、6路P口、兩路USART通信端口、一個比較器、一個DCO內部振蕩器和兩個外部時鐘,支持8M 的時鐘。由于為FLASH型,則可以在線對單片機進行調試和下載,且JTAG口直接和FET(FLASH EMULATION TOOL)的相連,不須另外的仿真工具,方便實用,而且可以在超低功耗模式下工作,對環(huán)境和人體的輻射小,測量結果為100mw左右的功耗(電流為14mA左右),可靠性能好加強電干擾運行不受影響,適應工業(yè)級的運行環(huán)境,適合與做手柄之類的自動控制的設備。LCD1602液晶顯示器本設計采用LCD液

7、晶顯示屏顯示。其具有體積小、功耗低、界面美觀大方等優(yōu)點,這里使用YB1602液晶屏,1602顯示模塊用點陣圖形顯示字符,顯示模式分為2行16個字符。它具有16個引腳,其正面左起為第一腳,如下圖所示:第一腳GND:接地。第二腳VCC:+5V電源。第三腳VO:對比度調整端。使用時通過接一個10K的電阻來調節(jié)。第四腳RS:寄存器選擇信號線。第五腳RW:讀寫信號線。第六腳E:使能端,當E由高電平跳變?yōu)榈碗娖綍r執(zhí)行命令。第714腳:8位數據線D0D7。第十五腳BLA:背光電源正極輸入端。第十六腳BLK:背光電源負極輸入端。操作控制表操作讀狀態(tài)寫指令讀數據寫數據輸入RS=0,RW=1,E=1RS=0,RW

8、=0,D07=指令碼,E=H脈沖RS=1,RW=1,E=1RS=1,RW=0,D07=數據,E=H脈沖表3.6.1 LCD1602操作指令1602液晶模塊內部的字符發(fā)生存儲器(CGROM)已經存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯數字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。因為1602識別的是ASCII碼,試驗可以用ASCII碼直接賦值,在單片機編程中還可以用字符型常量或變量賦值,如A。1602通過D0D7的8位

9、數據端傳輸數據和指令。LM7805電源電路采用普通可調電源供電,該電源不含穩(wěn)壓器,所以在設計中需要用穩(wěn)壓器進行穩(wěn)壓,我們選用LM7805來獲得穩(wěn)定的+5V直流電壓,LM7805引腳排列和典型應用如下圖:LM7805引腳和典型應用LM7805電氣參數ASM1117-3.3本設計中msp430需采用3.3v電源供電,因此需用AMS1117-3.3將已穩(wěn)壓成5v的直流穩(wěn)壓成3.3v。AMS117-3.3 是一個正向低壓降穩(wěn)壓器,在1A電流下壓降為1.2V。AMS1117引腳圖AMS1117電氣參數第三章 系統(tǒng)硬件結構設計單片機電路以TI公司的msp430f149單片機為主控芯片,CPU電路十分簡單,

10、只需供電部分和晶振部分。單片機電路矩陣鍵盤電路4*4矩陣鍵盤電路由16個輕觸開關加上4個1k的上拉電阻構成,通過P1口接入單片機。矩陣鍵盤電路復位單路單片機在RESET端加一個大于20ms正脈沖即可實現復位,上電復位和按鈕組合的復位電路如下:復位電路在系統(tǒng)上電的瞬間,RST與電源電壓同電位,隨著電容的電壓逐漸上升,RST電位下降,于是在RST形成一個正脈沖。當人按下按鈕K17時,使電容C7通過R8迅速放電,待K17彈起后,C7再次充電,實現手動復位。LCD顯示電路本設計采用LCD1602液晶顯示屏進行顯示,可同時實現數字與字母混合密碼的顯示以及各種提示的顯示。LCD顯示電路LED顯示電路P2.

11、0接紅色LED燈,密碼錯誤時顯示;P2.4接綠色LED燈,密碼正確開鎖時顯示;P2.6接藍色LED燈,設置密碼時顯示。LED顯示電路報警電路按鍵時蜂鳴器會實時鳴叫;當密碼三次輸入錯誤時,長時間蜂蜜報警;密碼輸入正確時蜂鳴器產生提示音。報警電路電源電路本設計采用9v電池供電,先由LM7805穩(wěn)壓至5v,再由ASM1117-3.3穩(wěn)壓到3.3v給電路供電。電源電路第四章 系統(tǒng)軟件設計主程序流程圖開始接上電源,程序進行初始化設置,然后在鍵盤上輸入密碼,此系統(tǒng)進行鍵盤掃描,密碼錯誤3次出錯報警,密碼正確,選擇開鎖或修改密碼,若要修改密碼時,需要兩次確認新密碼,確認后,密碼修改成功,否則結束。開始初始化

12、次數加1輸入密碼密碼正確?返回NYY開鎖程序開鎖?N修改密碼?次數3?報警程序修改程序YNNY主程序流程圖功能按鍵軟件設計在按鍵當中,有與轉換、清除、開鎖、設置的程序相對應的按鍵。 開始鍵值=轉換?轉換程序鍵值=清除?清除程序開鎖程序鍵值=開鎖?鍵值=設置?設置程序返回功能按鍵程序軟件流程圖密碼設置軟件設計開始按下設置鍵,輸入新密碼后,再次輸入新密碼,如果兩次輸入一樣,則輸入成功。如果兩次輸入的新密碼不一樣,則修改密碼失敗。開始按下設置鍵輸入新密碼再次輸入兩次輸入一致?設置失敗設置成功密碼設置軟件流程圖第五章 實驗分析測試方法按下電源開關,屏幕顯示”PASSWORD”,輸入10位密碼,屏幕實時

13、顯示密碼,并伴有實時提示音,若密碼錯誤,屏幕顯示”ERROR“,隨后顯示”PASSWORD”,再次輸入密碼,密碼三次輸入錯誤,清屏,亮紅燈并伴有長時間蜂鳴。若輸入密碼正確,蜂鳴器產生提示音,屏幕顯示”A_unlock B_set”,若按下開鎖鍵,亮綠燈,顯示”UNLOCK”;若按下設置鍵,亮黃燈,顯示”NEW CODE”,輸入10位新密碼,顯示”INPUT AGAIN”,再次輸入新密碼,若兩次新密碼輸入一致,顯示”SUCCEED”,若兩次新密碼輸入不一致,則顯示”FAILE”。輸入密碼時,可通過清除鍵清除已輸入密碼,可通過轉換鍵實現數字與字母和字母大小寫之間的轉換。測試分析測試結果與我們預想的

14、一致,但由于程序中使用了go-to語句,使得輸入不是很穩(wěn)定,需要一定的反應時間。第五章 總結總的來說,這次“萌芽計劃”對我們三個都是一個挑戰(zhàn),因為我們三人的基礎都不一樣,有的基本為零,而有的卻早已參加了多次科創(chuàng)活動。對于萌芽而言,我們三個無論是誰都無法獨自完成。這更挑戰(zhàn)了我們的合作能力。在技術上,我們基礎好的帶動基礎差的,盡可能的讓他學會東西,基礎好的也不斷提升自己,用更高端的技術來實現功能。通過這次競賽,我們三個都提高了很多,這次的萌芽計劃也為我們日后的科創(chuàng)道路打下了厚實的基礎。當然,我們也有很多不足之處,比如說粗心大意,導致我們浪費了很多工程和時間,還有因為懶惰,是我們沒有做到盡善盡美。但

15、有了這次經歷,我想我們三個在以后會做的越來越好。附錄附錄一 整體電路圖附錄二 PCB封裝圖附錄三 部分程序#include #include Keypad.h#include cry1602.h#include 子程序集.h/引用外部變量的聲明 extern unsigned char key_val; extern unsigned char key_Flag;extern unsigned char BACK;/宏定義(也許不這么叫,看二級)typedef unsigned char uchar;typedef unsigned int uint;uchar Code_C10 = 0;uc

16、har Code_D10 = 0,1,2,3,4,5,a,a,a,a;/這是密碼哦/*主函數*/void main(void) uchar Tishi = PASSWORD:; uchar PROX = XINXIN & LULU &; uchar PROX_1 = JUNJUN.; uchar Fin = THIEF.THIEF.; WDTCTL = WDTPW + WDTHOLD; /關閉看門狗 LcdReset(); /初始化LCD Init_Keypad(); /初始化鍵盤端口 P6DIR |= BIT7; /蜂鳴器P6.7 P6OUT |= BIT7; P2DIR |= 0xff;

17、/P2.0紅燈-用于報警以及按鍵;P2.4綠燈-用于解鎖、開鎖;P2.6藍燈-用于設置 P2OUT |= 0xff; loop:DispNChar(0,0,15,PROX); DispNChar(2,1,12,PROX_1); /嘿嘿 Delay400ms(); LcdWriteCommand(0x01,1); DispNChar(3,0,9,Tishi); /顯示提示文字 Code_CIN_1(); /子程序1 向數組C輸入十位數字字母組合(最開始輸入密碼時) Comp(); /子程序2 逐個比較數組C和數組D的元素 Delay200ms();/用于顯示延遲,否則看不到最后一位 Unlock

18、_j(); /對比較結果進行分析判斷,然后運行 if(BACK = 3) /密碼輸入錯誤小于三次再次輸入 goto loop; /程序有些不穩(wěn),需要慢慢按(GOTO的弊端) else LcdWriteCommand(0x01,1); /大于三次后報警 DispNChar(0,0,16,Fin); BACK = 0; /計數清零 Buz_E();/報警; Delay400ms(); Delay400ms(); LcdWriteCommand(0x08,1); /之后會白屏,嘿嘿 /*函數名稱:向C數組中輸入十位密碼 輸入密碼階段*返回值:暫無*功能:*/void Code_CIN_1(void)

19、 uchar Clear_1 = PASSWORD:; uint i,p,ref = 1; uchar fact,key; for(i = 0, p = 0; i = 9;) /十位密碼 Key_Event(); if(key_Flag = 1) key_Flag = 0; fact = key_val;/這樣會比較好 switch(fact) /邏輯1-10用于實際0-9(需要key的轉換) 邏輯4為開鎖鍵,只有密碼正確有效,其余無效 case 1: Buz_O();/按鍵聲 if(ref = 1) /關系著數字與字母的轉換(字母包含大小寫)1為數字,2為小寫,三為大寫 key = 1;Di

20、sp1Char(3+i,1,0x30+key);/顯示對應的是ACSSI碼 Code_Cp = key; i+;p+; else if(ref = 2) key = 0x31;Disp1Char(3+i,1,0x30+key); Code_Cp = 0x30+key; /比較的時候是16進制的對應碼 i+;p+; else if(ref = 3) key = 0x11;Disp1Char(3+i,1,0x30+key); Code_Cp = 0x30+key; i+;p+; break; case 2: Buz_O(); if(ref = 1) key = 2;Disp1Char(3+i,1,

21、0x30+key); Code_Cp = key; i+;p+; else if(ref = 2) key = 0x32;Disp1Char(3+i,1,0x30+key); Code_Cp = 0x30+key; i+;p+; else if(ref = 3) key = 0x12;Disp1Char(3+i,1,0x30+key); Code_Cp = 0x30+key; i+;p+; break; case 3: Buz_O(); if(ref = 1) key = 3;Disp1Char(3+i,1,0x30+key); Code_Cp = key; i+;p+; else if(re

22、f = 2) key = 0x33;Disp1Char(3+i,1,0x30+key); Code_Cp = 0x30+key; i+;p+; else if(ref = 3) key = 0x13;Disp1Char(3+i,1,0x30+key); Code_Cp = 0x30+key; i+;p+; break; case 5: Buz_O(); if(ref = 1) key = 4;Disp1Char(3+i,1,0x30+key); Code_Cp = key; i+;p+; else if(ref = 2) key = 0x34;Disp1Char(3+i,1,0x30+key)

23、; Code_Cp = 0x30+key; i+;p+; else if(ref = 3) key = 0x14;Disp1Char(3+i,1,0x30+key); Code_Cp = 0x30+key; i+;p+; break; case 6: Buz_O(); if(ref = 1) key = 5;Disp1Char(3+i,1,0x30+key); Code_Cp = key; i+;p+; else if(ref = 2) key = 0x35;Disp1Char(3+i,1,0x30+key); Code_Cp = 0x30+key; i+;p+; else if(ref =

24、3) key = 0x15;Disp1Char(3+i,1,0x30+key); Code_Cp = 0x30+key; i+;p+; break; case 7: Buz_O(); if(ref = 1) key = 6;Disp1Char(3+i,1,0x30+key); Code_Cp = key; i+;p+; else if(ref = 2) key = 0x41;Disp1Char(3+i,1,0x30+key); Code_Cp = 0x30+key; i+;p+; else if(ref = 3) key = 0x21;Disp1Char(3+i,1,0x30+key); Co

25、de_Cp = 0x30+key; i+;p+; break; case 9: Buz_O(); if(ref = 1) key = 7;Disp1Char(3+i,1,0x30+key); Code_Cp = key; i+;p+; else if(ref = 2) key = 0x42;Disp1Char(3+i,1,0x30+key); Code_Cp = 0x30+key; i+;p+; else if(ref = 3) key = 0x22;Disp1Char(3+i,1,0x30+key); Code_Cp = 0x30+key; i+;p+; break; case 10: Bu

26、z_O(); if(ref = 1) key = 8;Disp1Char(3+i,1,0x30+key); Code_Cp = key; i+;p+; else if(ref = 2) key = 0x43;Disp1Char(3+i,1,0x30+key); Code_Cp = 0x30+key; i+;p+; else if(ref = 3) key = 0x23;Disp1Char(3+i,1,0x30+key); Code_Cp = 0x30+key; i+;p+; break; case 11: Buz_O(); if(ref = 1) key = 9;Disp1Char(3+i,1

27、,0x30+key); Code_Cp = key; i+;p+; else if(ref = 2) key = 0x44;Disp1Char(3+i,1,0x30+key); Code_Cp = 0x30+key; i+;p+; else if(ref = 3) key = 0x24;Disp1Char(3+i,1,0x30+key); Code_Cp = 0x30+key; i+;p+; break; case 14: Buz_O(); if(ref = 1) key = 0;Disp1Char(3+i,1,0x30+key); Code_Cp = key; i+;p+; else if(

28、ref = 2) key = 0x45;Disp1Char(3+i,1,0x30+key); Code_Cp = 0x30+key; i+;p+; else if(ref = 3) key = 0x25;Disp1Char(3+i,1,0x30+key); Code_Cp = 0x30+key; i+;p+; break; case 4:break;/這兩個鍵需正確后再用 case 8:break; case 12: if(i 3) ref = 1; break; case 15: Buz_O(); /清除程序 LcdWriteCommand(0x01,1); DispNChar(3,0,9,Clear_1); for(i = 0,p = 0; p = 9;p+) Code_Cp = 0; /同時數組也得清 break; ca

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論