void querengg(char shuru[]) /// 显示输入之后的密码 ffdf {
int i,j,m;
for(j=0;j<7;j++) {
for(i=0;i<4;i++) {
m=shuru[i]; outp(IOC1,cs[i]); outp(IOA1,num1[m]); outp(IOB1,num2[m]); delay(1); }
} }
int panduan1(char shuru[],char mima[])//判断开锁 I为1,可以更改密码 I为0不允许更改密码
{ int i;
if(shuru[0]==mima[0]&&shuru[1]==mima[1]&&shuru[2]==mima[2]&&shuru[3]==mima[3]) //判断输入的密码和更改的密码是否一样
{
yes(); i=1; }
else
24
{
err();
i=0; } return i; }
int panduan2(char shuru[],char mima[],int t)//判断错误超过6次,警报 t为错误密码次数
{
if(shuru[0]==mima[0]&&shuru[1]==mima[1]&&shuru[2]==mima[2]&&shuru[3]==mima[3]) //判断输入的密码和更改的密码是否一样
{
yes(); t=0;
} else {
err();
t++; } return t; }
//////////////////////////////
void main(void)
25
{
int i1=0,i2=1,i3=2,i4=3; int s1=0,s2=1,s3=2,s4=3;
int r=1; //变量R非常重要,只有当R=1时,才可以修改密码,初始化密码,在判断密码中,会返回一个R,得知R=1or0. !!亮点
int t=0;
char mima[100]={0,0,0,0}; //这两个数组是亮点 char shuru[100]={0,0,0,0}; char tmp;
int c1=0; //更改密码的led位置!!亮点 int c2=0; //输入密码的led位置
fun82551(); fun82552();
while(1) {
tmp=inp(IOA2);
if(tmp==0xfffC&&r==1) 0000
{
26
// 显示
chushihua(r); mima[0]=0; mima[1]=0; mima[2]=0; mima[3]=0; }
if(tmp==0xffbd&&r==1) 密码 r=1时才能更改密码
{
mima[i1]=genggaimima(); c1=huanwei(c1); mima[i2]=change(c1); c1=huanwei(c1); mima[i3]=change(c1); c1=huanwei(c1); mima[i4]=change(c1); c1=0; int i,j,m;
for(j=0;j<25;j++) {
for(i=0;i<4;i++) {
m=mima[i]; outp(IOC1,cs[i]); outp(IOA1,num1[m]);
27
// 按更改密码开始改
outp(IOB1,num2[m]); delay(1);
}
} }
if(tmp==0xffdd) // {
querengg(shuru); }
if(tmp==0x7d) // {
shuru[s1]=shurumima(); c2=huanwei(c2); shuru[s2]=change(c2); c2=huanwei(c2); shuru[s3]=change(c2); c2=huanwei(c2); shuru[s4]=change(c2); c2=0; }
确认输入 重新输入输入密码28