单片机达人进。

2019-07-16 06:15发布

菜鸟想用单片机实现这样一个功能 在0-9的键盘上 依次输入指定的数字  使电路导通。 其实就是个非常简单的电子锁。 怎么实现啊? 求大虾帮忙 谢了!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
qazxxcccc
2019-07-16 13:23
//跳线设置:默认
//晶振11.0592
//四个独立按键代表密码1234 这四个数字,本例子所使用的密码是1234
//所以依次按下 INT0 ,T0,S4,S5这4个键后喇叭响起代表密码输入成功
//而按错顺序则无法验证通过密码喇叭不会响.
#include <AT89X51.H> //包含文件
void delay10ms(void) //延时函数
{
  unsigned char i,j;
  for(i=200;i>0;i--)    //用循环的方法延时
  for(j=103;j>0;j--);
}


void main(void)

{
unsigned char n,m1,m2,m3,m4;
P1_4=0;  //开led使能
P2_6=0;
P2_7=0;
P0_0=0;
n=1;
while(1)  //死循环
  {
    {if(P3_2==0)//以下3行是消除抖动
        {delay10ms(); //延时大约10毫秒
          if(P3_2==0)
            {
              while(P3_2==0); //松手检测,如果没有松手则一直循环
                            m1=n;
                n++;
            }
        }
     }
        //-------------------------------------------------------------
            {if(P3_4==0)//以下3行是消除抖动
        {delay10ms(); //延时大约10毫秒
          if(P3_4==0)
            {
              while(P3_4==0); //松手检测,如果没有松手则一直循环
                        m2=n;
                n++;
            }
        }
     }
        //-------------------------------------------------------------
            {if(P3_6==0)//以下3行是消除抖动
        {delay10ms(); //延时大约10毫秒
          if(P3_6==0)
            {
              while(P3_6==0); //松手检测,如果没有松手则一直循环
                        m3=n;
                n++;
            }
        }
     }
        //-------------------------------------------------------------
            {if(P3_7==0)//以下3行是消除抖动
        {delay10ms(); //延时大约10毫秒
          if(P3_7==0)
            {
              while(P3_7==0); //松手检测,如果没有松手则一直循环
                        m4=n;
                n++;
            }
        }
     }
        //-------------------------------------------------------------


        if (        (m1==1)&&(m2==2)&&(m3==3)&&(m4==4)        )        //验证密码
         {
          P2_2=0;
          n=1;
         }



        if (n==1)        //输入一个密码亮一个灯
     P0=0xff;
        if (n==2)
     P0=0x7f;
    if (n==3)
     P0=0x3f;
         if (n==4)
     P0=0x1f;
         if (n==5)
     P0=0x0f;
         if (n==6)
         {
      P0=0xFf; //输入4次密码后 如果错误则重新开始输入
           n=1;
          }





   }

}

一周热门 更多>