# include " intrins.h"
# include "key.h"
# include "lcd1602.h"
#include "string.h" //引用ASCLL码需要
sbit Key_1= P1^0;
sbit Key_2= P1^1;
sbit Key_3= P1^2;
sbit Key_4= P1^3;
sbit Key_5= P1^4;
sbit Key_6= P1^5;
sbit Key_7= P1^6;
sbit Key_8= P1^7;
bit f_key_volid=0;
bit f_key_hold= 0;
uchar KeyBuf;
uchar bKeyBuf;
uchar keydata3bak;
uchar KeyScanCnt;
uint KeyHoldCnt;
void KeyPrecess();
uchar BeepTimes=0;
sbit LED_lv = P3^3;
sbit LED_hong= P3^7;
/********************************************/
bit K_bit1=0;
bit K_bit2=0;
bit K_bit3=0;
bit K_bit4=0;
bit K_ok_bit=0;
bit K_x_bit=0;
bit K_xiugai_bit=0;
bit K_xiugai_bit1=0;
bit K_chanl_bit=0;
bit f_ok=0;
uchar K_xiugai=0;
uchar number_num=0;
uchar TAB[6] ;
uchar TAB1[6] ;
uchar TAB_yuan[6]={1,1,1,1,1,1 };
uchar TAB_yuan1[6]={1,1,1,1,1,1 };
uchar TAB_yuan2[6]={1,1,1,1,1,1 };
/*******************************************/
void KeyPrecess()
{
KeyBuf=0x00;
if(!Key_1) KeyBuf |=Obit0;
if(!Key_2) KeyBuf |=Obit1;
if(!Key_3) KeyBuf |=Obit2;
if(!Key_4) KeyBuf |=Obit3;
if(!Key_5) KeyBuf |=Obit4;
if(!Key_6) KeyBuf |=Obit5;
if(!Key_7) KeyBuf |=Obit6;
if(!Key_8) KeyBuf |=Obit7;
if (!KeyBuf)
{
f_key_volid= 0;
f_key_hold= 0;
KeyScanCnt = 10;//15
KeyHoldCnt = 0x00;
keydata3bak= 0;
}
else
{
if( f_key_volid==1 &&bKeyBuf == KeyBuf)
{
keyhold();
}
else
{
if(bKeyBuf == KeyBuf)
{
if(--KeyScanCnt == 0)
{
f_key_volid = 1;
keydata3bak=KeyBuf;
keydone();
}
else
{
}
}
else
{
bKeyBuf = KeyBuf;
f_key_volid= 0;
f_key_hold= 0;
KeyScanCnt = 10;//15
KeyHoldCnt = 0x00;
}
}
}
}
void keydone(void)
{
switch(KeyBuf)
{
case keydata1:
keyData1Sub();//
break;
case keydata2:
keyData2Sub();//
break;
case keydata3:
keyData3Sub();//
break;
case keydata4:
keyData4Sub();//
break;
case keydata5:
keyData5Sub();//
break;
case keydata6:
keyData6Sub();//
break;
case keydata7:
keyData7Sub();//
break;
case keydata8:
keyData8Sub();//
break;
}
}
void keyhold(void)
{
KeyHoldCnt++;
if(KeyHoldCnt == 25)//长按的时间可自己根据需要调整
{
}
else if( KeyHoldCnt > 25)
{
KeyHoldCnt = 30;
}
}
void keyData1Sub(void)//
{
if(K_xiugai_bit==1)
{
if(K_xiugai==0)
{
if(number_num<=5)
{
TAB_yuan1[number_num]=1;
}
else
{
TAB_yuan1[0]=0;
TAB_yuan1[1]=0;
TAB_yuan1[2]=0;
TAB_yuan1[3]=0;
TAB_yuan1[4]=0;
TAB_yuan1[5]=0;
}
}
else if(K_xiugai==1)
{
if(number_num<=5)
{
TAB_yuan2[number_num]=1;
}
else
{
TAB_yuan2[0]=0;
TAB_yuan2[1]=0;
TAB_yuan2[2]=0;
TAB_yuan2[3]=0;
TAB_yuan2[4]=0;
TAB_yuan2[5]=0;
}
}
}
else
{
if(K_xiugai_bit1==0)
{
if(number_num<=5)
{
TAB[number_num]=1;
}
else
{
TAB[0]=0;
TAB[1]=0;
TAB[2]=0;
TAB[3]=0;
TAB[4]=0;
TAB[5]=0;
}
}
else if(K_xiugai_bit1==1)
{
if(number_num<=5)
{
TAB1[number_num]=1;
}
else
{
TAB1[0]=0;
TAB1[1]=0;
TAB1[2]=0;
TAB1[3]=0;
TAB1[4]=0;
TAB1[5]=0;
}
}
}
number_num++;
}
void keyData2Sub(void)//
{
if(K_xiugai_bit==1)
{
if(K_xiugai==0)
{
if(number_num<=5)
{
TAB_yuan1[number_num]=2;
}
else
{
TAB_yuan1[0]=0;
TAB_yuan1[1]=0;
TAB_yuan1[2]=0;
TAB_yuan1[3]=0;
TAB_yuan1[4]=0;
TAB_yuan1[5]=0;
}
}
else if(K_xiugai==1)
{
if(number_num<=5)
{
TAB_yuan2[number_num]=2;
}
else
{
TAB_yuan2[0]=0;
TAB_yuan2[1]=0;
TAB_yuan2[2]=0;
TAB_yuan2[3]=0;
TAB_yuan2[4]=0;
TAB_yuan2[5]=0;
}
}
}
else
{
if(K_xiugai_bit1==0)
{
if(number_num<=5)
{
TAB[number_num]=2;
}
else
{
TAB[0]=0;
TAB[1]=0;
TAB[2]=0;
TAB[3]=0;
TAB[4]=0;
TAB[5]=0;
}
}
else if(K_xiugai_bit1==1)
{
if(number_num<=5)
{
TAB1[number_num]=2;
}
else
{
TAB1[0]=0;
TAB1[1]=0;
TAB1[2]=0;
TAB1[3]=0;
TAB1[4]=0;
TAB1[5]=0;
}
}
}
number_num++;
}
void keyData3Sub(void)//
{
if(K_xiugai_bit==1)
{
if(K_xiugai==0)
{
if(number_num<=5)
{
TAB_yuan1[number_num]=3;
}
else
{
TAB_yuan1[0]=0;
TAB_yuan1[1]=0;
TAB_yuan1[2]=0;
TAB_yuan1[3]=0;
TAB_yuan1[4]=0;
TAB_yuan1[5]=0;
}
}
else if(K_xiugai==1)
{
if(number_num<=5)
{
TAB_yuan2[number_num]=3;
}
else
{
TAB_yuan2[0]=0;
TAB_yuan2[1]=0;
TAB_yuan2[2]=0;
TAB_yuan2[3]=0;
TAB_yuan2[4]=0;
TAB_yuan2[5]=0;
}
}
}
else
{
if(K_xiugai_bit1==0)
{
if(number_num<=5)
{
TAB[number_num]=3;
}
else
{
TAB[0]=0;
TAB[1]=0;
TAB[2]=0;
TAB[3]=0;
TAB[4]=0;
TAB[5]=0;
}
}
else if(K_xiugai_bit1==1)
{
if(number_num<=5)
{
TAB1[number_num]=3;
}
else
{
TAB1[0]=0;
TAB1[1]=0;
TAB1[2]=0;
TAB1[3]=0;
TAB1[4]=0;
TAB1[5]=0;
}
}
}
number_num++;
}
void keyData4Sub(void)//
{
if(K_xiugai_bit==1)
{
if(K_xiugai==0)
{
if(number_num<=5)
{
TAB_yuan1[number_num]=4;
}
else
{
TAB_yuan1[0]=0;
TAB_yuan1[1]=0;
TAB_yuan1[2]=0;
TAB_yuan1[3]=0;
TAB_yuan1[4]=0;
TAB_yuan1[5]=0;
}
}
else if(K_xiugai==1)
{
if(number_num<=5)
{
TAB_yuan2[number_num]=4;
}
else
{
TAB_yuan2[0]=0;
TAB_yuan2[1]=0;
TAB_yuan2[2]=0;
TAB_yuan2[3]=0;
TAB_yuan2[4]=0;
TAB_yuan2[5]=0;
}
}
}
else
{
if(K_xiugai_bit1==0)
{
if(number_num<=5)
{
TAB[number_num]=4;
}
else
{
TAB[0]=0;
TAB[1]=0;
TAB[2]=0;
TAB[3]=0;
TAB[4]=0;
TAB[5]=0;
}
}
else if(K_xiugai_bit1==1)
{
if(number_num<=5)
{
TAB1[number_num]=4;
}
else
{
TAB1[0]=0;
TAB1[1]=0;
TAB1[2]=0;
TAB1[3]=0;
TAB1[4]=0;
TAB1[5]=0;
}
}
}
number_num++;
}
void keyData5Sub(void)//
{
K_ok_bit=1;
if(number_num==6)
{
if(K_xiugai_bit1==1)
{
if(TAB_yuan[0]==TAB1[0]&&TAB_yuan[1]==TAB1[1]&&TAB_yuan[2]==TAB1[2]&&TAB_yuan[3]==TAB1[3]&&TAB_yuan[4]==TAB1[4]&&TAB_yuan[5]==TAB1[5])
{
LED_hong=1;
LED_lv=0;
K_xiugai=0;
f_ok=1;
}
else
{
LED_hong=0;
LED_lv=1;
K_xiugai=0;
f_ok=0;
}
}
else if(K_xiugai_bit==1&&K_xiugai==1)
{
if(TAB_yuan1[0]==TAB_yuan2[0]&&TAB_yuan1[1]==TAB_yuan2[1]&&TAB_yuan1[2]==TAB_yuan2[2]&&TAB_yuan1[3]==TAB_yuan2[3]&&TAB_yuan1[4]==TAB_yuan2[4]&&TAB_yuan1[5]==TAB_yuan2[5])
{
LED_hong=1;
LED_lv=0;
K_xiugai=0;
TAB_yuan[0]=TAB_yuan1[0];
TAB_yuan[1]=TAB_yuan1[1];
TAB_yuan[2]=TAB_yuan1[2];
TAB_yuan[3]=TAB_yuan1[3];
TAB_yuan[4]=TAB_yuan1[4];
TAB_yuan[5]=TAB_yuan1[5];
}
else
{
LED_hong=0;
LED_lv=1;
K_xiugai=0;
BeepTimes=1;
}
}
else if(K_xiugai_bit==0)
{
if(TAB_yuan[0]==TAB[0]&&TAB_yuan[1]==TAB[1]&&TAB_yuan[2]==TAB[2]&&TAB_yuan[3]==TAB[3]&&TAB_yuan[4]==TAB[4]&&TAB_yuan[5]==TAB[5])
{
LED_hong=1;
LED_lv=0;
K_xiugai=0;
}
else
{
LED_hong=0;
LED_lv=1;
K_xiugai=0;
BeepTimes=1;
}
}
}
/******************************************/
if(K_xiugai==1)
{
K_xiugai_bit=0;
}
if(K_xiugai_bit==1)
{
K_xiugai=1;
}
else
{
K_xiugai_bit=0;
K_xiugai=0;
}
number_num=0;
K_xiugai_bit1=0;
}
void keyData6Sub(void)//
{
K_x_bit=1;
if(number_num>0)
{
number_num--;
}
}
void keyData7Sub(void)
mima.zip_hadk4v_mima6869_sumwj1_单片机 密码锁
版权申诉
47 浏览量
2022-09-25
00:09:14
上传
评论
收藏 119KB ZIP 举报
局外狗
- 粉丝: 65
- 资源: 1万+
最新资源
- 基于opencv的dnn模块实现Yolo-Fastest的目标检测python源码+模型+说明(高分项目).zip
- 使用Python调用微信本地ocr服务.zip
- 【精品推荐】人工智能在医疗中的应用.pptx
- 【精品推荐】电子医疗仪器人机接口-(1).ppt
- 【精品推荐】电子医疗仪器人机接口.ppt
- ubuntu镜像ubuntu镜像01
- 基于paddle搭建神经网络实现5种水果识别分类python源码+数据集(高分毕设).zip
- 【精品推荐】电子商务网店类型介绍.ppt
- 基于paddle搭建神经网络实现水果识别分类python源码+数据集(高分项目).zip
- 三菱plc编程口通信学习笔记.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