还一个星期就要交毕业论文了,我还什么都没写,我做的是指纹识别电子锁,我有以前学生做好的模板,他用的
一、还一个星期就要交毕业论文了,我还什么都没写,我做的是指纹识别电子锁,我有以前学生做好的模板,他用的
我建议你先看看这个两个芯片的说明书,一般来说芯片不用内部的寄存器引脚,支持的指令不同。你可以试试把相同的引脚寄存器替换下,应该可以蒙过去,就看你导师的水平了。
二、基于单片机的电子密码锁设计(C程序)
用数组存储密码。。。。设定密码:写入数组,判断密码:读取数组,其他IO状态根据判断正确与否输出
三、求基于VHDL的四位电子密码锁的开题报告和论文
这个网站上有(电子密码锁)(数字电路设计) 下载后打开就是.
四、基于AT89C5`单片机电子密码锁的设计_百度文库 请问你有相应密码锁程序吗?跪求啊 可以给你加豆子
这个开机显示STAR,你可以根据需要来改。功能如下:初始密码1234,如果输入密码正确,显示open,错误显示wrong。密码可以修改,密码修改成功后返回初始转台。程序经过硬件调试通过。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
bit go1,go2,go3; //定义三个标志位
sbit SPK=P2^7; //蜂鸣器
sbit K1=P2^4; //读密码命令键
sbit K2=P2^5; //密码确认键
sbit K3=P2^6; //修改密码键
uchar hang,lie,temp,key,a,b,c,d,
k,s,p,q,x,y,zh,i=1,j=2,m=4,n=4,
co1=1,co2=2,co3=3,co4=4,flag=0; //定义初始密码为1234
uchar code tab[4][4]={{'0','1','2','3'}, //定义数字键值
{'4','5','6','7'},
{'8','9','A','B'},
{'C','D','E','F'}};
uchar code tab1[]={0xc0,0x92,0xf8,0x90,0x88,0xc8,0x8c,0x86,0xbf};//显示0、S、T、9、A、E、N、P、-
void delay(uchar p) //延时函数
{
for(x=0;x<p;x++)
for(y=0;y<121;y++);
}
void key_scan() //键盘扫描
{
P3=0xf0; //行全部置0,列置1
if(P3!=0xf0) //有按键按下,相应的位变为低电平
{delay(5);
if(P3!=0xf0) //P3.4~P3.7作为行线
{
temp=P3;
switch(temp&0xf0)
{
case 0x70:hang=0;break;
case 0xb0:hang=1;break;
case 0xd0:hang=2;break;
case 0xe0:hang=3;break;
}
}
P3=0x0f; //列全部置0,行置1
if(P3!=0x0f) //P3.0~P3.3作为列线
{
temp=P3;
switch(temp&0x0f)
{
case 0x0e:lie=0;break;
case 0x0d:lie=1;break;
case 0x0b:lie=2;break;
case 0x07:lie=3;break;
}
}
key=tab[hang][lie];
for(q=0;q<3;q++) //延时,防止数字键误读
delay(200);
}
switch (key)
{
case '0':zh=0;flag++;break; //每按下一个数字键,flag自动加1
case '1':zh=1;flag++;break;
case '2':zh=2;flag++;break;
case '3':zh=3;flag++;break;
case '4':zh=4;flag++;break;
case '5':zh=5;flag++;break;
case '6':zh=6;flag++;break;
case '7':zh=7;flag++;break;
case '8':zh=8;flag++;break;
case '9':zh=9;flag++;break;
case 'A':zh=10;flag++;break;
case 'B':zh=11;flag++;break;
case 'C':zh=12;flag++;break;
case 'D':zh=13;flag++;break;
case 'E':zh=14;flag++;break;
case 'F':zh=15;flag++;break;
}
key='H'; //将不在0~F之间的字符H赋值给key,防止flag重复加1
}
void display(void) //数码管显示函数
{
P0=tab1[i];P2=0xf7;delay(5);P2=0xff;
P0=tab1[j];P2=0xfb;delay(5);P2=0xff;
P0=tab1[m];P2=0xfd;delay(5);P2=0xff;
P0=tab1[n];P2=0xfe;delay(5);P2=0xff;
}
void main()
{
go1=0; //标志位清零
go2=0;
go3=0;
while(1)
{
display(); //上电时显示STAR
if(K1==0) //按下K1键,数码管显示全零,同时go1置1
{
delay(10);
if(K1==0){i=0;j=0;m=0;n=0;go1=1;}
}
if(go1==1)
{
go2=1;key_scan(); //输入密码同时go2置1
if(flag==1){a=zh;i=8;}
if(flag==2){b=zh;i=8;j=8;}
if(flag==3){c=zh;i=8;j=8;m=8;}
if(flag==4){d=zh;i=8;j=8;m=8;n=8;flag=0;}
}
if(K2==0&&go2==1) //判断密码是否正确
{
delay(10);
if(K2==0&&go2==1)
{
if(co1==a&&co2==b&&co3==c&&co4==d)
{
i=0;j=6;m=7;n=5; //密码正确显示OPEN,同时蜂鸣器长鸣1声,LED全亮
SPK=0;P1=0x00;delay(250);SPK=1;P1=0xff;
}
else //密码不正确则显示RONG,同时蜂鸣器急鸣5声,LED全亮
{
i=4;j=0;m=5;n=3;
for(s=0;s<5;s++)
{
SPK=0;P1=0x00;delay(50);SPK=1;P1=0xff;
}
}
}
}
if(K3==0) //K3按下进入修改密码状态
{
delay(10);
if(K3==0)go3=1; //go3置1
}
if(go3==1)
{
i=0;j=0;m=0;n=0; //数码管显示全零
while(1)
{
key_scan(); //输入新密码
if(flag==1){co1=zh;i=8;}
if(flag==2){co2=zh;i=8,j=8;}
if(flag==3){co3=zh;i=8,j=8;m=8;}
if(flag==4){co4=zh;i=8,j=8;m=8;n=8;flag=0;}
display(); //输入新密码时每输入一位新密码数码管对应位显示为-
go1=0;go2=0;go3=0; //标志位重新清零
if(K2==0){i=1;j=2;m=4;n=4;break;} //按下确认键返回到STAR状态,等待重新读密码
}
}
}
}
际蓝论文网版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!