微機原理課題設(shè)計實驗報告之矩陣式鍵盤數(shù)字密碼鎖_第1頁
微機原理課題設(shè)計實驗報告之矩陣式鍵盤數(shù)字密碼鎖_第2頁
微機原理課題設(shè)計實驗報告之矩陣式鍵盤數(shù)字密碼鎖_第3頁
微機原理課題設(shè)計實驗報告之矩陣式鍵盤數(shù)字密碼鎖_第4頁
微機原理課題設(shè)計實驗報告之矩陣式鍵盤數(shù)字密碼鎖_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、微機系統(tǒng)與應(yīng)用課程設(shè)計報告課程設(shè)計題目成績矩陣式鍵盤數(shù)字密碼鎖設(shè)計評 語:教 師:年 月 日班 級: 031013 學(xué) 號: 03101305 姓 名: 林佳福 實驗地點: E樓區(qū)312 實驗時間: 2013.3.12-3.17 矩陣式鍵盤數(shù)字密碼鎖設(shè)計 一 . 實驗?zāi)康?. 掌握微機系統(tǒng)總線與各芯片管腳連接方法,提高接口擴展硬件電路的連接能力。2. 初步掌握鍵盤掃描,密碼修改和計時報警程序的編寫方法。3. 掌握通過矩陣式鍵盤掃描實現(xiàn)密碼鎖功能的設(shè)計思路和實現(xiàn)方法。二 實驗內(nèi)容矩陣式鍵盤數(shù)字密碼鎖設(shè)計,根據(jù)設(shè)定好的密碼,采用4x4矩陣鍵盤實現(xiàn)密碼的輸入功能。當(dāng)密碼輸入正確之后,鎖就打開(綠燈亮

2、),10秒之后,鎖自動關(guān)閉(紅燈亮);如果連續(xù)輸入三次密碼不正確,就鎖定按鍵5秒鐘,同時發(fā)出報警(黃燈閃),5秒后,解除按鍵鎖定,恢復(fù)密碼輸入。數(shù)字密碼鎖操作鍵盤參考上面設(shè)定,也可以自行設(shè)計鍵盤。用戶初始密碼為“123456”,系統(tǒng)加電運行后,密碼鎖初始狀態(tài)為常閉(紅燈亮),用戶可以選擇開鎖或修改密碼:如果選擇開鎖就按“Open”鍵,系統(tǒng)提示輸入密碼,輸入用戶密碼+“#”鍵后,如果密碼正確,就打開鎖(綠燈亮),系統(tǒng)等待10秒,然后重新關(guān)閉密碼鎖,若密碼錯,提示重新輸入,連續(xù)三次錯誤,提示警告詞同時報警(黃燈閃),鎖定鍵盤5秒,然后重新進入初始狀態(tài);如果選擇修改密碼就按”Modify Secre

3、t”鍵,系統(tǒng)提示輸入舊密碼,輸入舊密碼+“#”鍵后,如果正確,系統(tǒng)提示輸入新密碼,輸入新密碼+“#”后,新密碼起效,重新進入初始狀態(tài);如果舊密碼錯,不能修改密碼,密碼鎖直接進入初始狀態(tài)。三 實驗基本任務(wù) 1)具有開鎖、修改用戶密碼等基本的密碼鎖功能。2)對于超過3次密碼密碼錯誤,鎖定鍵盤5秒,系統(tǒng)報警。5秒后解除鎖定。4)通過LCD字符液晶和LED指示燈(紅,綠,黃)實時顯示相關(guān)信息。 5)用戶密碼為6位數(shù)字,顯示采用 “*” 號表示。6)碼鎖鍵盤設(shè)計合理,功能完善,方便用戶使用。本次實驗還做了附加的任務(wù)( 1) 增加了管理員(Admin)功能,如果用戶忘記密碼可向管理員求助。管理員密碼為8位

