freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

課程設(shè)計(jì)(論文)-基于單片機(jī)的電子密碼鎖設(shè)計(jì)-資料下載頁

2024-10-25 19:18本頁面

【導(dǎo)讀】本文詳細(xì)介紹了一種基于單片機(jī)電子密碼鎖的設(shè)計(jì)方案。描述了電子密碼鎖的總體。結(jié)構(gòu)、主要功能及工作原理等內(nèi)容。傳統(tǒng)的機(jī)械鎖由于安全性能太差,被撬的事件屢見。電子密碼鎖作為一種新型的鎖,省去了傳統(tǒng)機(jī)械鎖的鑰匙,使用者只要記得其。鍵盤接口電路包括時(shí)序產(chǎn)生電路、鍵盤掃描電路、彈抖消除電路、鍵盤譯碼電路。八段顯示電路包括數(shù)據(jù)選擇電路、八段顯示器掃描電路。關(guān)鍵詞:電子密碼鎖;89S52;鍵盤接口;輸出八段顯示。

  

【正文】 //對應(yīng)密碼位顯示 F pwbuf[count]=6。 count++。 } break。 case 0x82: //2 行 4 列,數(shù)字 7 if(count6) { wordbuf[count]=0x0f。 //對應(yīng)密碼位顯示 F pwbuf[count]=7。 count++。 } break。 case 0x14: //3 行 1 列,數(shù)字 8 if(count6) { wordbuf[count]=0x0f。 //對應(yīng)密碼位顯示 F pwbuf[count]=8。 count++。 } break。 case 0x24: //3 行 2 列,數(shù)字 9 桂林電子科技大學(xué)課程設(shè)計(jì)(論文)報(bào)告用紙 第 18 頁 共 21 頁 if(count6) { wordbuf[count]=0x0f。 //對應(yīng)密碼位顯示 F pwbuf[count]=9。 count++。 } break。 case 0x44: //3 行 3 列,確認(rèn)鍵 enterflag=1。 //確認(rèn)鍵按下 if(count==6) //只要輸入 6 個(gè)密碼后按確認(rèn)鍵才作密碼比較 pwflag=pwcmp()。 else pwflag=0。 //否則直接 pwflag 賦 0 break。 case 0x84: //3 行 4 列,取消鍵 count=0。 //密碼計(jì)數(shù)器清 0 for(j=0。j6。j++) { wordbuf[j]=8。 //數(shù)碼管顯示 888888 pwbuf[j]=0x0f。 //用 FFFFFF 清除已經(jīng)輸入的密碼 } break。 default:break。 } if(enterflag==1) //如果按下確認(rèn)鍵 { showflag=0。 //關(guān)閉數(shù)碼管顯示 enterflag=0。 //標(biāo)致位置回 0 count=0。 //密碼位計(jì)數(shù)器清 0 //用 FFFFFF 清除已經(jīng)輸入的密碼 for(j=0。j6。j++) pwbuf[j]=0x0f。 TR1=1。 //計(jì)數(shù)器 1 開始計(jì)數(shù) t1count=0。 if(pwflag==1) green=1。 //綠燈亮 else red=1。 //紅燈亮 } } } void delay(void) //按鍵消抖延時(shí)函數(shù) 桂林電子科技大學(xué)課程設(shè)計(jì)(論文)報(bào)告用紙 第 19 頁 共 21 頁 { uchar i。 for(i=300。i0。i)。 } uchar keyscan(void) //按鍵掃描函數(shù) { uchar scancode,tmpcode。 P1=0xf0。 //發(fā)全 0 行掃描碼 if((P1amp。0xf0)!=0xf0) //若有鍵按下 { delay()。 //延時(shí)去抖動 if((P1amp。0xf0)!=0xf0) //延時(shí)后再判斷,去除抖動影響 { scancode=0xfe。 //從第一行開始掃描 while((scancodeamp。0x10)!=0) //逐行掃描 { P1=scancode。 //輸出行掃描碼 if((P1amp。0xf0)!=0xf0) //本行有鍵按下 { tmpcode=(P1amp。0xf0)|0x0f。 while((P1amp。0xf0)!=0xf0){}。 delay()。 while((P1amp。0xf0)!=0xf0){}。 return((~scancode)+(~tmpcode))。 //返回特征字節(jié)碼,為 1 的位即對應(yīng)于行和列 } else scancode=(scancode1)|0x01。 //行掃描碼左移 1 位 } } } return(0)。 //無鍵按下,返回值為 0 } //定時(shí)器 0 中斷服務(wù)子程序, 2ms 定時(shí)動態(tài)掃描顯示 void time0_int(void)interrupt 1 { //重置 2ms 定時(shí) TH0=2020/256。 TL0=2020amp。256。 if(showflag==1) display()。 //調(diào)用顯示函數(shù) } //定時(shí)器 1 中斷服務(wù)子程序, 50ms 定時(shí)動態(tài)掃描顯示 void time1_int(void)interrupt 3 桂林電子科技大學(xué)課程設(shè)計(jì)(論文)報(bào)告用紙 第 20 頁 共 21 頁 { uchar k。 //重置 50ms 定時(shí) TH1=50000/256。 TL1=50000amp。256。 if(t1count20) { t1count++。 } else//計(jì)時(shí)到 1s { TR1=0。 //關(guān)閉計(jì)數(shù)器 1 t1count=0。 green=0。 //綠燈不亮 red=0。 //紅燈不亮 showflag=1。 //打開數(shù)碼管顯示 digbit=0x80。 //從數(shù)碼管第 1 位開始動態(tài)顯示 for(k=0。k6。k++)//顯示 888888 wordbuf[k]=8。 } } //根據(jù)共陰極字型編碼表獲取 0~9, A~B 字型代碼 uchar getcode(uchar i) { uchar p。 switch(i) { case 0: p=~0x3f。 break。 //0 case 1: p=~0x06。 break。 //1 case 2: p=~0x5B。 break。 //2 case 3: p=~0x4F。 break。 //3 case 4: p=~0x66。 break。 //4 case 5: p=~0x6D。 break。 //5 case 6: p=~0x7D。 break。 //6 case 7: p=~0x07。 break。 //7 case 8: p=~0x7F。 break。 //8 case 9: p=~0x67。 break。 //9 case 10: p=~0x77。 break。 //A case 11: p=~0x7C。 break。 //B case 12: p=~0x39。 break。 //C case 13: p=~0x5E。 break。 //D case 14: p=~0x79。 break。 //E 桂林電子科技大學(xué)課程設(shè)計(jì)(論文)報(bào)告用紙 第 21 頁 共 21 頁 case 15: p=~0x71。 break。 //F default: break。 } return(p)。 } //數(shù)碼管顯示函數(shù) void display(void) { uchar i。 switch(digbit) { case 0x80: i=0。break。 case 0x40: i=1。break。 case 0x20: i=2。break。 case 0x10: i=3。break。 case 0x08: i=4。break。 case 0x04: i=5。break。 } P2=0x0。 //關(guān)閉顯示 P0=getcode(wordbuf[i])。 //送字型碼 P2=~digbit。 //送字位碼 if(digbit0x02) //共 6 位 digbit=digbit1。 else digbit=0x80。 } //密碼比較函數(shù) bit pwcmp(void) { bit flag。 uchar i。 for(i=0。i6。i++) { if(pw[i]==pwbuf[i]) flag=1。 else { flag=0。 i=6。 } } return(flag)。 }
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1