资源简介
用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个文件信息
- 上一篇:三调符号库.rar
- 下一篇:qt_opengl_obj.zip
评论
共有 条评论