2、短按设定按钮REG,听到提示音。
3、从门锁室外面板输入管理员密码。
4、按键板亮灯后输入原密码并按*号按键。
5、从门锁室外面板输入新密码(4-12位),然后按*键。
6、从门锁室外面板再次输入新密码,然后按*键完成新密码保存。
首先得说明我这个可是自己原创手打的,但是没去仿真了,程序可能有错误,你自己修改下吧#include<reg52.h>
typedef unsigned char uchar
typedef unsigned int uint
sbit key1=P0^0
sbit key2=P0^1
sbit key3=P0^2
sbit key4=P0^3
sbit wela=P2^0//位锁存端
#define SMG P1
sbit LED=P3^0//低电平亮
uchar code table[]={0x8d,0x86}//共阳数码管 P,E
uchar chushi_mima[]={2,1,3}
uchar shuru_mima[3]
uchar index//控制输入密码的位数
uchar flag_3s=0//3s标志位
uchar keydown//确定按键变量
#define times 15//去抖时间15Ms
uchar key1_count,key2_count,key3_count,key4_count
void init()
{
wela=0
SMG=0xff
TMOD=0x01
TH0=(65536-1000)/256
TL0=(65536-1000)%256
ET0=1
EA=1
TR0=1
LED=1;
}
void main()
{
init()
while(1)
{
switch(keydown)
{
if(index>2)index=0
case 1:
shuru_mima[index]=0
index++
break
case 2:
shuru_mima[index]=1
index++
break
case 3:
shuru_mima[index]=2
index++
break
case 4:
shuru_mima[index]=3
index++
break
}
flag_3s=0
for(i=0i<3i++)
{
if(shuru_mima[i]==chushi_mima[i])
{
LED=0
wela=1
SMG=table[0]
if(flag_3s)
{
flag_3s=0
wela=0
}
}
else
{
LED=1
wela=1
SMG=table[1]
if(flag_3s)
{
flag_3s=0
wela=0
}
}
}
}
}
void timer0() interrupt 1
{
uchar count
TH0=(65536-1000)/256
TL0=(65536-1000)%256
if(++count>=600)
{
count=0
flag_3s=1
}
/*********1ms中断扫描按键(包含去抖程序)********/
if(!key1&&key1_count!=0)
{
key1_count--
if(key1_count==0)
{
keydown=1
}
}
else if(!key1) key1_count=times
// key2,key3,key4你自己写吧
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)