专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

自己做的门禁系统3

作者:佚名   来源:本站原创   点击数:  更新时间:2011年06月13日   【字体:

   之前上传的所有门禁制作程序绝大部分为本人原创(只有I2C程序为网上收集本人更改),所有看到的人可以用来用作个人讨论,学习和研究。禁止完全使用或修改使用在以盈利为目的的商业用途。如有违反,本人保留一切权利。解释权归本人所有。 

  昨天晚上终于完成了按键操作,由于太晚没上传,大部分功能已经完成,一个简单(功能相对于专业门禁来说简单,制作对我来说相当复杂,但也是体现我的单片机和电子技术水平又有提高)的门禁可以使用了,目前的功能有:读卡开门,密码开门,加卡,删卡,更改密码,系统初始化。后期要加上:远程控制开门,加卡,删卡,监控等。下面是程序:
 

/*////////////////////////////////////
函数原型:void psw(void)
函数说明:密码写入EEPROM中
版本:V1.0.0
程序员:LIY12586
////////////////////////////////////*/
void psw(void)
{
   uchar a=0,b=2,c,d,x=0;
   timer=0;
   while(1)
   {      
         
         c=key();
         if(c==12)
            {            
               sound(1);
               break;
            }
         if(ex==1)
         {
            
            sound(1);
            ex=0;
             break;
         }   
            if(c!=0)
            {
               if(a<6)
               {
                  keybuff[a]=c;
                  a++;
                  if(a==6)sound(2);
               }
               else if(a>6,a<13)
               {
                  if(c!=keybuff[x])
                  {
                  
                     sound(20);
                     x=0;
                     a=0;
                     break;
                  }
                     a++;
                     x++;
               
                  if(a==12)
                  {
                     a=0;
                     x=0;
                     b=2;
                     for(d=0;d<6;d++)
                     {
                        wt24c(b,keybuff[d]);
                        ys100us(1000);
                        b++;
                     }
                     SEND(&keybuff[0]);
                     break;
                  }
               
                }
               
             }
      
         
       
      
   }
}
/*////////////////////////////////////
函数原型:bit keyscan(void)
函数说明:键盘操作扫描
版本:V1.0.0
程序员:LIY12586
////////////////////////////////////*/
bit keyscan(void)
{
   uchar a=1,c,d;
   scan=key();
   if(scan!=0)
   {
      
      if(scan!=11)
      {
         d=scan;
         timer=0;
         keybuff[0]=scan;
         scan=0;
         
         while(1)
         {
            if(d==12)
            {            
               sound(1);
               break;
            }
            
            c=key();
            if(c==12)
            {            
               sound(1);
               break;
            }
            else if(ex==1)
            {
               
               sound(1);
               ex=0;
                break;
            }   
            else if(c!=0)
            {
               keybuff[a]=c;
               a++;
               if(a==6)
               {
                  a=0;
                  SEND(&keybuff[0]);
                  return 1;
                  break;
               }
            }
   
         }
      }
      
   }
   
   return 0;
}
/*////////////////////////////////////
函数原型:void password(void)
函数说明:确认密码
版本:V1.0.0
程序员:LIY12586
////////////////////////////////////*/
bit password(void)
{
   uchar a,b;
   if(keyscan())
   {
         b=2;
         for(a=0;a<6;a++)
         {
            if(keybuff[a]!=rd24c(b))
            {
            break;
            }
            b++;
            if(b==8)return 1;
         }
         if(b!=8)
         {   

            sound(5);
//            LED=0;
            return 0;
         }
      
         
   }
}

/*////////////////////////////////////
函数原型:void systeminit(void)
函数说明:系统初始化
版本:V1.0.0
程序员:LIY12586
////////////////////////////////////*/
void systeminit(void)
{
    uchar a;
      wt24c(0,0x02);
      ys100us(1000);
      wt24c(1,0xab);
      ys100us(1000);
      wt24c(2,0x01);
      ys100us(1000);
      wt24c(3,0x02);
      ys100us(1000);
      wt24c(4,0x03);
      ys100us(1000);
      wt24c(5,0x04);
      ys100us(1000);
      wt24c(6,0x05);
      ys100us(1000);
      wt24c(7,0x06);
      ys100us(1000);
      
   for(a=8;a<128;a++)
   {
      if(rd24c(a)!=0xff)
      {
         //ysms(100)
         wt24c(a,0xff);
         ys100us(1000);
      }
      
   }
   sound(5);
}
关闭窗口

相关文章