已经调试,资料全面
成品手机APK控制界面
部分电路图
程序部分
按键功能子程序: void Check_key(void) {unsigned int row,col,tmp1,tmp2; tmp1=0x10; // tmp1用来设置 P1口的输出,取反后使 P1.1~P1.7中有 一个为0 for(row=0;row<4;row++) //行检测 {P1=0x0f; //先将p1.0~p1.3置高 P1=~tmp1 ; //使p1.4~p1.7中有一个为 0 tmp1*=2 ; //tmp1左移一位 if((P1&0x0f)<0x0f) //检测 p1.0~p1.3中是否有一位为 0 {DelayMs (30); if((P1&0x0f)<0x0f) //检测p1.0~p1.3中是否有一位为 0, 只要有说明此行有按键按下,进入列检测 {tmp2=0x01; //tmp2用来检测哪一列为 0 for(col=0;col<4;col++) // 列检测 {if((P1&tmp2)==0x00) //该列如果为低电平则可以判定为列 {key_val=row*4+col; //获取键值,识别按键 while((P1&tmp2)==0x00); return; } //退出循环 tmp2*=2; } //tmp2左移一位 while((P1&tmp2)==0x00)}}}}
密码设置:按下设置键,输入旧密码,如果密码错累计输入错误三次,进行报警。如果输入正确,进行密码修改。确认后再次输入新密码,两次输入一样,则修改成功。如果两次输入的不一样,则修改失败,重新返回。 密码设置子程序: 序
if((sk[11]==1)&(cp[0]==0))
{GotoXY(0,0); print("old code:"); // 提示输入旧密码
pass=1;count1=0;count=0;
count7=1;count2=1;count6=0;sk[11]==0;}
if((count!=0)&(pass==1)&(cp[0]==0))
{pass0=0; //输出显示*
if(count==1){GotoXY(0,0); print("old code:*");}
if((count!=0)&(pass0==1)&(cp[0]==0))
{pass=0;
if(count==1){GotoXY(0,0); print("new code:*");}
if((sk[14]==1)&(count7==1)) //按键盘认键,校验旧密码
{ //旧密码输入正确
if((password[0]==cq[0])&(password[1]==cq[1])&(password[2]==cq[2])&(passw
ord[3]==cq[3])&(password[4]==cq[4])&(password[5]==cq[5])&(pass==1)&(count>6)
{{GotoXY(0,0); print("new code:");
pass0=1;pass=0;
sk[14]=0;count=0;count7=0;
n=0;m=0;}
else
{GotoXY(0,0); print("old code wrong"); //旧密码输入错误
sk[14]=0;
count2=0;count7=0;
pass=0;m=0;}}
if(pa!=10)&(pass0==1)
{co[n]=pa;n++;pa=10;}}
if(sk[14]==1)
{if((n>7)&(count==6))
{GotoXY(0,0); print("set over!"); //旧密码输入正确,存新密码
}}
全部资料下载地址
|