修改后程序.docx
- 文档编号:23702913
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:26
- 大小:18.22KB
修改后程序.docx
《修改后程序.docx》由会员分享,可在线阅读,更多相关《修改后程序.docx(26页珍藏版)》请在冰豆网上搜索。
修改后程序
#include
#include
#defineLCM_DataP0
#defineucharunsignedchar
#defineuintunsignedint
#definew6
sbitlcd1602_rs=P2^7;
sbitlcd1602_rw=P2^6;
sbitlcd1602_en=P2^5;
sbitScl=P3^4;
sbitSda=P3^5;
sbitALAM=P2^1;
sbitKEY=P3^6;
sbitopen_led=P2^2;
bitoperation=0;
bitpass=0;
bitReInputEn=0;
bits3_keydown=0;
bitkey_disable=0;
unsignedcharcountt0,second;
voidDelay5Ms(void);
unsignedcharcodea[]={0xFE,0xFD,0xFB,0xF7};
unsignedcharcodestart_line[]={"password:
"};
unsignedcharcodename[]={"===CodedLock==="};
unsignedcharcodeCorrect[]={"correct"};
unsignedcharcodeError[]={"error"};
unsignedcharcodecodepass[]={"pass"};
unsignedcharcodeLockOpen[]={"open"};
unsignedcharcodeSetNew[]={"SetNewWordEnable"};
unsignedcharcodeInput[]={"input:
"};
unsignedcharcodeResetOK[]={"ResetPasswordOK"};
unsignedcharcodeinitword[]={"Initpassword..."};
unsignedcharcodeEr_try[]={"error,tryagain!
"};
unsignedcharcodeagain[]={"inputagain"};
unsignedcharInputData[6];
unsignedcharCurrentPassword[6]={1,3,1,4,2,0};
unsignedcharTempPassword[6];
unsignedcharN=0;
unsignedcharErrorCont;
unsignedcharCorrectCont;
unsignedcharReInputCont;
unsignedcharcodeinitpassword[6]={0,0,0,0,0,0};
voidDelay5Ms(void)
{
unsignedintTempCyc=5552;
while(TempCyc--);
}
voidDelay400Ms(void)
{
unsignedcharTempCycA=5;
unsignedintTempCycB;
while(TempCycA--)
{
TempCycB=7269;
while(TempCycB--);
}
}
voidmDelay(uintt)
{
uchari;
while(t--)
{
for(i=0;i<125;i++)
{;}
}
}
voidNop(void)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
voidStart(void)
{
Sda=1;
Scl=1;
Nop();
Sda=0;
Nop();
}
voidStop(void)
{
Sda=0;
Scl=1;
Nop();
Sda=1;
Nop();
}
voidAck(void)
{
Sda=0;
Nop();
Scl=1;
Nop();
Scl=0;
}
voidNoAck(void)
{
Sda=1;
Nop();
Scl=1;
Nop();
Scl=0;
}
voidSend(ucharData)
{
ucharBitCounter=8;
uchartemp;
do
{
temp=Data;
Scl=0;
Nop();
if((temp&0x80)==0x80)
Sda=1;
else
Sda=0;
Scl=1;
temp=Data<<1;
Data=temp;
BitCounter--;
}
while(BitCounter);
Scl=0;
}
ucharRead(void)
{
uchartemp=0;
uchartemp1=0;
ucharBitCounter=8;
Sda=1;
do
{
Scl=0;
Nop();
Scl=1;
Nop();
if(Sda)
temp=temp|0x01;
else
temp=temp&0xfe;
if(BitCounter-1)
{
temp1=temp<<1;
temp=temp1;
}
BitCounter--;
}
while(BitCounter);
return(temp);
}
voidWrToROM(ucharData[],ucharAddress,ucharNum)
{
uchari;
uchar*PData;
PData=Data;
for(i=0;i { Start(); Send(0xa0); Ack(); Send(Address+i); Ack(); Send(*(PData+i)); Ack(); Stop(); mDelay(20); } } voidRdFromROM(ucharData[],ucharAddress,ucharNum) { uchari; uchar*PData; PData=Data; for(i=0;i { Start(); Send(0xa0); Ack(); Send(Address+i); Ack(); Start(); Send(0xa1); Ack(); *(PData+i)=Read(); Scl=0; NoAck(); Stop(); } } #defineyi0x80 #defineer0x80+0x40 voiddelay(uintxms) { uintx,y; for(x=xms;x>0;x--) for(y=110;y>0;y--); } write_1602com(ucharcom) { lcd1602_rs=0; lcd1602_rw=0; P0=com; delay (1); lcd1602_en=1; delay (1); lcd1602_en=0; } write_1602dat(uchardat) { lcd1602_rs=1; lcd1602_rw=0; P0=dat; delay (1); lcd1602_en=1; delay (1); lcd1602_en=0; } voidlcd_init(void) { write_1602com(0x38); write_1602com(0x0c); write_1602com(0x06); write_1602com(0x01); } unsignedcharcoding(unsignedcharm) { unsignedchark; switch(m) { case(0x11): k=1;break; case(0x21): k=2;break; case(0x41): k=3;break; case(0x81): k='A';break; case(0x12): k=4;break; case(0x22): k=5;break; case(0x42): k=6;break; case(0x82): k='B';break; case(0x14): k=7;break; case(0x24): k=8;break; case(0x44): k=9;break; case(0x84): k='C';break; case(0x18): k='*';break; case(0x28): k=0;break; case(0x48): k='#';break; case(0x88): k='D';break; } return(k); } unsignedcharkeynum(void) { unsignedcharrow,col,i; P1=0xf0; if((P1&0xf0)! =0xf0) { Delay5Ms(); Delay5Ms(); if((P1&0xf0)! =0xf0) { row=P1^0xf0; i=0; P1=a[i]; while(i<4) { if((P1&0xf0)! =0xf0) { col=~(P1&0xff); break; } else { i++; P1=a[i]; } } } else { return0; } while((P1&0xf0)! =0xf0); return(row|col); } elsereturn0; } voidOneAlam(void) { ALAM=0; Delay5Ms(); ALAM=1; } voidTwoAlam(void) { ALAM=0; Delay5Ms(); ALAM=1; Delay5Ms(); ALAM=0; Delay5Ms(); ALAM=1; } voidThreeAlam(void) { ALAM=0; Delay5Ms(); ALAM=1; Delay5Ms(); ALAM=0; Delay5Ms(); ALAM=1; Delay5Ms(); ALAM=0; Delay5Ms(); ALAM=1; } voidDisplayOne(void) { DisplayOneChar(9+N,1,'*'); write_1602com(yi+5+N); write_1602dat('*'); } voidDisplayChar(void) { unsignedchari; if(pass==1) { write_1602com(er); for(i=0;i<16;i++) { write_1602dat(LockOpen[i]); } } else { if(N==0) { write_1602com(er); for(i=0;i<16;i++) { write_1602dat(Error[i]); } } else { write_1602com(er); for(i=0;i<16;i++) { write_1602dat(start_line[i]); } } } } voidDisplayInput(void) { unsignedchari; if(CorrectCont==1) { write_1602com(er); for(i=0;i<16;i++) { write_1602dat(Input[i]); } } } voidResetPassword(void) { unsignedchari; unsignedcharj; if(pass==0) { pass=0; DisplayChar(); ThreeAlam(); } else { if(ReInputEn==1) { if(N==6) { ReInputCont++; if(ReInputCont==2) { for(i=0;i<6;) { if(TempPassword[i]==InputData[i]) i++; else{ write_1602com(er); for(j=0;j<16;j++) { write_1602dat(Error[j]); } ThreeAlam(); pass=0; ReInputEn=0; ReInputCont=0; DisplayChar(); break; } } if(i==6) { write_1602com(er); for(j=0;j<16;j++) { write_1602dat(ResetOK[j]); } TwoAlam(); WrToROM(TempPassword,0,6); ReInputEn=0; } ReInputCont=0; CorrectCont=0; } else { OneAlam(); write_1602com(er); for(j=0;j<16;j++) { write_1602dat(again[j]); } for(i=0;i<6;i++) { TempPassword[i]=InputData[i]; } } N=0; } } } } voidAlam_KeyUnable(void) { P1=0x00; { ALAM=~ALAM; Delay5Ms(); } } /voidCancel(void) { unsignedchari; unsignedcharj; write_1602com(er); for(j=0;j<16;j++) { write_1602dat(start_line[j]); } TwoAlam(); for(i=0;i<6;i++) { InputData[i]=0; } KEY=1; ALAM=1; operation=0; pass=0; ReInputEn=0; ErrorCont=0; CorrectCont=0; ReInputCont=0; open_led=1; s3_keydown=0; key_disable=0; N=0; } voidEnsure(void) { unsignedchari,j; RdFromROM(CurrentPassword,0,6); if(N==6) { if(ReInputEn==0) { for(i=0;i<6;) { if(CurrentPassword[i]==InputData[i]) { i++; } else { ErrorCont++; if(ErrorCont==3) { write_1602com(er); for(i=0;i<16;i++) { write_1602dat(Error[i]); } do Alam_KeyUnable(); while (1); } else { TR0=1; key_disable=1; pass=0; break; } } } if(i==6) { CorrectCont++; if(CorrectCont==1) { //DisplayListChar(0,1,LockOpen); write_1602com(er); for(j=0;j<16;j++) { write_1602dat(LockOpen[j]); } TwoAlam(); KEY=0; pass=1;TR0=1;open_led=0; for(j=0;j<6;j++){ InputData[i]=0;} } else{ write_1602com(er); for(j=0;j<16;j++) { write_1602dat(SetNew[j]);} TwoAlam();ReInputEn=1; CorrectCont=0;} } else { if((InputData[0]==1)&&(InputData[1]==3)&&(InputData[2]==1)&&(InputData[3]==4)&&(InputData[4]==2)&&(InputData[5]==0)) { WrToROM(initpassword,0,6);write_1602com(er); for(j=0;j<16;j++) { write_1602dat(initword[j]); } TwoAlam(); Delay400Ms(); TwoAlam(); N=0;} else { write_1602com(er); for(j=0;j<16;j++) { write_1602dat(Error[j]); } ThreeAlam();pass=0; } } } else { write_1602com(er); for(j=0;j<16;j++) { write_1602dat(Er_try[j]); } ThreeAlam(); } } else {write_1602com(er); for(j=0;j<16;j++) { write_1602dat(Error[j]); } ThreeAlam(); pass=0; } N=0;/ operation=1; } voidmain(void) { unsignedcharKEY,NUM; unsignedchari,j; P1=0xFF; TMOD=0x11; TL0=0xB0; TH0=0x3C; EA=1; ET0=1; TR0=0; Delay400Ms(); lcd_init(); write_1602com(yi); for(i=0;i<16;i++) { write_1602dat(name[i]); } write_1602com(er); for(i=0;i<16;i++) { write_1602dat(start_line[i]); } write_1602com(er+9
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 修改 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)