单片机控制的密码锁设计(含电路图及源程序)

[09-11 23:01:38]   来源:http://www.88dzw.com  单片机学习   阅读:8782

文章摘要: return k;}//-主程序main(){ //初始化各变量audio_out=1; P3=0xff; cnt_val_15s=0; cnt_val_5s=0; cnt_val_4s=0; cnt_state=0; //0-待机计时5s状态;1-密码正确,计时4s状态 ;2-三次密码错误,处于计时15秒状态。 T1_cnt=0; error_num=0; key_val_old=255; init_variant(); //初始化51的寄存器 TMOD=0x20; //用T1计时 8位自动装载定时模式 TH1=0x19; //500微秒溢出一次; 250

单片机控制的密码锁设计(含电路图及源程序),标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com
  return k;
}
//---------主程序----------------
main()
{ //初始化各变量
audio_out=1;
 P3=0xff;
 cnt_val_15s=0;
 cnt_val_5s=0;
 cnt_val_4s=0;
 cnt_state=0; 
 //0-待机计时5s状态;1-密码正确,计时4s状态 ;2-三次密码错误,处于计时15秒状态。
 T1_cnt=0;
 error_num=0;
 key_val_old=255;
 init_variant();
 //初始化51的寄存器
 TMOD=0x20; //用T1计时 8位自动装载定时模式
 TH1=0x19;   //500微秒溢出一次;   250=(256-x)*12/11.0592 -> x=19
 TL1=0x19;
 EA=1;       //开中断
 ET1=1;
 TR1=0;      //开定时器T1
 while(1)
 { key_val=scan_key();  //按键输入,有键按下key_val为0-7,无键按下key_val为255。
   if (key_val!=key_val_old)
   { key_val_old=key_val;
     if (key_val!=255&& cnt_state!=2)
     { audio_out=0;
       delay(100);     //延时去抖动
       audio_out=1;
       switch (key_val)
       { case 0:
         case 1:
         case 2:
         case 3:
         case 4:
         case 5:
              if(key_index<6) //密码为6位,超过6位视为输入无效
              { show_val[key_index]=key_val;
                key_index++; }
              break;
         case 6: //确认键
              if(check_input_pw())
              {//密码正确
               error_num=0;  //密码输入错误次数清零
               //---------
               pw_error=1;   //密码错误指示灯灭            
               relay_open=0; //开锁驱动信号灯亮
               open_lock=0;  //已开锁信号灯亮
               //---------
               delay(50000); //两声短“滴”声
               audio_out=0;
               delay(50000);

上一页  [1] [2] [3] [4] [5] [6] [7]  下一页


Tag:单片机学习单片机开发,单片机原理,单片机教程单片机学习
分类导航
最新更新
热门排行