资源简介
基于51单片机的电子密码锁+仿真,欢迎大家下载参考,本人亲自调试的
代码片段和文件信息
#include
#include
sbit drive=P3^7;
unsigned char count=0pw[6]={101010101010}cipher[6]={654321}INT[6]={101010101010};
unsigned ssuper[7]= {1314520};
unsigned char code tab[]=\
{0xc00xf90xa40xb00x990x920x820xf80x800x90~0x400XFF~0x71~0x77~0x39~0x79~0x3E~0x30~0x78};
unsigned char Flag=0have;
unsigned int t=0;
unsigned char keypress();
void delay(unsigned int j);
void display(unsigned char *sx);
void button();
int main()
{
while(1)
button();
return 0;
}
void button()
{
unsigned char keyNumi=0k=0;
display(&pwcount);
if(!count)
{
if(++t==1000)t=0;
if((pw[5]==10 )&& (t<500))
pw[0]=11;
else if((pw[5]==10) && (t>500))
pw[0]=10;
}
keyNum=keypress(); if(keyNum==‘n‘)return;
if ((count<=5) && (keyNum!=10 && keyNum!=11 ))
{
have=pw[1];
pw[1]=pw[0];
pw[0]=keyNum;
INT[count++]=keyNum;
}
else
{
if (keyNum==10 && count)
{
if(count==1 || count==2)
{ pw[0]=pw[1];pw[1]=10;INT[--count]=10; }
else if(count>=3)
{ pw[0]=pw[1];pw[1]=INT[count-3];INT[--count]=10; }
}
else if (keyNum==11 && count==6)
{
if(INT[0]==cipher[0] && INT[1]==cipher[1] && INT[2]==cipher[2] \
&&INT[3]==cipher[3] && INT[4]==cipher[4] && INT[5]==cipher[5]) //face 对
{
y:drive=0;
pw[0]=12;pw[1]=13;pw[2]=14;pw[3]=15;
count=4;Flag=0;
}
else //fault 错
{
drive=1;
pw[0]=12;pw[1]=13; pw[2]=16;pw[3]=17; pw[4]=18;
count=5; Flag++;
}
while(keyNum!=10||Flag==3){
display(&pwcount);keyNum=keypress();
i=keyNum==‘n‘?0:keyNum==10?0:keyNum==11?0:1;
if(i && (Flag==3))
{
if(ssuper[k]==keyNum )
{ k++;if(k==6)goto y;
}
else k=0;
}
}
for(i=0;i<=5;i++)
INT[i]=pw[i]=10;count=0;drive=1;k=0;
}
}
}
void display(unsigned char *sx) //数码显示子函数
{
unsigned char wk=0x01;
if(x>=1)x-=1;
for (;s<=&pw+x;s++)
{
P0=tab[*s];
P2=wk;
delay(10); //30个机器周期
P2=0X00;
delay(5); //15个机器周期
wk=_crol_(wk1);
}
}
unsigned char keypress() //按键处理子函数
{
unsigned char abcnum=‘n‘;
P1=0xf0;
if (P1!=0xf0) //判断是否有按键按下
{
delay(50); //延时去抖 //300个机器周期
if (P1!=0xf0) //再次判断是否有按键按下
{
a=P1;
P1=0x0f; //列作输出,行作输入
b=P1; //读取行值并和列值合并
c=a|b; //num=c==0xee?1:c==0xde?2:c==0xbe?3:c==0xed?4:c==0xdd?5:c==0xeb?7:c==0xdb?8:c==0xbb?9:c==0xe7?0:c==0xd7?10:c==0xb7?11:‘n‘;
switch (c)
{
case 0xee:num=1; break;
case 0xde:num=2; break;
case 0xbe:num=3; break;
case 0xed:num=4; break;
case 0xdd:num=5; break;
case 0xbd:num=6; break;
case 0xeb:num=7; break;
case 0xdb:num=8; break;
case 0xbb:num=9; break;
case 0xe7:num=0; break;
case 0xd7:num=10; break;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-06-07 12:36 电子密码锁888\
文件 140720 2017-06-05 09:08 电子密码锁888\012.DSN
文件 1052 2017-06-05 09:08 电子密码锁888\012.PWI
文件 22235 2017-06-07 12:36 电子密码锁888\012.pdsprj
文件 872 2017-06-07 12:36 电子密码锁888\012.pdsprj.jyh.yh.workspace
文件 7121 2017-06-07 12:35 电子密码锁888\0526
文件 9296 2017-06-07 12:35 电子密码锁888\0526.LST
文件 9398 2017-06-07 12:35 电子密码锁888\0526.M51
文件 8743 2017-06-07 12:35 电子密码锁888\0526.OBJ
文件 3260 2017-06-07 12:35 电子密码锁888\0526.c
文件 2888 2017-06-07 12:35 电子密码锁888\0526.hex
文件 25 2017-06-07 12:35 电子密码锁888\0526.lnp
文件 18390 2017-06-07 12:37 电子密码锁888\0526.plg
文件 60596 2017-06-07 12:36 电子密码锁888\0526.uvopt
文件 13224 2017-05-27 07:50 电子密码锁888\0526.uvproj
文件 60596 2017-06-07 12:35 电子密码锁888\0526_uvopt.bak
文件 0 2017-05-26 17:04 电子密码锁888\0526_uvproj.bak
文件 22239 2017-06-07 12:36 电子密码锁888\Backup Of 012.pdsbak
文件 126664 2017-06-02 11:50 电子密码锁888\Last Loaded 012.DBK
相关资源
- 基于51单片机的直流电机PWM调速系统
- 智能小车-51单片机-红外避障基础版
- 基于51单片机的超声波避障小车AD原理
- 基于51单片机的篮球计分器论文.doc
- 51单片机GY906测量人体测温度,eeprom存
- wifi时钟.zip
- 51单片机控制电机代码
- 基于51单片机的充电桩设计
- 基于51单片机的智能充电器设计
- 基于51单片机的BMP180气压检测程序设计
- 基于51单片机的AD7705模块电压检测
- sht30 基于C51单片机的驱动程序,可能
- 步进电机c程序 针对51单片机 两相56线
- 基于51单片机&GPS;的导航系统设计含详
- 51单片机驱动74hc595去控制8位数码管
- 基于AT89C51单片机的温度自动监控系统
- 基于51单片机计算器课程设计
- C51单片机T9输入法
- 51单片机外部中断流水灯汇编语言
- 原创最全51单片机函数库 IO DAC Timer
- 51单片机lcd多级菜单
- 基于51单片机的GSM短信收发系统设计
- 基于51单片机的MPU6050程序
- 51单片机程序设计编程思路
- 51与adc0832 信号发生器 可产生正弦波
- 51单片机LCD160128驱动程序
- GPS语音导游
- 控制51单片机灯亮度渐变
- 基于51单片机电流电压采集
- 基于51单片机的篮球计分牌的设计
评论
共有 条评论