标题:
可设定新密码的单片机密码锁proteus仿真设计 带源程序
[打印本页]
作者:
51黑ff
时间:
2016-9-27 12:28
标题:
可设定新密码的单片机密码锁proteus仿真设计 带源程序
0.png
(26.38 KB, 下载次数: 45)
下载附件
2016-9-27 12:25 上传
0.png
(67.88 KB, 下载次数: 54)
下载附件
2016-9-27 12:26 上传
这是一个可以设定新密码的单片机电子密码锁设计
所有资料下载:
密码锁程序设计.rar
(61.02 KB, 下载次数: 21)
2016-9-27 12:28 上传
点击文件名下载附件
下载积分: 黑币 -5
密码锁源程序:
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char //宏定义
uchar code LEDData[] ={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,0xff,0xBF}; //共阳数码管
sbit weixuan1 = P2 ^ 7; //数码管位选定义
sbit weixuan2 = P2 ^ 6;
sbit weixuan3 = P2 ^ 5;
sbit weixuan4 = P2 ^ 4;
//sbit hongse = P2 ^ 2;
//sbit lvse = P2 ^ 1;
//sbit lanse = P2 ^ 0;
sbit K7 = P1 ^ 0; //按键
sbit K8 = P1 ^ 1;
sbit K9 = P1 ^ 2;
sbit K4 = P1 ^ 3;
sbit K5 = P1 ^ 4;
sbit K6 = P1 ^ 5;
sbit K1 = P1 ^ 6;
sbit K2 = P1 ^ 7;
sbit K3 = P3 ^ 0;
sbit K0 = P3 ^ 1;
sbit K10 = P3 ^ 2;
sbit K11 = P3 ^ 3;
int a, b, c, d, moshi = 0, jishu = 0;
uint mi[4] = {1, 2, 3, 4};
uint ma[4] = {10, 10, 10, 10};
/*****延时子程序*****/
void Delay(uint i)
{
while( i-- );
}
void qudou(void) //去抖延迟
{
int i;
for(i = 0; i < 2400; i++);
}
/*****显示温度子程序*****/
void xianshi()
{
weixuan1 = 0;
weixuan2 = 0;
weixuan3 = 0;
weixuan4 = 0;
P0 = LEDData[a];
weixuan1 = 1;
weixuan2 = 0;
weixuan3 = 0;
weixuan4 = 0;
Delay(300);
weixuan1 = 0;
weixuan2 = 0;
weixuan3 = 0;
weixuan4 = 0;
P0 = LEDData[b];
weixuan1 = 0;
weixuan2 = 1;
weixuan3 = 0;
weixuan4 = 0;
Delay(300);
weixuan1 = 0;
weixuan2 = 0;
weixuan3 = 0;
weixuan4 = 0;
P0 = LEDData[c];
weixuan1 = 0;
weixuan2 = 0;
weixuan3 = 1;
weixuan4 = 0;
Delay(300);
weixuan1 = 0;
weixuan2 = 0;
weixuan3 = 0;
weixuan4 = 0;
P0 = LEDData[d];
weixuan1 = 0;
weixuan2 = 0;
weixuan3 = 0;
weixuan4 = 1;
Delay(300);
}
void key_guan()
{
if (K0 == 0) //按键0按下
{
qudou();
if(K0 == 0)
{
jishu = 1;
ma[0] = 0;
moshi = 1;
}
while(K0 == 0);
}
if (K1 == 0) //按键1按下
{
qudou();
if(K1 == 0)
{
jishu = 1;
ma[0] = 1;
moshi = 1;
}
while(K1 == 0);
}
if (K2 == 0) //按键2按下
{
qudou();
if(K2 == 0)
{
jishu = 1;
ma[0] = 2;
moshi = 1;
}
while(K2 == 0);
}
if (K3 == 0) //按键3按下
{
qudou();
if(K3 == 0)
{
jishu = 1;
ma[0] = 3;
moshi = 1;
}
while(K3 == 0);
}
if (K4 == 0) //按键4按下
{
qudou();
if(K4 == 0)
{
jishu = 1;
ma[0] = 4;
moshi = 1;
}
while(K4 == 0);
}
if (K5 == 0) //按键5按下
{
qudou();
if(K5 == 0)
{
jishu = 1;
ma[0] = 5;
moshi = 1;
}
while(K5 == 0);
}
if (K6 == 0) //按键6按下
{
qudou();
if(K6 == 0)
{
jishu = 1;
ma[0] = 6;
moshi = 1;
}
while(K6 == 0);
}
if (K7 == 0) //按键7按下
{
qudou();
if(K7 == 0)
{
jishu = 1;
ma[0] = 7;
moshi = 1;
}
while(K7 == 0);
}
if (K8 == 0) //按键8按下
{
qudou();
if(K8 == 0)
{
jishu = 1;
ma[0] = 8;
moshi = 1;
}
while(K8 == 0);
}
if (K9 == 0) //按键9按下
{
qudou();
if(K9 == 0)
{
jishu = 1;
ma[0] = 9;
moshi = 1;
}
while(K9 == 0);
}
}
void key_shuru()
{
if (K0 == 0) //按键0按下
{
qudou();
if(K0 == 0)
{
ma[jishu] = 0;
jishu++;
}
while(K0 == 0);
}
if (K1 == 0) //按键1按下
{
qudou();
if(K1 == 0)
{
ma[jishu] = 1;
jishu++;
}
while(K1 == 0);
}
if (K2 == 0) //按键2按下
{
qudou();
if(K2 == 0)
{
ma[jishu] = 2;
jishu++;
}
while(K2 == 0);
}
if (K3 == 0) //按键3按下
{
qudou();
if(K3 == 0)
{
ma[jishu] = 3;
jishu++;
}
while(K3 == 0);
}
if (K4 == 0) //按键4按下
{
qudou();
if(K4 == 0)
{
ma[jishu] = 4;
jishu++;
}
while(K4 == 0);
}
if (K5 == 0) //按键5按下
{
qudou();
if(K5 == 0)
{
ma[jishu] = 5;
jishu++;
}
while(K5 == 0);
}
if (K6 == 0) //按键6按下
{
qudou();
if(K6 == 0)
{
ma[jishu] = 6;
jishu++;
}
while(K6 == 0);
}
if (K7 == 0) //按键7按下
{
qudou();
if(K7 == 0)
{
ma[jishu] = 7;
jishu++;
}
while(K7 == 0);
}
if (K8 == 0) //按键8按下
{
qudou();
if(K8 == 0)
{
ma[jishu] = 8;
jishu++;
}
while(K8 == 0);
}
if (K9 == 0) //按键9按下
{
qudou();
if(K9 == 0)
{
ma[jishu] = 9;
jishu++;
}
while(K9 == 0);
}
}
void key_xinmima()
{
if (K0 == 0) //按键0按下
{
qudou();
if(K0 == 0)
{
ma[jishu] = 0;
jishu++;
}
while(K0 == 0);
}
if (K1 == 0) //按键1按下
{
qudou();
if(K1 == 0)
{
ma[jishu] = 1;
jishu++;
}
while(K1 == 0);
}
if (K2 == 0) //按键2按下
{
qudou();
if(K2 == 0)
{
ma[jishu] = 2;
jishu++;
}
while(K2 == 0);
}
if (K3 == 0) //按键3按下
{
qudou();
if(K3 == 0)
{
ma[jishu] = 3;
jishu++;
}
while(K3 == 0);
}
if (K4 == 0) //按键4按下
{
qudou();
if(K4 == 0)
{
ma[jishu] = 4;
jishu++;
}
while(K4 == 0);
}
if (K5 == 0) //按键5按下
{
qudou();
if(K5 == 0)
{
ma[jishu] = 5;
jishu++;
}
while(K5 == 0);
}
if (K6 == 0) //按键6按下
{
qudou();
if(K6 == 0)
{
ma[jishu] = 6;
jishu++;
}
while(K6 == 0);
}
if (K7 == 0) //按键7按下
{
qudou();
if(K7 == 0)
{
ma[jishu] = 7;
jishu++;
}
while(K7 == 0);
}
if (K8 == 0) //按键8按下
{
qudou();
if(K8 == 0)
{
ma[jishu] = 8;
jishu++;
}
while(K8 == 0);
}
if (K9 == 0) //按键9按下
{
qudou();
if(K9 == 0)
{
ma[jishu] = 9;
jishu++;
}
while(K9 == 0);
}
}
void guan()
{
// hongse = 0;
// lvse = 1;
// lanse = 1;
a = 11;
b = 11;
c = 11;
d = 11;
key_guan();
}
void shuru()
{
// hongse = 1;
// lvse = 1;
// lanse = 0;
switch(jishu)
{
case 1:
a = 10;
b = 10;
c = 10;
d = 11;
break;
case 2:
a = 10;
b = 10;
c = 11;
d = 11;
break;
case 3:
a = 10;
b = 11;
c = 11;
d = 11;
break;
case 4:
a = 11;
b = 11;
c = 11;
d = 11;
break;
}
if(jishu < 4)
key_shuru();
else
{
if (K10 == 0) //按键4按下
{
qudou();
if(K10 == 0)
{
if(mi[0] == ma[0])
if(mi[1] == ma[1])
if(mi[2] == ma[2])
if(mi[3] == ma[3])
{
moshi = 2;
jishu = 0;
ma[0] = 10;
ma[1] = 10;
ma[2] = 10;
ma[3] = 10;
}
else
{
moshi = 0;
jishu = 0;
ma[0] = 10;
ma[1] = 10;
ma[2] = 10;
ma[3] = 10;
}
else
{
moshi = 0;
jishu = 0;
ma[0] = 10;
ma[1] = 10;
ma[2] = 10;
ma[3] = 10;
}
else
{
moshi = 0;
jishu = 0;
ma[0] = 10;
ma[1] = 10;
ma[2] = 10;
ma[3] = 10;
}
else
{
moshi = 0;
jishu = 0;
ma[0] = 10;
ma[1] = 10;
ma[2] = 10;
ma[3] = 10;
}
}
while(K10 == 0);
}
}
}
void kai()
{
// hongse = 1;
// lvse = 0;
// lanse = 1;
a = 0;
b = 0;
c = 0;
d = 0;
if (K11 == 0) //按键9按下
{
qudou();
if(K11 == 0)
{
moshi = 3;
a = 10;
b = 10;
c = 10;
d = 10;
}
while(K11 == 0);
}
}
void xinmima()
{
// hongse = 0;
// lvse = 0;
// lanse = 0;
switch(jishu)
{
case 1:
a = 10;
b = 10;
c = 10;
d = ma[0];
break;
case 2:
a = 10;
b = 10;
c = ma[0];
d = ma[1];
break;
case 3:
a = 10;
b = ma[0];
c = ma[1];
d = ma[2];
break;
case 4:
a = ma[0];
b = ma[1];
c = ma[2];
d = ma[3];
break;
}
if(jishu < 4)
key_xinmima();
else
{
if (K11 == 0) //按键4按下
{
qudou();
if(K11 == 0)
{
mi[0] = ma[0];
ma[0] = 10;
mi[1] = ma[1];
ma[1] = 10;
mi[2] = ma[2];
ma[2] = 10;
mi[3] = ma[3];
ma[3] = 10;
jishu = 0;
moshi = 0;
}
while(K11 == 0);
}
}
}
void zhuangtai()
{
switch(moshi)
{
case 0:
guan();
break;
case 1:
shuru();
break;
case 2:
kai();
break;
case 3:
xinmima();
break;
}
}
/*****主函数*****/
void main(void)
{
while(1)
{
zhuangtai();
xianshi();
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1