4、數(shù)字(系統(tǒng)內(nèi)預(yù)先已設(shè)定),管理員按“Admin”鍵后,系統(tǒng)提示輸入管理員密碼,輸入管理員密碼+“#”鍵后,如果正確,系統(tǒng)自動恢復(fù)用戶初始密碼為“123456”;如果錯誤,程序停止運行,系統(tǒng)退出。2)增加了輸入清除功能(*),在輸入密碼過程中,如果中途按下“*”鍵,則清除前面的輸入,開始重新輸入密碼。四 . 實驗設(shè)計方案 實驗用到8255作為并行接口設(shè)備,用以ISA總線與外設(shè)的連接,本次用的是8255的A口作為輸出口,C口的高4位與B口是輸入,C口低4位是輸出口,所以控制住設(shè)置為ox8a,8253作為時鐘器,作為控制提示燈的時間閃爍,8255的A口接鍵盤的rom,B口接col,地址線都連接在總線

5、下面的芯片上接口,其他的讀寫控制線都接入ISA總線上。如下圖的接線設(shè)置 ISA控制信號和地址總線(JS4)B口低三位A0A1CS及接口地址C口低四位8255鍵盤KEYA口低四位向PC機送信號接口地址JS8A0A1CS及接口地址8253時鐘源(JS32)A0A1CS及接口地址LCDTRL交通燈五 實驗器材8086CPU,可編程并行接口8255,可編程定時器8253,LCD顯示屏,LED燈,4x4矩陣鍵盤。六 實驗原理圖七 程序代碼 #include "StdAfx.h"#include "PCI9052DLL.h"#include "stdio.

6、h"#include "math.h"#include "string.h"#include "stdlib.h"#include "iostream.h"#include "windows.h"unsigned char value44='1','2','3','M','4','5','6','O','7','8','

7、9','A','0','#','*','S'/鍵盤標(biāo)示unsigned char little44='a','b','c','0','d','e','f','0','g','h','i','0','j','0','0','S'/shift鍵的字母表示cha

8、r Mimachar6='1','2','3','4','5','6'char Guanlikey8='1','2','3','4','5','6','7','8'int Mimasum=0;int Guanlisum=0;char Wodemima6;char Guanlichar8;bool Modify=false;bool Newmima=false;int Err

9、orcount=0;bool Equal(char a,char b)/比較字符串是否相等int i;for(i=0;i<6;i+)if(Mimachari!=Wodemimai) return false;return true;bool isnum(char tmp)/判斷是否為數(shù)字return tmp<='9'&&tmp>='0'bool isoper(char tmp)/判斷是否為操作符return tmp='#'|tmp='*'|tmp='S'|tmp='A

10、9;|tmp='O'|tmp='M' ? true : false;bool ischar(char tmp)/判斷是否為小寫字母return tmp>='a'&&tmp<='j'void init8255()/初始化8255OpenDevice();OutByte(0xde03, 0x82);void end8255()/結(jié)束8255CloseDevice();void InitLCD()/初始化LCDunsigned char data4=0x01,0x06,0x0f,0x38;unsigned c

11、har ch6="Open!"int i; for (i=0;i<4;i+)OutByte(0xde08, datai);/?! Sleep(100);for (i=0;i<6;i+)OutByte(0xde09, chi);/在LCD上顯示Open! Sleep(50 );Sleep(1000);void init8253()/初始化8253OpenDevice();unsigned char kbscan()/鍵盤掃描int row_va4=0x0e,0x0d,0x0b,0x07; /選中每一行時的A口值unsigned char data;unsigned

12、 char data_tmp;Sleep(200); /第一次消除抖動-每次鍵盤掃描的時間間隔至少為200毫秒for(int i=0;i<4;i+,i%=4)int tmp=row_vai;OutByte(0xde00, tmp); /循環(huán)掃描第一到四行InByte(0xde01,&data);if(data=NULL) /掃描不到的情況排除掉 else if(data&0x0f)!=0x0f) /檢測這一行是否有按鍵被按下Sleep(10);/第二次消除抖動-如果10ms之后還是相同的按鍵就執(zhí)行下面的。InByte(0xde01,&data_tmp);data_

