密码锁
第 18 页 共 24 页
{
if(cflag==0) {
i=0; //按键输入数置0
flag=1; //S13键按下,修改密码标志置1 if(t==0) {
displaylistchar(0,0,\ delay_ms(500);
displaylistchar(0,1,\ delay_ms(500);
displaylistchar(0,1,\ }
t++;
if(num>=0&&num<=9) {
TR0=~TR0; t0=0;
displayonechar(k,1,ASC[num]); newpassword[k++]=num; }
if(num==10) //单个密码删除键,和输入密码时一样 {
TR0=~TR0; //若按键后五秒内没有打开锁,则报警 t0=0; if(k>0) {
k=k-1;
displayonechar(i,1,' '); } }
if(num==11) //所以密码清除键,和输入密码时一样 {
TR0=0; k=0; flag=0;
displaylistchar(0,1,\ }
if(num==12) //确认键,和输入密码时一样 {
TR0=0;
密码锁
第 19 页 共 24 页
if(k==4)
{
for(j=0;j<4;j++) {
if(newpassword[j]!=read_add(j+1)) break; }
if(j==k)
{ led_gre=1; led_red=0;
displaylistchar(0,1,\ delay_ms(500);
displaylistchar(0,1,\ displaylistchar(0,1,\ delay_ms(500);
displaylistchar(0,1,\ k=0;
cflag=1; }
else {
led_gre=0; led_red=1;
displaylistchar(0,1,\ delay_ms(1000); k=0; flag=0;
displaylistchar(0,1,\ displaylistchar(0,0,\ displaylistchar(0,0,\ } }
else { led_gre=0; led_red=1;
displaylistchar(0,1,\ delay_ms(1000); k=0; flag=0;
displaylistchar(0,1,\ displaylistchar(0,0,\ displaylistchar(0,0,\ }
密码锁
第 20 页 共 24 页
}
if(k==6) { TR0=0; led_gre=0; led_red=1;
displaylistchar(0,1,\ delay_ms(1000); k=0; flag=0;
displaylistchar(0,1,\ displaylistchar(0,0,\ displaylistchar(0,0,\ } }
else {
if(num>=0&&num<=9) {
write_add(shu,num);
displayonechar(shu-1,1,ASC[num]); shu++; if(shu==5) {
t=0; shu=1; cflag=0; flag=0;
displaylistchar(0,1,\ delay_ms(500);
displaylistchar(0,0,\ displaylistchar(0,1,\ displaylistchar(0,0,\ } }
} }
}
} }
void time0(void) interrupt 1 {
TH0=(65535-50000)/256;
密码锁
TL0=(65535-50000)%6; t0++;
if(t0==100) {
t0=0; TR0=0;
TR1=1; } }
void time1(void) interrupt 3 {
TH1=(65535-2000)/256; TL1=(65535-2000)%6; t1++; spk=~spk; if(t1==5000) {
t1=0; TR1=0; } }
第 21 页 共 24 页