PIC單片機原理及應(yīng)用課程設(shè)計報告電子密碼鎖_第1頁
PIC單片機原理及應(yīng)用課程設(shè)計報告電子密碼鎖_第2頁
PIC單片機原理及應(yīng)用課程設(shè)計報告電子密碼鎖_第3頁
PIC單片機原理及應(yīng)用課程設(shè)計報告電子密碼鎖_第4頁
PIC單片機原理及應(yīng)用課程設(shè)計報告電子密碼鎖_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、pic單片機原理及應(yīng)用課程設(shè)計報告電子密碼鎖專業(yè):電子信息工程姓名:哈哈哈 班級: (1) 學(xué)號:000000000 2010.12.29【摘要】:隨著生活水平的提高,人們也越來越重視個人的隱私及財產(chǎn)安全,要設(shè)計主要基于pic單片機系統(tǒng)、鍵盤、lcd。本系統(tǒng)可完成開鎖、修改密碼、掉電后密碼受保護以及三次輸入密碼錯誤報警功能?!娟P(guān)鍵詞】:電子密碼鎖、鍵盤、lcd?!灸夸洝浚?第一章:主要元器件介紹第一節(jié):pic介紹 1第二節(jié):lcd1602介紹2第二節(jié):矩陣鍵盤介紹7 第二章:電子密碼鎖的設(shè)計 第一節(jié):密碼鎖原理圖及工作原理8第二節(jié):密碼鎖程序9第三章:設(shè)計心得及參考文獻(xiàn)17第一章 主要元器件介

2、紹第一節(jié)、 pic單片機單片機是一塊芯片上集成了中央處理器單元、數(shù)據(jù)存儲器、程序存儲器、輸入/輸出和定時器/計數(shù)器等部件的一臺小型計算機。隨著芯片集成度的提高,單片機的功能得以迅速的擴充,特別是pic單片機,增加了許多強大的外圍模塊,從而給用戶帶來了極大的便利。pic單片機有如下特點:1、哈佛總線結(jié)構(gòu);2、risc技術(shù);3、指令特色;4、功耗低;5、驅(qū)動能力強;6、同步串行數(shù)據(jù)傳送方式;7、應(yīng)用界面友好、開發(fā)方便;8、程序存儲器版本齊全。1-1 pic16f877a框圖1-2引腳示意圖: 1-3 特殊功能寄存器 第二節(jié)、lcd1602第二節(jié)、 矩陣鍵盤 1.矩陣式鍵盤的結(jié)構(gòu)與工作原理在鍵盤中按

3、鍵數(shù)量較多時,為了減少i/o口的占用,通常將按鍵排列成矩陣形式,如圖所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口就可以構(gòu)成4*4=16個按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比較多時,采用矩陣法來做鍵盤是合理的。 矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識別也要復(fù)雜一些,上圖中,列線通過電阻接正電源,并將行線所接的單片機的i/o口作為輸出端,而列線所接的i/o口則作為輸入。這樣,當(dāng)按鍵沒有按下時,所有的輸出端都

4、是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。第二章、電子密碼鎖的設(shè)計第一節(jié)、原理圖及工作原理一、原理圖二、原理框圖單片機控制系統(tǒng)lcd顯示蜂鳴器鍵盤三、設(shè)計原理用戶根據(jù)屏幕提示操作,單片機通過鍵盤掃描,檢測輸入密碼是否正確,如果正確則進(jìn)入系統(tǒng),進(jìn)行下一步操作。進(jìn)入系統(tǒng)后,剛繼續(xù)檢測用戶輸入的功能號,根據(jù)功能號判斷下一步要執(zhí)行的程序,否則一直在功能界面等待用戶指令。其中在功能界面中,按下a則為退出功能界面,下次要再進(jìn)入則須再輸入正確密碼,按下b則可重設(shè)密碼,在這里須兩次輸入相同新密碼后才可設(shè)定成功,設(shè)定成功后退至功

5、能界面,繼續(xù)等待用戶指令。第二節(jié)、 電子密碼所程序一、 程序流程圖初始化調(diào)用lcd顯示子程序,顯示“press d to start”調(diào)用鍵盤掃程序檢測d是否被按下清屏調(diào)用lcd程序,清屏,并顯示“enter password”調(diào)用輸入六位密碼子程序 調(diào)用密碼檢測程序檢測密碼是否正確調(diào)用顯示程序,清屏,顯示“a:exit b:reset num:function”執(zhí)行讀按鍵子程序執(zhí)行退出程序執(zhí)行密碼重設(shè)程序執(zhí)行其他程序輸入錯誤次數(shù)加1,并判斷是否達(dá)到3次執(zhí)行報警程序 是 二、 程序#include#include#includestring.h_config(0x3b31);#define u

