急求基于单片机密码锁设计的简易密码锁电路图和程序

基于51单片机的电子密码锁系统设计制作,电路图+源程序
我的图书馆
基于51单片机的电子密码锁系统设计制作,电路图+源程序
& & & & 这款基于51单片机的电子密码锁系统,单片机用STC89C52RC单片机,电路简单,制作过程中不需要进行调试,支持密码掉电保存功能!密码储存于单片机内部自带的的EEPROM中,不需要外置AT24C01保存密码,是学习电子密码锁比较好的教学试验系统,主要功能如下:
& && & 1、1602液晶菜单显示。
& && & 2、6位密码,密码可重置,重置密码时,先输入原始密密,正确后输入新密码,再交输入新密码,两次输入的密码一致辞时,密码修改成功。开锁时,密码通过键盘输入,若密码正确,则将锁打开,诺密码不正确时,无法开锁,密码输入错误三次时,蜂鸣器报 警并且锁定键盘,10分钟。
& && & 3、支持掉电保存密码功能。单片机中的密码是储存于单片内部的EEPROM中,在密码锁系统断电时,储存在密码锁系统中的密码不会丢失。
& && & 4、密码锁系统采用5V继电器模拟开锁过程。
& && & 5、输入的正确时,继电器吸合2-3秒,开锁指示灯亮2-3秒,模拟开锁。
& && & 6、密码错误报警且有错误提示(显示Error)。
& && & 7、密码正确开锁指示。
& && & 8、4X4矩阵键盘输入。
& && & 9、随时可修改密码存储,支持掉电保存密码功能,功能更为实用。
& && & 10、密码可以由用户自己修改设定(只支持6位密码),锁打开后才能 修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。
源程序如下:
#include&reg52.h&
#define uint unsigned int
#define uchar unsigned char
void key_scan();
uchar count0,count1,count3,num,n=0,temp,a,j,count4;
uchar mima[8];& & & & & & & & & & & & & & & & & & & & & & & & & & & & //初始密码存储区
uchar tab_key[50];& & & & & & & & & & & & & & & & & & & & & & & & //输入密码存储区
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
& & & & & & & & & & & & & & & & & & & & & & & & & & & & //确认键按下与否的标志
& & & & & & & & & & & & & & & & & & & & & & & & & & & & //密码正确与否的标志
& & & & & & & & & & & & & & & & & & & & & & & & & & & & //修改密码标志& & & &
bit enter1& & & & & & & & & & & & & & & & & & & & & & & & //修改密码确认键标志& & & &
sbit red=P3^7;
sbit bell=P3^6;
sbit rs=P2^0;
sbit rw=P2^1;
sbit lcden=P2^2;
sbit scl=P3^4;
sbit sda=P3^5;
uchar code table1[]="input the passco";
uchar code table2[]="de:& &&&--------";
uchar code table3[]="*";
uchar code table4[]="right& &(^_^)& &";
uchar code table5[]="first&&error!!!!";
uchar code table6[]="second error!!!!";
uchar code table7[]="third error see ";
uchar code table8[]="u tomorrow (^_^)";
uchar code table9[]="define the passc";
uchar code table10[]="ode:& & --------";
uchar code table11[]="code& &is& & new";
//******************************键盘消抖函数*******************************
void delay1()
void delay2(uchar x)
& & & & uchar a,b;
& & & & for(a=x;a&0;a--)
& & & &&&for(b=100;b&0;b--);
void delay(uint z)
& & & & uint x,y;
& & & & for(x=z;x&0;x--)
& & & & & & & & for(y=110;y&0;y--);
//****************************e^2room的初始化*******************************
void start()&&//开始信号
& & & & sda=1;
& & & & delay1();
& & & & scl=1;
& & & & delay1();
& & & & sda=0;
& & & & delay1();
void stop()& &//停止
& & & & sda=0;
& & & & delay1();
& & & & scl=1;
& & & & delay1();
& & & & sda=1;
& & & & delay1();
//****************************应答信号*************************************
void respond()&&
& & & & scl=1;
& & & & delay1();
& & & & while((sda==1)&&(i&250))i++;
& & & & scl=0;
& & & & delay1();
//*****************************写字节操作函数**********************************
void write_byte(uchar date)
& & & & uchar i,
& & & & temp=
& & & & for(i=0;i&8;i++)
& & & & & & & & temp=temp&&1;& & & & & & & & & & & & //保持最高位,左移到进位CY
& & & & & & & & scl=0;
& & & && &&&delay1();
& & & & & & & & sda=CY;
& & & & & & & & delay1();
& & & & & & & & scl=1;
& & & & & & & & delay1();
& & & & scl=0;
& & & & delay1();
& & & & sda=1;//总线释放
& & & & delay1();
//*******************************读字节操作函数*****************************
uchar read_byte()
& & & & uchar i,k;
& & & & scl=0;
& & & & delay1();
& & & & sda=1;
& & & & delay1();
& & & & for(i=0;i&8;i++)
& & & & & & & & scl=1;
& & & & & & & & delay1();& & & &
& & & & & & & & k=(k&&1)|& & //或运算,放到最低位
& & & & & & & & scl=0;
& & & & & & & & delay1();& & & &
//**********************************写地址函数******************************
void write_add(uchar address,uchar date)
& & & & start();
& & & & write_byte(0xa0);
& & & & respond();
& & & & write_byte(address);
& & & & respond();
& & & & write_byte(date);
& & & & respond();
& & & & stop();
//*******************************读地址函数*************************************
uchar read_add(uchar address)
& & & & start();
& & & & write_byte(0xa0);
& & & & respond();
& & & & write_byte(address);
& & & & respond();
& & & & start();
& & & & write_byte(0xa1);
& & & & respond();
& & & & date=read_byte();
& & & & stop();
//****************************LCD1602的初始化*******************************
void write_com(uchar com)
& & & & rs=0;
& & & & lcden=0;
& & & & P0=
& & & & delay(5);
& & & & lcden=1;
& & & & delay(5);
& & & & lcden=0;& & & &
void write_date(uchar date)
& & & & rs=1;
& & & & lcden=0;
& & & & P0=
& & & & delay(5);
& & & & lcden=1;
& & & & delay(5);
& & & & lcden=0;& & & &
//***************************************密码比较函数********************************
bit mimacmp()& & & & & & & & & & & & & & & & & & & &
& & & & for(i=0;i&8;i++)
& & & & & & & & {
& & & & & & & & & & & & if(mima[i]==tab_key[i])
& & & & & & & & & & & & & & & & flag=1;
& & & & & & & & & & & & else
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & flag=0;
& & & & & & & & & & & & & & & & i=8;
& & & & & & & & & & & & & & & & }
& & & & & & & & }
& & & & return(flag);& & & & & & & & & & & & & & & & & & & & & & & & & & & & //返回flag
////**********************************LCD显示函数开始**************************************
void lcd_display()
uchar i=0;
write_com(0x80+0x40+8);
for(i=0;i&n;i++)
write_date(table3[0]);
//****************************************键盘功能分配函数群开始****************************
//** 0 ** 1 **2 ** 3**& && && && && && && &
//** 4** 5** 6 **7 **
//**8** 9** 确认(A)&&**无效(B)
//**取消(C)**修改密码键(D)**确认修改键(E)**无效(F)
void key_manage1()
tab_key[n]=0;
if(xiugaiflag==1)
mima[count4]=0;
void key_manage2()
tab_key[n]=1;
if(xiugaiflag==1)
mima[count4]=1;
void key_manage3()
tab_key[n]=2;
if(xiugaiflag==1)
mima[count4]=2;
void key_manage4()
tab_key[n]=3;
if(xiugaiflag==1)
mima[count4]=3;
void key_manage5()
tab_key[n]=4;
if(xiugaiflag==1)
mima[count4]=4;
void key_manage6()
tab_key[n]=5;
if(xiugaiflag==1)
mima[count4]=5;
void key_manage7()
tab_key[n]=6;
if(xiugaiflag==1)
mima[count4]=6;
void key_manage8()
tab_key[n]=7;
if(xiugaiflag==1)
mima[count4]=7;
void key_manage9()
tab_key[n]=8;
if(xiugaiflag==1)
mima[count4]=8;
void key_manage10()
tab_key[n]=9;
if(xiugaiflag==1)
mima[count4]=9;
//**********************************确认键**************************************************************&&
void key_manage11()
& & & & enterflag=1;& & & & & & & & & & & & & & & & & & & & //确认键按下
& & & & if(n==8)& & & & & & & & & & & & & & & & & & & && & //只有输入8个密码后按确认才做比较
& & & & & & & & mimaflag=mimacmp();
& & & & else
& & & & & & & & mimaflag=0;
& & & &&&if(enterflag==1)
& & & & & & & & {
& & & & & & & & & & & & enterflag=0;
& & & & & & & & & & & & n=0;
& & & & & & & & & & & & //用FFFFFFFF清除已经输入的密码
& & & & & & & & & & & & for(count3=0;count3&8;count3++)
& & & & & & & & & & & & {& & & &
& & & & & & & & & & & & & & & & delay(5);
& & & & & & & & & & & & & & & & tab_key[count3]=0x0f;& & & & & & & &
& & & & & & & & & & & & }& & & & & & & &
& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & TR1=1;& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & //打开计数器1
& & & & & & & & & & & & count1=0;& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & //定时器1由50MS累计到1S所用的计数器
& & & & & & & & & & & & if(mimaflag==1)
& & & & & & & & & & & & {& & & &
& & & & & & & & & & & & & & & & a=0;
& & & & & & & & & & & &
& & & & & & & & & & & & & & & & write_com(0x01);
& & & & & & & & & & & & & & & & write_com(0x80);
& & & & & & & & & & & & & & & & for(count3=0;count3&16;count3++)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & write_date(table4[count3]);& & & & //密码正确,显示RIGHT,绿灯亮
& & & & & & & & & & & & & & & & & & & & delay(5);
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & }
& & & & & & & & & & & && && && &
& & & & & & & && &&&else
& & & & & & & & & & & & {& &
& & & & & & & & & & & &&&& & & & n=0;
& & & & & & & & & & & &&&& & & & red=0;
& & & & & & & && &&&& & & & bell=0;
& & & & & & & & & & & & & & & & a++;
& & & & & & & & & & & & & & & & if(a==1)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & for(count3=0;count3&8;count3++) //ffffffff清除密码
& & & & & & & & & & & & & & & & & & & & {& & & &
& & & & & & & & & & & & & & & & & & & & & & & & delay(5);
& & & & & & & & & & & & & & & & & & & & & & & & tab_key[count3]=0x0f;& & & & & & & &
& & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & write_com(0x01);& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & write_com(0x80);
& & & & & & & & & & & & & & & & & & & & for(count3=0;count3&16;count3++)
& & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & write_date(table5[count3]);& & & & //密码错误,显示 first error,红灯亮
& & & & & & & & & & & & & & & & & & & & & & & & delay(5);
& & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & & & & & TR1=1;
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & if(a==2)
& & & & & & & & & & & & & & & & {& & & &
& & & & & & & & & & & & & & & & & & & & for(count3=0;count3&8;count3++) //ffffffff清除密码
& & & & & & & & & & & & & & & & & & & & {& & & &
& & & & & & & & & & & & & & & & & & & & & & & & delay(5);
& & & & & & & & & & & & & & & & & & & & & & & & tab_key[count3]=0x0f;& & & & & & & &
& & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & & & & & write_com(0x01);
& & & & & & & & & & & & & & & & & & & & & & & & write_com(0x80);
& & & & & & & & & & & & & & & & & & & & & & & & for(count3=0;count3&16;count3++)
& & & & & & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & & & & & write_date(table6[count3]);& & & & //密码错误,显示SECOND ERROR,红灯亮
& & & & & & & & & & & & & & & & & & & & & & & & & & & & delay(5);
& & & & & & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & & & & & & & & & TR1=1;
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & && &if(a==3)
& & & & & & & & & & & & & & & & & & & & {& & & &
& & & & & & & & & & & & & & & & & & & & & & & & for(count3=0;count3&8;count3++) //ffffffff清除密码
& & & & & & & & & & & & & & & & & & & & & & & & {& & & &
& & & & & & & & & & & & & & & & & & & & & & & & & & & & delay(5);
& & & & & & & & & & & & & & & & & & & & & & & & & & & & tab_key[count3]=0x0f;& & & & & & & &
& & & & & & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & & & & & write_com(0x01);
& & & & & & & & & & & & & & & & & & & & & & & & write_com(0x80);
& & & & & & & & & & & & & & & & & & & & & & & & for(count3=0;count3&16;count3++)
& & & & & & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & & & & & write_date(table7[count3]);& & & & //密码错误,显示third error see,红灯亮
& & & & & & & & & & & & & & & & & & & & & & & & & & & & delay(5);
& & & & & & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & & & & & write_com(0x80+0x40);
& & & & & & & & & & & & & & & & & & & & & & & & for(count3=0;count3&16;count3++)
& & & & & & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & & & & & write_date(table8[count3]);//密码错误,显示 U TOMORROW ,红灯亮
& & & & & & & & & & & & & & & & & & & & & & & & & & & & delay(5);
& & & & & & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & & & & & & & & & TR1=0;
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & }
void key_manage12()
tab_key[n]=11;
n++;& & & & & & & & & & & & & & & & & & & & & & & && &//密码计数清零
//****************************************************取消键********************************************&&
void key_manage13()
n=0;& & & & & & & & & & & & & & & & & & & & & & & && &//密码计数清零
write_com(0x80);& & & & & & & & & & & & & & & & & & & & & & & & //指针所指位置
for(count3=0;count3&16;count3++)
& & & & write_date(table1[count3]);& & & & & & & & //第一行显示INPUT THE PASSPORD:
& & & & delay(5);
write_com(0x80+0x40);
for(count3=0;count3&16;count3++)
& & & & write_date(table2[count3]);& & & & //开机显示--------
& & & & delay(5);
& & & & tab_key[count3]=0x0f;& & & & & & & & & & & & //用FFFFFFFF清楚已经输入的密码
//*******************************************修改密码键**********************************
void key_manage14()
& & & & uchar aa=0;
& & & & n=0;
& & & & xiugaiflag=1;
& & & & write_com(0x01);
& & & & write_com(0x80);
for(count3=0;count3&16;count3++)
& & & & write_date(table9[count3]);& & & & //显示define the password
& & & & delay(5);
& & & & tab_key[count3]=0x0f;& & & & & & & & & & & & //用FFFFFFFF清楚已经输入的密码
& & & & write_com(0x80+0x40);
for(count3=0;count3&16;count3++)
& & & & write_date(table10[count3]);& & & & //显示--------
& & & & delay(5);
//******************************************修改密码键的确认键********************************
void key_manage15()
enter1flag=1;
if(enter1flag==1)
& & & & enter1flag=0;
& & & & count4=0;
& & & & for(count3=0;count3&16;count3++)
& & & & tab_key[count3]=0x0f;& & & & & & & & & & & & //用FFFFFFFF清楚已经输入的密码
& & & & write_com(0x01);
& & & & write_com(0x80);
& & & & for(count3=0;count3&16;count3++)
& & & & & & & & write_date(table11[count3]);
& & & & & & & & delay(100);
& & & & TR1=1;
& & & & count1=0;
void key_manage16()
tab_key[n]=15;
//****************************************定时器1的50MS,共延时1秒*****************************
void time_1() interrupt 3
& & & & TH1=()/256;
& & & & TL1=()%256;
& & & & if(count1&20)
& & & & & & & & count1++;
& & & & else & & & & & & & & & & & & & & & & & & & & & & & & & & & & //计时到1S
& & & & & & & & TR1=0;
& & & & & & & & count1=0;
& & & & & & & & mimaflag=0;
& & & & & & & & red=1;
& & & & & & & & bell=1;
& & & & & & & & //显示FFFFFFFF
& & & & & & & & write_com(0x01);
& & & & & & & & write_com(0x80);
& & & & & & & & for(count3=0;count3&16;count3++)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & write_date(table1[count3]);& & & & //显示INPUT THE PASSCODE
& & & & & & & & & & & & & & & & delay(5);
& & & & & & & & & & & & }
& & & & & & & & write_com(0x80+0x40);
& & & & & & & & for(count3=0;count3&16;count3++)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & write_date(table2[count3]);& & & & //开机显示FFFFFFFF
& & & & & & & & & & & & & & & & delay(5);
& & & & & & & & & & & & }
//***********************************************定时0**********************************************
void time_0() interrupt 1
& & & & TH0=()/256;
& & & & TL0=()%256;
if(count4&8)
& & & & key_scan();
& & & & TR0=0;
& & & & count4=0;
//初始化函数
void init()
& & & & lcden=0;
& & & & write_com(0x38);& & & & & & & & & & & & & & & & & & & & //打开显示模式设置
& & & & write_com(0x0c);& & & & & & & & & & & & & & & & & & & & //打开显示,光标等等设置未零
& & & & write_com(0x06);& & & & & & & & & & & & & & & & & & & & //当读或写一个字符后地址指针加一,且光标加一,当写一个字符后整频显示左移,
& & & & write_com(0x01);& & & & & & & & & & & & & & & & & & & & //清零指令
& & & & write_com(0x80);& & & & & & & & & & & & & & & & & & & & //指针所指位置
& & & & //定时器初始化
& & & & TMOD=0x11;& & & & & & & & & & & & & & & & & & & & & & & & & & & & //T0,T1工作方式1
& & & & TH0=()/256;
& & & & TL0=()%256;& & & & & & & & & & & & & & & & //T0初始化2MS
& & & & TH1=()/256;
& & & & TL1=()%256;& & & & & & & & & & & & & & & & //T1初始化50MS
& & & & TR1=0;
& & & & ET1=1;
& & & & EA=1;
& & & & TR0=0;
& & & & ET0=1;
& & & & count0=0;& & & & & & & & & & & & & & & & & & & & & & & & & & & & //初始没有密码输入,故为零
& & & & enterflag=0;& & & & & & & & & & & & & & & & & & & & & & & & //没有确认键按下
& & & & mimaflag=0;& & & & & & & & & & & & & & & & & & & & & & & & & & & & //密码正确与否键先置零
& & & & & & & & & & & & & & & & & & & &
& & & & red=1;& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & //红灯不亮
//************密码存入EPROM中**********************************
& & & & sda=1;
& & & & delay(5);
& & & & scl=1;
& & & & delay(5);
& & & & for(i=0;i&8;i++)
& & & & & & & & write_add(i,8);
& & & & & & & & delay2(100);
& & & & for(i=0;i&8;i++)
& & & & & & & & mima[i]=read_add(i);
& & & & & & & & delay(5);
void main()
{& & & & rw=0;& & & & & & & &
& & & & init();
& & & & write_com(0x80);& & & & & & & & & & & & & & & & & & & & & & & & //指针所指位置
& & & & for(count3=0;count3&16;count3++)
& & & & & & & & write_date(table1[count3]);& & & & & & & & //第一行显示INPUT THE PASSPORD:
& & & & & & & & delay(5);
& & & & write_com(0x80+0x40);
& & & & for(count3=0;count3&16;count3++)
& & & & & & & & write_date(table2[count3]);& & & & & & & & //开机显示FFFFFFFF
& & & & & & & & delay(5);
& & & & while(1)
& & & & & & & & key_scan();& & & && & & & & & & & & & & & & & & & & && & & & & & //调用键盘扫描函数
& & & & & & & & lcd_display();
& & & & & & & &&&
//**************************************************键盘扫描函数开始********************************
void key_scan()
//**********扫描第一行*********
temp=temp&0xf0;
if(temp!=0xf0)
delay(100);
if(temp!=0xf0)
switch(temp)
case 0xee:
key_manage1();
case 0xde:
key_manage2();
case 0xbe:
key_manage3();
case 0x7e:
key_manage4();
while(temp!=0xf0)
temp=temp&0xf0;
//**************************************************扫描第二行***********************************
temp=temp&0xf0;
if(temp!=0xf0)
delay(100);
if(temp!=0xf0)
switch(temp)
case 0xed:
key_manage5();
case 0xdd:
key_manage6();
case 0xbd:
key_manage7();
case 0x7d:
key_manage8();
while(temp!=0xf0)
temp=temp&0xf0;
//*********************************************扫描第三行***********************************
temp=temp&0xf0;
if(temp!=0xf0)
delay(100);
if(temp!=0xf0)
switch(temp)
case 0xeb:
key_manage9();
case 0xdb:
key_manage10();
case 0xbb:
key_manage11();
case 0x7b:
key_manage12();
while(temp!=0xf0)
temp=temp&0xf0;
//***************************************************扫描第四行****************************************
temp=temp&0xf0;
if(temp!=0xf0)
delay(100);
if(temp!=0xf0)
switch(temp)
case 0xe7:
key_manage13();
case 0xd7:
key_manage14();
case 0xb7:
key_manage15();
case 0x77:
key_manage16();
while(temp!=0xf0)
temp=temp&0xf0;
[转]&[转]&[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢豆丁微信公众号
君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于51单片机的简易电子密码锁
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口急求~基于单片机AT89C52的电子密码锁 有液晶显示,数码管,蜂鸣器,时钟芯片的电子密码锁,拜托了_百度知道
急求~基于单片机AT89C52的电子密码锁 有液晶显示,数码管,蜂鸣器,时钟芯片的电子密码锁,拜托了
我有更好的答案
你好!& 有了液晶为什么还要数码管呢?密码需要几位的?
采纳率:62%
为您推荐:
其他类似问题
电子密码锁的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 单片机密码锁程序 的文章

 

随机推荐