13、tmp=data_tmp&0x0f;if(data_tmp!=data) continue; /否則不執(zhí)行下面的while(data_tmp=data)/第三次消除抖動-判斷按鍵是否彈起。彈起則結(jié)束循環(huán)InByte(0xde01,&data);data=data&0x0f;Sleep(10);if(data=0x0f)Sleep(100);InByte(0xde01,&data);data=data&0x0f;switch(data_tmp)case 0x0e: return valuei0;case 0x0d: return valuei1;case

14、0x0b: return valuei2;case 0x07: return valuei3; return NULL;void Clear()/清空屏幕OutByte(0xde08,0x01);void displayOnLcd()/在LCD上顯示*號.unsigned char stmp2="*" for (int i=0;i<1;i+) OutByte(0xde09, stmpi);int main(int argc, char* argv)/主函數(shù) init8255(); /初始化8255init8253();InitLCD();/初始化LCDSleep(10

15、0);unsigned char temp;Start_Position:/->->-> 起始位置-起始條件OutByte(0xde02,0xFE); /紅燈亮temp = '0' /指令符號printf("please input Open!");while(1) int j=0;temp = kbscan(); /獲取在鍵盤中得到的數(shù)字printf("the key:%cn",temp);if(temp='O')Mimasum=0;Clear(); /清空屏幕while(1)temp = kbscan

16、(); j+;printf("第%d次鍵盤掃描:%cn",j,temp);if(isnum(temp)if(Mimasum<6)WodemimaMimasum=temp;Mimasum+;displayOnLcd(); /上屏幕LCD一個*號else if(isoper(temp)if(temp='#') /密碼匹配if(Mimasum=6) if(Newmima=true) /修改密碼標(biāo)志為true且原密碼正確-修改密碼int i;for(i=0;i<6;i+) Mimachari=Wodemimai;Newmima=false;printf(

17、"新密碼為:");for(i=0;i<6;i+)printf("%c",Mimachari);printf("n");else if(Equal(Mimachar,Wodemima)if(Modify=true) /Modify為true-修改密碼Newmima=true; /把修改密碼標(biāo)志賦值為trueModify=false;Mimasum=0;Clear(); /清空屏幕printf("輸入新密碼:n"); /提示:輸入新密碼elseprintf("密碼正確!n");OutByte(

18、0xde02,0x7f); /綠燈亮Sleep(10000); /綠燈亮10SOutByte(0xde02,0xFE); /紅燈亮&&綠燈滅Mimasum=0;Errorcount=0;goto Start_Position; /回到最前面elseErrorcount+;printf("密碼錯誤次數(shù)%d次!n",Errorcount);if(Errorcount>=3) /提示重新輸入的顯示 OutByte(0xde02,0xFD); /黃燈亮Sleep(1000); OutByte(0xde02,0xFF); /黃燈滅Sleep(1000);OutB

19、yte(0xde02,0xFD); /黃燈亮Sleep(1000); OutByte(0xde02,0xFF); /黃燈滅Sleep(1000);OutByte(0xde02,0xFD); /黃燈亮Sleep(1000);OutByte(0xde02,0xFE); /紅燈亮&&綠燈滅Mimasum=0; /初始Errorcount=0;Clear(); /清空屏幕goto Start_Position;elseprintf("請重新輸入密碼:n");else if(temp='*')Mimasum=0; /重新輸入密碼Clear(); /清空

20、屏幕else if(temp='A')Guanlisum=0;Clear(); /清空屏幕printf("請輸入管理員密碼:n");while(1) /輸入管理員密碼temp = kbscan();printf("one次鍵盤掃描:%cn",temp);if(isnum(temp)if(Guanlisum<8)GuanlicharGuanlisum=temp;Guanlisum+;displayOnLcd(); /上屏幕LCD*號else if(isoper(temp)if(temp='#'&& Guanlisum=8)int i;for(i=0;i<8;i+)if(Guanlikeyi!=Guanlichari) retu

溫馨提示

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

評論

0/150

提交評論