• 大小: 305KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: 其他
  • 标签:

资源简介

用stc89c51清翔单片机实现的密码锁功能(编程软件keil4),附原理图,如果有一样的开发板的小伙伴可直接烧录使用,没有的话也没关系,内附有proteus7.8仿真(后缀为.DSN),希望能给你带来帮助

资源截图

代码片段和文件信息

#include
#include 
#define uchar unsigned char
#define uint unsigned int

uchar old1old2old3old4old5old6old7old8; //原始密码000000
uchar new1new2new3new4new5new6new7new8;  //每次MCU采集到的密码输入
uchar lock[8]={1616161616161616}; //送入数码管显示的变量
uchar weikeytemp;

bit allowgenggaiokwanbiretryclosefuwei;  //各个状态位

sbit du=P2^6;
sbit we=P2^7;
sbit beep=P2^3;

unsigned char code leddata[]=
{0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f
0x6f0x770x7c0x390x5e0x790x710x000x40};

void delay(unsigned char i)
{
uchar jk;
  for(j=i;j>0;j--)
    for(k=114;k>0;k--);
}

void display(uchar *zhi)
{
uint aa =0xfeb;
uchar i;
for(i=0;i<8;i++)
{
b=zhi[i];
P0=0xff;
we = 1;
P0 = aa;
we = 0;
du = 1;
P0 = leddata[b];
du = 0;
delay(10);
aa=_crol_(aa1);
}
}




uchar KeyScan1() //带返回值的子函数
{
uchar cord_lcord_h;//声明列线和行线的值的储存变量
P3 = 0xf0;//1111 0000
if( (P3 & 0xf0) != 0xf0)//判断是否有按键按下
{
delay(5);//软件消抖
if( (P3 & 0xf0) != 0xf0)//判断是否有按键按下
{
  cord_l = P3 & 0xf0;// 储存列线值
  P3 = cord_l | 0x0f;
  cord_h = P3 & 0x0f;// 储存行线值
  while( (P3 & 0x0f) != 0x0f )
  {
temp=P3;
temp=temp&0xf0;
beep=0;
display(lock);
  }//松手检测 
   beep=1;
  return (cord_l + cord_h);//返回键值码
}
}
}
void keyscan()
{
switch(KeyScan1())
{
//第一行键值码
case 0xee:key=7;wei++; break;
case 0xde:key=8;wei++; break;
case 0xbe:key=9;wei++; break;
case 0x7e:genggai=1;wei=0;  break;

//第二行键值码
case 0xed:key=4;wei++;      break;
case 0xdd:key=5;wei++;     break;   
case 0xbd:key=6;wei++;     break;
case 0x7d:if(allow)ok=1; break;

//第三行键值码
case 0xeb:key=1;wei++; break;
case 0xdb:key=2;wei++; break;
case 0xbb:key=3;wei++; break;
case 0x7b:close=1;break;  

//第四行键值码
case 0xe7:break;
case 0xd7:key=0;wei++; break;   
case 0xb7:retry=1;break;
case 0x77:fuwei=1;break;

}
}

void shumima() //对按键采集来的数据进行分配
{
if(!wanbi)
{
switch(wei)
{
case 1:new1=key; 
    if(!allow) lock[0]=key;
   else lock[0]=key; break;
case 2:new2=key;
if(lock[0]==17) lock[1]=key;
else lock[1]=key; break;
case 3:new3=key; 
if(lock[0]==17) lock[2]=key;
else lock[2]=key; break;
case 4:new4=key;
if(lock[0]==17) lock[3]=key;
else lock[3]=key; break;
case 5:new5=key; 
if(lock[0]==17) lock[4]=key;
else lock[4]=key; break;
case 6:new6=key; 
if(lock[0]==17) lock[5]=key;
else lock[5]=key; break;
case 7:new6=key; 
if(lock[0]==17) lock[6]=key;
else lock[6]=key; break;
case 8:new6=key; 
if(lock[0]==17) lock[7]=key;
else lock[7]=key;
wanbi=1; break;
}
}
}

void yanzheng()   //验证密码是否正确
{
if(wanbi)  //只有当八位密码均输入完毕后方进行验证
{
if((new1==old1)&&(new2==old2)&&(new3==old3)&&(new4==old4)&&(new5==old5)&&(new6==old6)&&(new7==old7)&&(new8==old8))
allow=1; //当输入的密码正

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     158280  2019-07-01 11:59  lock\lock\Backup Of LED.DBK

     文件       5620  2019-07-01 21:10  lock\lock\calculate.lst

     文件       8086  2019-07-01 21:10  lock\lock\calculate.obj

     文件       1658  2019-07-01 21:10  lock\lock\inc\calculate.c

     文件        221  2019-07-01 20:23  lock\lock\inc\init.c

     文件          0  2019-07-01 19:13  lock\lock\inc\key.c

     文件          0  2019-07-01 19:13  lock\lock\inc\shumaguan.c

     文件       1298  2019-07-01 21:10  lock\lock\init.lst

     文件       1239  2019-07-01 21:10  lock\lock\init.obj

     文件        887  2019-07-01 21:10  lock\lock\key.lst

     文件        281  2019-07-01 21:10  lock\lock\key.obj

     文件     212819  2019-07-01 19:27  lock\lock\Last Loaded LED.DBK

     文件      10735  2019-07-02 10:11  lock\lock\led

     文件       5030  2019-07-02 10:11  lock\lock\led.c

     文件     212819  2019-07-01 21:11  lock\lock\LED.DSN

     文件       3028  2019-07-02 10:11  lock\lock\led.hex

     文件         38  2019-07-02 10:11  lock\lock\led.lnp

     文件      12207  2019-07-02 10:11  lock\lock\led.LST

     文件      13467  2019-07-02 10:11  lock\lock\led.M51

     文件      13455  2019-07-02 10:11  lock\lock\led.OBJ

     文件        183  2020-02-03 11:31  lock\lock\led.plg

     文件        768  2020-03-14 20:58  lock\lock\LED.PWI

     文件      71202  2019-07-01 14:03  lock\lock\led.uvgui.lenovo

     文件      70063  2020-02-03 11:32  lock\lock\led.uvopt

     文件      13233  2019-07-02 09:54  lock\lock\led.uvproj

     文件      70360  2019-07-02 10:13  lock\lock\led_uvopt.bak

     文件      13739  2019-07-01 21:12  lock\lock\led_uvproj.bak

     文件        923  2019-07-01 19:53  lock\lock\shumaguan.lst

     文件        347  2019-07-01 19:53  lock\lock\shumaguan.obj

     文件        496  2019-07-01 20:32  lock\lock\src\calculate.h

............此处省略12个文件信息

评论

共有 条评论

相关资源