您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 51单片机电子密码锁的设计与应用
51单片机电子密码锁的设计与应用1.实验任务根据设定好的密码,采用二个按键实现密码的输入功能,当密码输入正确之后,锁就打开,如果输入的三次的密码不正确,就锁定按键3秒钟,同时发现报警声,直到没有按键按下3种后,才打开按键锁定功能;否则在3秒钟内仍有按键按下,就重新锁定按键3秒时间并报警。2.电路原理图图4.32.13.系统板上硬件连线(1).把“单片机系统”区域中的p0.0/ad0用导线连接到“音频放大模块”区域中的spkin端子上;(2).把“音频放大模块”区域中的spkout端子接喇叭和;(3).把“单片机系统”区域中的p2.0/a8-p2.7/a15用8芯排线连接到“四路静态数码显示”区域中的任一个abcdefgh端子上;(4).把“单片机系统“区域中的p1.0用导线连接到“八路发光二极管模块”区域中的l1端子上;(5).把“单片机系统”区域中的p3.6/wr、p3.7/rd用导线连接到“独立式键盘”区域中的sp1和sp2端子上;4.程序设计内容(1).密码的设定,在此程序中密码是固定在程序存储器rom中,假设预设的密码为“12345”共5位密码。(2).密码的输入问题:由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按键为数字键。在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。(3).按键禁止功能:初始化时,是允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态在3次密码输入不正确的情况下发生的。5.c语言源程序#includeunsignedcharcodeps[]={1,2,3,4,5};unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};unsignedcharpslen=9;unsignedchartemplen;unsignedchardigit;unsignedcharfuncount;unsignedchardigitcount;unsignedcharpsbuf[9];bitcmpflag;bithibitflag;biterrorflag;bitrightflag;unsignedintsecond3;unsignedintaa;unsignedintbb;bitalarmflag;bitexchangeflag;unsignedintcc;unsignedintdd;bitokflag;unsignedcharoka;unsignedcharokb;voidmain(void){unsignedchari,j;p2=dispcode[digitcount];tmod=0x01;th0=(65536-500)/256;tl0=(65536-500)%256;tr0=1;et0=1;ea=1;while(1){if(cmpflag==0){if(p3_6==0)//functionkey{for(i=10;i0;i--)for(j=248;j0;j--);if(p3_6==0){if(hibitflag==0){funcount++;if(funcount==pslen+2){funcount=0;cmpflag=1;}p1=dispcode[funcount];}else{second3=0;}while(p3_6==0);}}if(p3_7==0)//digitkey{for(i=10;i0;i--)for(j=248;j0;j--);if(p3_7==0){if(hibitflag==0){digitcount++;if(digitcount==10){digitcount=0;}p2=dispcode[digitcount];if(funcount==1){pslen=digitcount;templen=pslen;}elseif(funcount1){psbuf[funcount-2]=digitcount;}}else{second3=0;}while(p3_7==0);}}}else{cmpflag=0;for(i=0;i{if(ps[i]!=psbuf[i]){hibitflag=1;i=pslen;errorflag=1;rightflag=0;cmpflag=0;second3=0;gotoa;}}cc=0;errorflag=0;rightflag=1;hibitflag=0;a:cmpflag=0;}}}voidt0(void)interrupt1using0{th0=(65536-500)/256;tl0=(65536-500)%256;if((errorflag==1)&&(rightflag==0)){bb++;if(bb==800){bb=0;alarmflag=~alarmflag;}if(alarmflag==1){p0_0=~p0_0;}aa++;if(aa==800){aa=0;p0_1=~p0_1;}second3++;if(second3==6400){second3=0;hibitflag=0;errorflag=0;rightflag=0;cmpflag=0;p0_1=1;alarmflag=0;bb=0;aa=0;}}if((errorflag==0)&&(rightflag==1)){p0_1=0;cc++;if(cc1000){okflag=1;}elseif(cc2000){okflag=0;}else{errorflag=0;rightflag=0;hibitflag=0;cmpflag=0;p0_1=1;cc=0;oka=0;okb=0;okflag=0;p0_0=1;}if(okflag==1){oka++;if(oka==2){oka=0;p0_0=~p0_0;}}else{okb++;if(okb==3){okb=0;p0_0=~p0_0;}}}
本文标题:51单片机电子密码锁的设计与应用
链接地址:https://www.777doc.com/doc-2893621 .html