门禁电子密码锁说明书(5)

2020-02-22 12:09

seg_disp[5]=jm_disp[5]; seg_disp[6]=jm_disp[6]; seg_disp[7]=jm_disp[7]; } }

/**************** 控制函数 ****************/ void control() {

if(count==6) //6秒内没继续输入密码,返回常态 {

int i;

y=1; v=0; lock=0; for(i=0;i<8;i++) {

jm_disp[i]=0x00; mima[i]=0x00; } }

if(ms==4)

n2=n2-1; //控制继电器工作1s if(n2==0) {

OP=1; n2=50; ms=0; //关闭继电器 } }

/****************** 1毫秒延时函数 ********************/ void Delay1ms(int c) {

unsigned char a, b; for (;c>0;c--) { for (b=38;b>0;b--) { for (a=13;a>0;a--); } } }

/******************* 开机自检函数 *******************/ void check() {

c_led(); //自检led disp(); //自检数码管 while(x<16) {

21

}

sm_key(); //按键检测 }

Delay1ms(500); seg=0x00;

OP=0; //自检继电器 Delay1ms(500); OP=1;

y=1; //自检完成,进入常态

/**************** 开机自检led子函数 ******************/ void c_led() {

unsigned char b; int bb=0; b=0x01;

while(bb<8) //逐个移动点亮led { P0=b; Delay1ms(500); b=b<<1; bb++; } }

/**************** 按键检测函数 *****************/ void sm_key() {

int i=0,j; uchar a,b,c,k; key=0x0f; lb[4]=lb[3]; lb[3]=lb[2]; lb[2]=lb[1]; lb[1]=lb[0];

lb[0]=key; //滚动滤波存储 for(j=0;j<4;j++) { if(lb[j]!=lb[j+1])

return; //5次值不等,退出函数 k=lb[j+1]; //相等,当前稳定值暂存k } pd[1]=pd[0]; //前一次稳定值存入pd[1] pd[0]=k; 当前稳定值存入pd[0] if((pd[1]==0x0f)&&(pd[0]!=0x0f)) //pd[1]为0x0f且pd[0]不为0x0f则按键按下 {

22

key=0x0f; a=key&0x0f; key=0xf0; b=key&0xf0; c=a|b; //线反转后得到按键状态值 while(c!=key_code[i]) i++; //查找第几个按键按下 keyvalue=i; //得到键值 if(y==0) //刚启动模式下检测键盘 {

seg=sdm[keyvalue]; x++; return; }

switch(keyvalue) //查找按键功能 {

case(0):k0(); break; case(1):k1(); break; case(2):k2(); break; case(3):k3(); break; case(4):k4(); break; case(5):k5(); break; case(6):k6(); break; case(7):k7(); break; case(8):k8(); break; case(9):k9(); break; case(10):k10(); break; //case(11):k11(); break; case(12):k12(); break; case(13):k13(); break; case(14):k14(); break; case(15):k15(); break; } } }

/**************** k0按键功能函数 ******************/ void k0() {

if((ms==2&&y==3)&&v<6) {

mima[v]=0x01; jm_disp[v]=0x40; v=v+1; }

if((ms==3&&y==3)&&v<8) {

mima[v]=0x01;

23

jm_disp[v]=0x40; v=v+1; }

if((y==1||y==2)&&(ms==0&&lock<8)) {

y=2; w=1;

keyvalue=keyvalue+1; lock=lock+1; count=0; }

if((ms==1&&y==1)&&v<8) {

keyvalue=keyvalue+1; seg_disp[v]=sdm[keyvalue]; if(v==1||v==4) v=v+2; else v=v+1; } }

/**************** k1按键功能函数 ******************/ void k1() {

if((ms==2&&y==3)&&v<6) { mima[v]=0x02; jm_disp[v]=0x40; v=v+1; }

if((ms==3&&y==3)&&v<8) {

mima[v]=0x02; jm_disp[v]=0x40; v=v+1; }

if((y==1||y==2)&&(ms==0&&lock<8)) {

y=2; w=1;

keyvalue=keyvalue+1; lock=lock+1; count=0; }

if((ms==1&&y==1)&&v<8) {

keyvalue=keyvalue+1; seg_disp[v]=sdm[keyvalue];

24

if(v==1||v==4) v=v+2; else v=v+1; } }

/**************** k2按键功能函数 ******************/ void k2() {

if((ms==2&&y==3)&&v<6) { mima[v]=0x03; jm_disp[v]=0x40; v=v+1; }

if((ms==3&&y==3)&&v<8) {

mima[v]=0x03; jm_disp[v]=0x40; v=v+1; }

if((y==1||y==2)&&(ms==0&&lock<8)) {

y=2; w=1;

keyvalue=keyvalue+1; lock=lock+1; count=0; }

if((ms==1&&y==1)&&v<8) {

if(v==0) return;

keyvalue=keyvalue+1; seg_disp[v]=sdm[keyvalue]; if(v==1||v==4) v=v+2; else v=v+1; } }

/**************** k3按键功能函数 ******************/ void k3() //修改用户密码按键 {

if(y==3&&ms!=3) //管理员模式下修改用户密码 ms=2;

25


门禁电子密码锁说明书(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:洛阳牡丹通讯股份有限公司生产实习方案2015

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: