版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、#include<reg52.h>#define uchar unsigned char #define uint unsigned int sbit lcden=P12;sbit lcdrs=P10;sbit lcdrw=P11;sbit p17=P17; /開(kāi)門指示:指示燈和蜂鳴器uchar table18='N','A','M','E',':' /定義數(shù)碼管的第一行"name: "uchar table28='C','O','D'
2、,'E',':' /定義數(shù)碼管的第二行"lode: "uchar name10='0','1','2','3' uchar cod20='0','0','0','0','1','1','1','1','2','2','2','2','3','3','3
3、','3' /定義四個(gè)用戶,并設(shè)置對(duì)應(yīng)的用戶和密碼, /其中用戶0定義為超級(jí)用戶0,用戶1、用戶2和用戶3為普通用戶uint in_name; /保存輸入的用戶名uint error_num; /輸入密碼錯(cuò)誤的次數(shù)uchar in_code14; /保存第一次輸入的密碼uchar in_code24; /保存第二次輸入的密碼uchar code sup11='S','U','P','E','R',' ','U','S','E',
4、'R','!' /輸入用戶為超級(jí)用戶uchar code nor12='N','O','R','M','A','L',' ','U','S','E','R','!' /輸入用戶為普通用戶uchar code err6='E','R','R','O','R','!' /輸入用戶名或
5、密碼錯(cuò)誤uchar wait8='W','A','I','T','I','N','G','!' /等待uchar aga11='I','N','P','U','T',' ','A','G','A','I','N' /再次輸入密碼uchar ame9='A','M'
6、,'E','N','D','I','N','G','!' /正在修改密碼uchar fun6='a','b','c','d','e','f' /ABCDEF功能鍵 /=延時(shí)函數(shù)=/void delay(uint x) uint a,b; for(a=x;a>0;a-) for(b=110;b>0;b-);/=1602寫指令=/void write_com(uchar com)
7、lcdrs=0; P0=com; delay(10); lcden=1; delay(10); lcden=0;/=1602寫數(shù)據(jù)=/void write_data(uchar dat) lcdrs=1; P0=dat; delay(10); lcden=1; delay(10); lcden=0;/=1602在指定的位置顯示一個(gè)字符=/void disp_char(uchar x,uchar y,uchar dat) uint i; uchar addr; if(y=1) addr=0x80+x; else addr=0xc0+x; write_com(addr); for(i=0;i<
8、;2;i+); write_data(dat); for(i=0;i<2;i+);/=1602數(shù)碼管初始化函數(shù)=/void display() lcden=0; lcdrw=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80);/=4*4鍵盤掃描函數(shù)=/uint keyscan() uchar temp; uint key=16; /key=16表示沒(méi)有按下任何鍵 P2=0xfe; /第一行被置為低電平,開(kāi)始掃描第一行 temp=P2; temp=temp&0x
9、f0; if(temp!=0xf0) delay(1); temp=P2; temp=temp&0xf0; if(temp!=0xf0) temp=P2; switch(temp) case(0xee): key=0; break; case(0xde): key=1; break; case(0xbe): key=2; break; case(0x7e): key=3; break; while(temp!=0xf0) /等待按鍵釋放 temp=P2; temp=temp&0xf0; / P2=0xfd; /第二行被置為低電平,開(kāi)始掃描第二行 temp=P2; temp=te
10、mp&0xf0; if(temp!=0xf0) delay(1); temp=P2; temp=temp&0xf0; if(temp!=0xf0) temp=P2; switch(temp) case(0xed): key=4; break; case(0xdd): key=5; break; case(0xbd): key=6; break; case(0x7d): key=7; break; while(temp!=0xf0) /等待按鍵釋放 temp=P2; temp=temp&0xf0; / P2=0xfb; /第三行被置為低電平,開(kāi)始掃描第三行 temp=P2
11、; temp=temp&0xf0; if(temp!=0xf0) delay(1); temp=P2; temp=temp&0xf0; if(temp!=0xf0) temp=P2; switch(temp) case(0xeb): key=8; break; case(0xdb): key=9; break; case(0xbb): key=10; break; case(0x7b): key=11; break; while(temp!=0xf0) /等待按鍵釋放 temp=P2; temp=temp&0xf0; / P2=0xf7; /第四行被置為低電平,開(kāi)始掃描
12、第四行 temp=P2; temp=temp&0xf0; if(temp!=0xf0) delay(1); temp=P2; temp=temp&0xf0; if(temp!=0xf0) temp=P2; switch(temp) case(0xe7): key=12; break; case(0xd7): key=13; break; case(0xb7): key=14; break; case(0x77): key=15; break; while(temp!=0xf0) /等待按鍵釋放 temp=P2; temp=temp&0xf0; return(key);
13、/*/-B鍵的功能,刪除用戶-/void delete_user() ;/-D鍵的功能,添加用戶-/void add_user(); */-E鍵的功能,修改密碼-/void amend_code() uint i,j,k=16; display();for(i=0;i<5;i+) disp_char(i,1,table1i); /第一行顯示NAME:及對(duì)應(yīng)的用戶名disp_char(5,1,namein_name); for(i=0;i<5;i+) disp_char(i,2,table2i); /第二行顯示CODE:AMENDING!for(i=0;i<9;i+) disp
14、_char(i+5,2,amei); for(j=0;j<4;j+) k=keyscan();while(k=16) k=keyscan();codin_name*4+i=funk-10; /=F鍵的功能,開(kāi)門,蜂鳴器間斷響=/void open_door() uint i,j; for(i=0;i<6;i+) for(j=0;j<10000;j+) if(j/5000)%2=0) p17=1; else p17=0; p17=0;/=超級(jí)用戶相關(guān)操作=/void super_user() uint k=16; uint flag=0; while(flag=0) k=key
15、scan(); while(!(k=10|k=11|k=13|k=14|k=15) /當(dāng)A、B、D、E、F均未被按下時(shí),繼續(xù)掃描 k=keyscan(); if(k=10) / 當(dāng)A鍵被按下時(shí),返回 flag=1; if(k=11) / 當(dāng)B鍵被按下時(shí),刪除用戶 flag=1;/ delete_user(); if(k=13) / 當(dāng)D鍵被按下時(shí),添加用戶 flag=1;/ add_user(); if(k=14) / 當(dāng)E鍵被按下時(shí),修改密碼 flag=1; amend_code(); if(k=15) / 當(dāng)F鍵被按下時(shí),開(kāi)門 flag=1; open_door(); delay(6000
16、); /=普通用戶相關(guān)操作:改密、開(kāi)門=/void normal_user() uint k=16; uint flag=0; while(flag=0) k=keyscan(); while(!(k=14|k=15) /當(dāng)沒(méi)有按下E、F鍵時(shí),繼續(xù)掃描 k=keyscan(); if(k=14); /對(duì)應(yīng)于E鍵 flag=1; /普通用戶完成一項(xiàng)操作 amend_code(); /修改當(dāng)前用戶的密碼 if(k=15) flag=1; /普通用戶完成一項(xiàng)操作 open_door(); /F鍵的功能,開(kāi)門 delay(6000);/=第二次輸入密碼函數(shù)=/ void input_code2() u
17、int i,j,flag2=0; uint k2=16; error_num=0; while(flag2=0&&error_num<3) for(i=0;i<4;i+) /輸入4位數(shù)密碼,保存在in_code2中 k2=keyscan(); while(k2=16) k2=keyscan(); in_code2i=funk2-10; display(); for(j=0;j<5;j+) disp_char(j,1,table1j); /第一行顯示NAME:及對(duì)應(yīng)的用戶名 disp_char(5,1,namein_name); for(j=0;j<5;j
18、+) disp_char(j,2,table2j); /第二行先后顯示CODE:*,CODE:*,CODE:*,CODE:* for(j=0;j<i+1;j+) disp_char(5+j,2,'*'); delay(10); delay(10);/-檢驗(yàn)輸入的密碼是否與第一次輸入的密碼一致-/ if(in_code20=in_code10&&in_code21=in_code11&&in_code22=in_code12&&in_code23=in_code13) flag2=1; /輸入密碼正確,退出while循環(huán) p1
19、7=1;/指示燈亮,蜂鳴器響,表示密碼正確 delay(400); p17=0; else flag2=0; /輸入密碼錯(cuò)誤重新輸入 error_num+; display(); for(j=0;j<5;j+) /第一行顯示NAME:及對(duì)應(yīng)的用戶名 disp_char(j,1,table1j); disp_char(5,1,namein_name); for(j=0;j<5;j+) /第二行顯示CODE:ERROR!2 disp_char(j,2,table2j); for(j=0;j<6;j+) disp_char(j+5,2,errj); disp_char(11,2,&
20、#39;2'); delay(10); /=第一次輸入密碼函數(shù)=/ void input_code1() uint i,j,n,flag1=0,k1=16; error_num=0; while(flag1=0&&error_num<3) for(i=0;i<4;i+) /輸入4位數(shù)密碼,保存在in_code1中 k1=16; k1=keyscan(); while(k1=16) k1=keyscan(); in_code1i=funk1-10; display(); for(j=0;j<5;j+) disp_char(j,1,table1j); /第
21、一行顯示NAME:及對(duì)應(yīng)的用戶名 disp_char(5,1,namein_name); for(j=0;j<5;j+) disp_char(j,2,table2j); /第二行先后顯示CODE:*,CODE:*,CODE:*,CODE:* for(n=0;n<i+1;n+) disp_char(5+n,2,'*'); delay(10); delay(600); /-檢驗(yàn)輸入的密碼是否正確-/ if(in_code10=codin_name*4+0&&in_code11=codin_name*4+1&&in_code12=codin
22、_name*4+2&&in_code13=codin_name*4+3) flag1=1; /輸入密碼正確,退出wlile循環(huán),等待第二次輸入密碼 display(); for(j=0;j<5;j+) disp_char(j,1,table1j); /第一行顯示NAME:及對(duì)應(yīng)的用戶名 disp_char(5,1,namein_name); for(j=0;j<5;j+) disp_char(j,2,table2j); /第二行顯示CODE:INPUT AGAIN for(j=0;j<11;j+) disp_char(j+5,2,agaj); /INPUT A
23、GAIN delay(10); p17=0; /指示燈亮,蜂鳴器響,表示密碼正確 delay(400); p17=1; else flag1=0; /輸入密碼錯(cuò)誤重新輸入 error_num+; display(); for(j=0;j<5;j+) /第一行顯示NAME:及對(duì)應(yīng)的用戶名 disp_char(j,1,table1j); disp_char(5,1,namein_name); for(j=0;j<5;j+) /第二行顯示CODE:ERROR!1 disp_char(j,2,table2j); for(j=0;j<6;j+) disp_char(j+5,2,errj
24、); disp_char(11,2,'1'); delay(100); /=輸入用戶名函數(shù)=/void input_name() uint j,flag0=0,error_num=0; uint k0=16; while(flag0=0) k0=keyscan();while(k0=16) /k0=16表示未輸入用戶名 k0=keyscan();/-/ if(k0>=0&&k0<4) /輸入為用戶0、用戶1、用戶2、用戶3 flag0=1; /flag=1表示輸入一個(gè)正確的用戶 in_name=k0; /記下所輸入的正確用戶的序號(hào) display()
25、; for(j=0;j<5;j+)/第一行顯示NAME:及輸入的用戶 disp_char(j,1,table1j); disp_char(5,1,k0); for(j=0;j<5;j+) /第二行顯示CODE: disp_char(j,2,table2j); delay(10); p17=0; /指示燈亮,蜂鳴器響,表示用戶名正確 delay(400); p17=1; /-/ if(k0>=4&&k0<=15) /輸入的用戶錯(cuò)誤 flag0=0; error_num+; display(); for(j=0;j<5;j+) /第一行顯示NAME:ERROR! disp_char(j,1,table1j); disp_char(5,1,funk0-10); for(j=0;j<6;j+) disp_char(j+7,1,errj); for(j=0;j<5;j
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 地質(zhì)勘探法律法規(guī)解讀考核試卷
- 發(fā)動(dòng)機(jī)重量與強(qiáng)度設(shè)計(jì)問(wèn)題研究考核試卷
- 廣西壯族自治區(qū)北海市合浦縣2024-2025學(xué)年高二上學(xué)期期中檢測(cè)歷史試題2
- 2024年塔吊租賃與專業(yè)施工配合服務(wù)合同范本9篇
- 《幾種優(yōu)良外生菌根菌的應(yīng)用和膠丸菌劑的制備》
- 2024年物流居間合同模板:化工產(chǎn)品物流居間協(xié)議3篇
- 《Ni基高熵合金的熱處理工藝研究》
- 《OPC技術(shù)研究及其在現(xiàn)場(chǎng)總線控制系統(tǒng)中的應(yīng)用》
- 碳酸鈣在葡萄土壤酸堿平衡中的作用-洞察分析
- 2024年煤礦采煤機(jī)(掘進(jìn)機(jī))操作作業(yè)理論考試題庫(kù)-上(單選、多選題)
- 2024中國(guó)食藥同源大健康產(chǎn)業(yè)消費(fèi)洞察與產(chǎn)業(yè)發(fā)展分析白皮書(shū)
- 蘇教版科學(xué)六年級(jí)上冊(cè)期末測(cè)試卷附完整答案【典優(yōu)】
- 二年級(jí)上冊(cè)數(shù)學(xué)解決問(wèn)題60道附參考答案【典型題】
- 國(guó)開(kāi)作業(yè)《公共關(guān)系學(xué)》實(shí)訓(xùn)項(xiàng)目1:公關(guān)三要素分析(六選一)參考552
- 寺廟規(guī)劃設(shè)計(jì)方案
- 魯科版高中化學(xué)選擇性必修第一冊(cè)復(fù)習(xí)資料
- 湖北省竹山縣四棵樹(shù)釩礦礦產(chǎn)資源開(kāi)發(fā)利用與生態(tài)復(fù)綠方案
- 設(shè)計(jì)質(zhì)量提升措施
- 藥理學(xué)(浙江大學(xué))智慧樹(shù)知到期末考試答案2024年
- 意識(shí)形態(tài)安全教育主題班會(huì)
- 品三國(guó)論領(lǐng)導(dǎo)藝術(shù)智慧樹(shù)知到期末考試答案2024年
評(píng)論
0/150
提交評(píng)論