最好的电子音响科技diy制作网站

haoDIY_音响电子电脑科技DIY小制作发明

当前位置: 主页 > 最新DIY >

指纹+红外遥控锁+红外钥匙 制作教程(2)

时间:2017-07-22 15:36来源:数码之家 作者:liuzxi 点击:
if(set3) { set3=0; closeLock(); } if(set4) { set4=0; clearFinger();//删除所有指纹 } if(set5) { set5= 0; chkBat(); openLock();//直接开锁 } IRopenLock(); } } /////////按钮扫描//////////// void btnScan(


                   if(set3)


                   {


                            set3=0;


                            closeLock();


                   }


                   if(set4)


                   {


                            set4=0;    


                            clearFinger();//删除所有指纹                                    


                   }


                   if(set5)
                   {
                            set5= 0;  
                            chkBat();  
                            openLock();//直接开锁  
                   }  
                   IRopenLock();  
         }
}

  

/////////按钮扫描////////////


void btnScan()
{
   count++;

         if(count==10)

         {

               count=0;

                   if(btnOut==0)Delay(50);   //消抖

                   while(btnOut==0&&B_IR_Press==0)       //是外部按键 并且不是红外按键

                   {

                            btnPressSum++;

                            Delay(10);

                            if(btnPressSum>200)

                            {
                                     break;  
                            }
                   }
  
                   if(btnPressSum>200)

                   {  
                            set3=1;
                   }

                   elseif(btnPressSum>10)

                   {

                            set1=1;

                   }

                   btnPressSum=0;

                   if(btnIn==0)Delay(50);

                   while(btnIn==0)

                   {

                            btnPressSum++;

                            Delay(10);

                            if(btnPressSum>200)

                            {
                                     break;

                            }
                   }
  
                   if(btnPressSum>200)

                   {
                            set3=1;

                   }

                   elseif(btnPressSum>10)

                   {  
                            set5=1;

                   }

                   btnPressSum=0;

                   if(btnSet==0)Delay(50);

                   while(btnSet==0)

                   {


                            btnPressSum++;


                            Delay(10);


                            if(btnPressSum>200)


                            {


                                     break;


                            }        


                   }


                   if(btnPressSum>200)


                   {


                            set4=1;


                   }


                   elseif(btnPressSum>50)


                   {


                            set2=1;


                   }


                   btnPressSum=0;      


     }


}





void openLock()


{


         buzz(123);t=0;


         open= 1;close=0 ; LedG = 1;


         Delay(500);                                                     //避开启动电流


         do


         {


                   if(t>48000)break;         //如果6秒还未检测到电机堵转 停电机


                   current= FliterADC(CurrPin);


//               putbyte(current);                        ADC  电机电流


         }while (current<MAX);


         open= 0; LedG = 0; locked = 0;


         buzz(123);


         Delay(2000);


         close= 1;


         Delay(300);//回锁舌


         close= 0;


}


void fingerOpenLock()


{


         //current=0;


         LedR=1;             t=0;


         if(指纹验证通过()==1)     //


         {


                   openLock();


         }


         else


         {        


                   buzz(4);


         }


         LedR=0;  


}





void closeLock()


{


         t=0;


         if(!locked)


         {


                   locked=1;


                   close=1;open=0;LedG=1;


                   buzz(321);


                   Delay(500);


         do


         {


                   if(t>48000)break;  


                   current= FliterADC(CurrPin);


                   //      putbyte(current);                        //ADC  电机电流


         }while (current<MAX);


                   close=0;LedG=0;              


         }


         buzz(321);


}








void getFinger()   //录入指纹


{


         LedR=1;    


         j=0;t=0;     //耗时长的操作,定时器清零,避免1分钟后休眠





         if(Num==0)                                             //如果指纹库为空,直接录入指纹


         {


                   master=1;


         }


         else


         {


                    chkMaster();


         }        


         if(master)                     //管理员


         {


                   LedG=1;


                   master=0;


                   j=0;            


                   while(j<5)


                   {


                            if(写入指纹==1)


                            {


                                     j++;


                                     Num++;


                                     buzz(3);                                


                            }


             }


                   if(写入指纹==1);


                   {





                            buzz(321);


                   }        


         }


         LedG=0;LedR=0;                                          


}


void clearFinger()        //清除所有指纹


{


         LedR=1;j=0;


         buzz(1);buzz(1);buzz(1);buzz(1);buzz(1);buzz(1);  //清指纹提醒


         chkMaster();


         if(master)


         {


                   LedG=1;


                   master=0;


                   if((清空指纹))  // 清空指纹


                   {


                            buzz(3);            


                   }


                   else


                   {


                            buzz(1);    


                   }        


         }


         LedG=0;LedR=0;


}





void chkMaster()        //验证管理员


{


         while(!master)


         {


                   if(j==5)


                   {


                            //LedG=1;LedR=1;


                            buzz(4);


                            break;


                   }


                   if(管理员验证成功)  //管理员验证成功


                   {


                            master=1;


                            buzz(123);


                   }


                   else


                   {        


                            buzz(4);


                   }


                   j++;  


         }


}


void chkBat()    //检查电池电压


{


         P1ASF= 0x00;              


         //                          //带隙电压  5V 为0x40(64)   3.3V 为0x 5F       3.0v为0x68


         mcuV=FliterADC(0);


//      putbyte(mcuV);        


         if(      mcuV>0x5f )                                   //mcu工作电压=5*64/带隙电压测量值  


         {


                   buzz(4);buzz(4);buzz(4);buzz(4);buzz(4);buzz(4);


         }  


         else


         {


                   buzz(1);


         }





         P1ASF= 0x18;


          //电池电压经20K 10K分压 ,测量点电压为电池电压1/3 2s锂电放电下限为6.6v ,分压后为2.2v


          //电池电压通道ADC的结果与mcu工作电压的关系   电池电压= mcu电压*adc测量值/256  


          //2.2v     时 adc/mcuv应>1.76


          batV= FliterADC(batVPin);


          batV=batV*100/mcuV;


//             putbyte(batV);


         if(batV<BatLow)                                  





         { (责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
相关文章
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容