| RSS
深圳电器感厂家
您当前的位置:电感器制造商 > 新闻中心

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

来源:    作者:     发布时间:2015-04-15 17:32:09     点击数:

{P0=led_seg_code[show_val[0]];
P2=0xdf;
delay(500);
P0=led_seg_code[show_val[1]];
P2=0xef;
delay(500);
P0=led_seg_code[show_val[2]];
P2=0xf7;
delay(500);
P0=led_seg_code[show_val[3]];
P2=0xfb;
delay(500);
P0=led_seg_code[show_v电感量al[4]];
P2=0xfd;
delay(500);
P0=led_seg_code[show_val[5]];
P2=0xfe;
delay(500);
}
//--------定时器T1中断服务程序-----------------
void timer1() interrupt 3 //T1中断
{ T1_cnt++;
if(T1_cnt>3999) //如果计数>3999, 计时1s
{ T1_cnt=0;
switch (cnt_state)
{ case 0: //待机塑封电感,需要计时5s
if(cnt_val_5s<5)
{ cnt_val_5s++;}
else
{ cnt_val_5s=0;
init_variant();//待机计时到5秒时,清除输入的内容
TR1=0; //停止计时
}
电感器厂家 break;
case 1://密码输入正确,需要计时4s
if(cnt_val_4s<4)
{ cnt_val_4s++;}
else
{ cnt_val_4s=0;
init_variant();//密码输入正确,计时到4秒时,清除输入的内容
open_lock=1; //已开锁信号清零
relay_open=1; //开锁信号清零
cnt_state=0;
TR1=0; //停止计时
}
break;
case 2: //密码输入错误3次,计时15s
if(cnt_val_15s<15)
{ cnt_val_15s++;}
else
{ cnt_val_15s=0;
init_variant();//三次密码错误时,计时15秒,清除输入的内容
open_lock=1; // 清除所有指示和报警
relay_open=1;
alarm_out=1;
pw_error=1;
cnt_state=0;
TR1=0; //停止计时
}
break;
}
}
}
//--------判断键盘输入内容与密码是否一致------
unsigned char check_input_pw()
{ unsigned char i,k;
k=1;
for(i=0;i<6;i++)
{ k=k && (show_val[i]==init_val[i]); }
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_p功率电感w())
{//密码正确
error_num=0; //密码输入错误次数清零
//---------
pw_error=1; //密码错误指示灯灭
relay_open=0; //开锁驱动信号灯亮
open_lock=0; //已开锁信号灯亮
//---------
delay(50000); //两声短“滴”声
audio_out=0;
贴片电感 delay(50000);
audio_out=1;
delay(50000);
audio_out=0;
delay(50000);
audio_out=1;
//---------
cnt_state=1; //下一状态处于4秒计时的状态
TR0=1; //启动定时
}
else
{ if (error_num<2)
{error_num++; //输入错误次数小于3次时,没错一次error_num增一
pw_error=0; //密码错误指示灯亮
//-----------
delay(20000);//一声长“滴”声,提示错误
audio_out=0;
delay(60000);
audio_out=1;
//-----------
init_variant();//清除所有输入,等待下一次输入
}
else //输入错误次数超过3次
{ alarm_out=0; //报警灯亮
pw_error=0; //密码错误指示灯亮
error_num=0; //密码输入错误次数清零
//----------
audio_out=0; //长鸣声报警
delay(60000);
delay(60000);
delay(60000);
delay(60000);
delay(60000);
delay(60000);
delay(60000);
delay(60000);
delay(60000);
audio_out=1;
//-------------
TR1=1; //打开定时器计时
cnt_state=2; //下一状态处于15秒计时的状态
}
}
break;
case 7://取消键
init_variant();
break;
}
}
}
led_show();1

1.2位置检测电路设计 本文交流伺服电机中所采用的编码器为多摩川公司生产的型号为TS5668N21的17贴片电感厂位绝对式编码器,一般的做法是采用生产厂商提供的专用芯片进行数据处理,但该做法有一个缺

开关变换器的主要特点是功率开关管工作在开关状态下。开关变换器利用电感元件和电容元件的储能特性,随着功率开关管不停地导通与关断,使具有较大电压波动的直流电源能量断续地

在单片机系统中,常常用数码管(LED)做显示器。一般的显示器为4位或8位,即需要4个或8个LED。实现这种显示的方法比较多,也比较简单。但是,对于多个LED显示,就必须采取必要的措施才能实现。本文介绍


上一篇: 高亮度LED照明应用开发必需克服的技术挑战
下一篇:功率电感器
来顶一下
返回首页
返回首页
相关文章
推荐资讯
电感数字转换器
电感数字转换器
相关文章
栏目更新
栏目热门