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

正文內(nèi)容

基于51單片機的簡易電子密碼鎖畢業(yè)設(shè)計課程設(shè)計【最新】-文庫吧

2025-05-23 01:07 本頁面


【正文】 ata。 PData=Data。 for(i=0。iNum。i++) { Start()。 Send(0xa0)。 Ack()。 Send(Address+i)。 Ack()。 Send(*(PData+i))。 Ack()。 Stop()。 mDelay(20)。 }}void RdFromROM(uchar Data[],uchar Address,uchar Num){ uchar i。 uchar *PData。 PData=Data。 for(i=0。iNum。i++) { Start()。 Send(0xa0)。 Ack()。 Send(Address+i)。 Ack()。 Start()。 Send(0xa1)。 Ack()。 *(PData+i)=Read()。 Scl=0。 NoAck()。 Stop()。 }}//=======================================LCD1602=============================//define yi 0x80 //LCD第一行的初始位置,因為LCD1602字符地址首位D7恒定為1(100000000=80)define er 0x80+0x40 //LCD第二行初始位置(因為第二行第一個字符位置地址是0x40)//延時函數(shù),后面經(jīng)常調(diào)用void delay(uint xms)//延時函數(shù),有參函數(shù){ uint x,y。 for(x=xms。x0。x) for(y=110。y0。y)。}//寫指令write_1602(uchar )//****液晶寫入指令函數(shù)****{ lcd1602_rs=0。//數(shù)據(jù)/指令選擇置為指令 lcd1602_rw=0。 //讀寫選擇置為寫 P0=。//送入數(shù)據(jù) delay(1)。 lcd1602_en=1。//拉高使能端,為制造有效的下降沿做準(zhǔn)備 delay(1)。 lcd1602_en=0。//en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令}//寫數(shù)據(jù)write_1602dat(uchar dat)//***液晶寫入數(shù)據(jù)函數(shù)****{ lcd1602_rs=1。//數(shù)據(jù)/指令選擇置為數(shù)據(jù) lcd1602_rw=0。 //讀寫選擇置為寫 P0=dat。//送入數(shù)據(jù) delay(1)。 lcd1602_en=1。 //en置高電平,為制造下降沿做準(zhǔn)備 delay(1)。 lcd1602_en=0。 //en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令}//初始化void lcd_init(void){ write_1602(0x38)。//設(shè)置液晶工作模式,意思:16*2行顯示,5*7點陣,8位數(shù)據(jù) write_1602(0x0c)。//開顯示不顯示光標(biāo) write_1602(0x06)。//整屏不移動,光標(biāo)自動右移 write_1602(0x01)。//清顯示}//==============將按鍵值編碼為數(shù)值=========================unsigned char coding(unsigned char m) { unsigned char k。 switch(m) { case (0x18): k=1。break。 case (0x28): k=2。break。 case (0x48): k=3。break。 case (0x88): k=39。A39。break。 case (0x14): k=4。break。 case (0x24): k=5。break。 case (0x44): k=6。break。 case (0x84): k=39。B39。break。 case (0x12): k=7。break。 case (0x22): k=8。break。 case (0x42): k=9。break。 case (0x82): k=39。C39。break。 case (0x11): k=39。*39。break。 case (0x21): k=0。break。 case (0x41): k=39。39。break。 case (0x81): k=39。D39。break。 } return(k)。}//=====================按鍵檢測并返回按鍵值===============================unsigned char keynum(void){ unsigned char row,col,i。 P1=0xf0。 if((P1amp。0xf0)!=0xf0) { Delay5Ms()。 Delay5Ms()。 if((P1amp。0xf0)!=0xf0) { row=P1^0xf0。 //確定行線 i=0。 P1=a[i]。 //精確定位 while(i4) { if((P1amp。0xf0)!=0xf0) { col=~(P1amp。0xff)。 //確定列線 break。 //已定位后提前退出 } else { i++。 P1=a[i]。 } } } else { return 0。 } while((P1amp。0xf0)!=0xf0)。 return (row|col)。 //行線與列線組合后返回 } else return 0。 //無鍵按下時返回0}//=======================一聲提示音,表示有效輸入========================void OneAlam(void){ ALAM=0。 Delay5Ms()。 ALAM=1。}//========================二聲提示音,表示操作成功========================void TwoAlam(void){ ALAM=0。 Delay5Ms()。 ALAM=1。 Delay5Ms()。 ALAM=0。 Delay5Ms()。 ALAM=1。}//========================三聲提示音,表示錯誤========================void ThreeAlam(void){ ALAM=0。 Delay5Ms()。 ALAM=1。 Delay5Ms()。 ALAM=0。 Delay5Ms()。 ALAM=1。 Delay5Ms()。 ALAM=0。 Delay5Ms()。 ALAM=1。}//=====================顯示輸入的N個數(shù)字,用H代替以便隱藏============================void DisplayOne(void){// DisplayOneChar(9+N,1,39。*39。)。 write_1602(yi+5+N)。 write_1602dat(39。*39。)。}//=======================顯示提示輸入=========================void DisplayChar(void){ unsigned char i。 if(pass==1) { //DisplayListChar(0,1,LockOpen)。 write_1602(er)。 for(i=0。i16。i++) { write_1602dat(LockOpen[i])。 } } else { if(N==0) { //DisplayListChar(0,1,Error)。 write_1602(er)。 for(i=0。i16。i++) { write_1602dat(Error[i])。 } } else { //DisplayListChar(0,1,start_line)。 write_1602(er)。 for(i=0。i16。i++) { write_1602dat(start_line[i])。 } } }}void DisplayInput(void){ unsigned char i。 if(CorrectCont==1) { //DisplayListChar(0,0,Input)。 write_1602(er)。 for(i=0。i16。i++) { write_1602dat(Input[i])。 } }}//========================重置密碼==================================================//==================================================================================void ResetPassword(void){ unsigned char i。 unsigned char j。 if(pass==0) { pass=0。 DisplayChar()。 ThreeAlam()。 } else { if(ReInputEn==1) { if(N==6) { ReInputCont++。 if(ReInputCont==2) { for(i=0。i6。) { if(TempPassword[i]==InputData[i]) //將兩次輸入的新密碼作對比 i++。 else { //DisplayListChar(0,1,Error)。 write_1602(er)。 for(j=0。j16。j++) { write_1602dat(Error[j])。 } ThreeAlam()。 //錯誤提示 pass=0。 ReInputEn=0。 //關(guān)閉重置功能, ReInputCont=0。 DisplayChar()。 break。 } } if(i==6) { //DisplayListChar(0,1,ResetOK)。 write_1602(er)。 for(j=0。j16。j++) { write_1602dat(ResetOK[j])。 } TwoAlam()。 //操作成功提示 WrToROM(TempPassword,0,6)。 //將新密碼寫入24C02存儲 ReInputEn=0。 } ReInputCont=0。 CorrectCont=0。 } else { OneAlam()。 //DisplayListChar(0, 1, again)。 //顯示再次輸入一次 write_1602(er)。 for(j=0。j16。j++) { write_1602dat(again[j])。 } for(i=0。i6。i++) { TempPassword[i]=InputData[i]。 //將第一次輸入的數(shù)據(jù)暫存起來 } } N=0。 //輸入數(shù)據(jù)位數(shù)計數(shù)器清零 } } }}//=======================輸入密碼錯誤超過三過,報警并鎖死鍵盤======================void Alam_KeyUnable(void){ P1=0x00。 {
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1