单片机之旅——电子密码锁

来源:互联网 发布:后期制作需要哪些软件 编辑:程序博客网 时间:2024/05/01 02:10

共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。


#include<reg52.h>sbit fmq=P0^7;sbit pass_1 = P2^0;sbit pass_2 = P2^1;sbit pass_3 = P2^2;sbit pass_4 = P2^3;unsigned int count;unsigned int jishu;void delay500us(){unsigned char j; for(j=0;j<57;j++)  //500us基准延时程序  {  ; } }void beep()//产生1KHZ频率声音的函数{ fmq=0;delay500us();fmq=1;delay500us();}void delay1ms(unsigned int i){unsigned char j; while(i--) { for(j=0;j<115;j++)  //1ms基准延时程序  {  ; } } }void delayms(unsigned int m){unsigned int i,j;for(i = m; i > 0; i--){for(j = 110; j > 0; j--);}}unsigned int i,j,t;void voice(){for(i = 10000; i > 0; i--){for(j = 110; j > 0; j--){for(t=0;t<1000;t++){beep();}fmq=1;delay1ms(1000);}}}unsigned char temp;void monitor_key(){P2 = 0xff;temp = P2;if(temp != 0xff){delayms(10);if(temp != 0xff){if(pass_1 == 0){count++;}else if(pass_2 == 0){count++;}else if(pass_3 == 0){count++;}else if(pass_4 == 0){count++;}else{count = 0;jishu++;}}   delayms(10);}}void main(){unsigned int t;  while(1)  {monitor_key();if(jishu == 3){voice();delayms(5 * 60 * 1000);jishu = 0;}  }}


原创粉丝点击