6、int unsigned int#define uchar unsigned charchar inword6;char passwd6;char newword6;void delay(uint t);void init();void sound200ms(unsigned char fre_repeat,unsigned char s_max,unsigned char s_min);void sounddelay(unsigned char delay_count);/*/#define keybord portbchar keyscan();void keyinit();char re

7、adkey();#define line1 rb0#define line2 rb1#define line3 rb2#define line4 rb3/*/#define rs ra5#define rw ra4#define e ra3char table117;void lcdportinit(); void lcd_init(); void write_data(uint data); void write_com(uint com); void writelcd(uint x,uint y,char *pt);void lcdpoint1();void lcdpoint2();voi

8、d lcdpoint3();void lcdpoint4();void lcdpoint5();void lcdclr();int cn=0;char key=0;/*掃描*/void ipassword();/輸入密碼int testword();/測試/*/void reset();/*主程序*/void main()int count=0;init();while(1)lcdclr(); /清屏lcdpoint1();if(readkey()=d)lcdclr(); sprintf(table1,enter password:);/顯示enter password:writelcd(0,

9、0,table1);ipassword();if(testword()lcdclr();/清屏while(1)lcdpoint3();/顯示操作提示readkey();if(key=b)reset();/重設(shè)密碼lcdclr();/清屏continue;if(key=a) lcdclr();break;/退出系統(tǒng)if(key=1) music();else count+;while(count2) 報警程序sound200ms(4,0x93,0x47);/*按鍵程序*/void keyinit()trisb=0x0f;/高四位當(dāng)輸入,低四位當(dāng)輸出char keyscan()char temp1

10、=0;keybord= 0x10;asm(nop); if( !line1 ) return temp1=1; if( !line2 ) return temp1=4; if( !line3 ) return temp1=7 ; if( !line4 ) return temp1=*; keybord= 0x20;asm(nop); if( !line1 ) return temp1=2; if( !line2 ) return temp1=5; if( !line3 ) return temp1=8; if( !line4 ) return temp1=0; keybord= 0x40;as

11、m(nop); if( !line1 ) return temp1=3; if( !line2 ) return temp1=6; if( !line3 ) return temp1=9; if( !line4 ) return temp1=#; keybord= 0x80;asm(nop); if( !line1 ) return temp1=a;/返回 if( !line2 ) return temp1=b; if( !line3 ) return temp1=c;/重設(shè) if( !line4 ) return temp1=d;/enter鍵 return temp1 ;char read

12、key()/char temp=0; while(!keyscan();temp=keyscan();delay(10);if(keyscan()=temp)temp=keyscan();rc0=1; else temp=0;while(keyscan();delay(10);if(keyscan()=0)rc0=0;key=temp;return temp;/*輸入密碼*/void ipassword()uint i;for(i=0;i6;i+)inwordi=readkey();sprintf(table1,*); writelcd(i,1,table1);while(readkey()!

13、=#);/*驗證密碼*/int testword()char i=0,temp2=1;for(i=0;i6;i+)/從eeprom讀密碼passwdi=eeprom_read(i);for(i=0;i6;i+)/和eeprom密碼進(jìn)行比較if(passwdi!=inwordi) return temp2=0;return temp2;/*重設(shè)密碼*/void reset()int k;re:lcdclr();sprintf(table1,enter new word:);/第一次輸入新密碼writelcd(0,0,table1);for(k=0;k6;k+)inwordk=readkey();

14、sprintf(table1,%d,inwordk);writelcd(k,1,table1);while(readkey()!=#);lcdclr();sprintf(table1,enter again:);/再次輸入新密碼writelcd(0,0,table1);for(k=0;k6;k+)newwordk=readkey();sprintf(table1,%d,newwordk);writelcd(k,1,table1);while(readkey()!=#);for(k=0;k6;k+) if(newwordk!=inwordk) goto re;for(k=0;k0;t-)for(

15、b=110;b0;b-);/*報警*/void sounddelay(unsigned char delay_count)unsigned char i; for (i = delay_count;i 0;i-); void sound200ms(unsigned char fre_repeat,unsigned char s_max,unsigned char s_min)unsigned char i, j;for (i = s_max - s_min;i 0;i-) for (j = fre_repeat;j 0;j-) rc0 = 1; sounddelay(s_min + i); rc0 = 0; sounddelay(s_min + i); /*初始化*/void init()keyinit();lcdportinit(

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論