找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 91651|回复: 77
收起左侧

基于51单片机的电子密码锁系统设计制作,电路图+源程序

  [复制链接]
ID:76686 发表于 2015-4-11 22:50 | 显示全部楼层 |阅读模式
       这款基于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位密码),锁打开后才能 修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。


源程序如下:
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. void key_scan();
  5. uchar count0,count1,count3,num,n=0,temp,a,j,count4;
  6. uchar mima[8];                                                        //初始密码存储区
  7. uchar tab_key[50];                                                //输入密码存储区
  8. uchar code table[]={
  9. 0x3f,0x06,0x5b,0x4f,
  10. 0x66,0x6d,0x7d,0x07,
  11. 0x7f,0x6f,0x77,0x7c,
  12. 0x39,0x5e,0x79,0x71};
  13. bit enterflag;                                                        //确认键按下与否的标志
  14. bit mimaflag;                                                        //密码正确与否的标志
  15. bit xiugaiflag;                                                        //修改密码标志       
  16. bit enter1flag;                                                //修改密码确认键标志       
  17. sbit red=P3^7;
  18. sbit bell=P3^6;
  19. sbit rs=P2^0;
  20. sbit rw=P2^1;
  21. sbit lcden=P2^2;
  22. sbit scl=P3^4;
  23. sbit sda=P3^5;
  24. uchar code table1[]="input the passco";
  25. uchar code table2[]="de:     --------";
  26. uchar code table3[]="*";
  27. uchar code table4[]="right   (^_^)   ";
  28. uchar code table5[]="first  error!!!!";
  29. uchar code table6[]="second error!!!!";
  30. uchar code table7[]="third error see ";
  31. uchar code table8[]="u tomorrow (^_^)";
  32. uchar code table9[]="define the passc";
  33. uchar code table10[]="ode:    --------";
  34. uchar code table11[]="code   is    new";
  35. //******************************键盘消抖函数*******************************
  36. void delay1()
  37. { ;; }
  38. void delay2(uchar x)
  39. {
  40.         uchar a,b;
  41.         for(a=x;a>0;a--)
  42.          for(b=100;b>0;b--);
  43. }
  44.        
  45. void delay(uint z)
  46. {
  47.         uint x,y;
  48.         for(x=z;x>0;x--)
  49.                 for(y=110;y>0;y--);
  50. }

  51. //****************************e^2room的初始化*******************************
  52. void start()  //开始信号
  53. {       
  54.         sda=1;
  55.         delay1();
  56.         scl=1;
  57.         delay1();
  58.         sda=0;
  59.         delay1();
  60. }

  61. void stop()   //停止
  62. {
  63.         sda=0;
  64.         delay1();
  65.         scl=1;
  66.         delay1();
  67.         sda=1;
  68.         delay1();
  69. }
  70. //****************************应答信号*************************************
  71. void respond()  
  72. {
  73.         uchar i;
  74.         scl=1;
  75.         delay1();
  76.         while((sda==1)&&(i<250))i++;
  77.         scl=0;
  78.         delay1();
  79. }
  80. //*****************************写字节操作函数**********************************
  81. void write_byte(uchar date)
  82. {
  83.         uchar i,temp;
  84.         temp=date;
  85.         for(i=0;i<8;i++)
  86.         {
  87.                 temp=temp<<1;                        //保持最高位,左移到进位CY
  88.                 scl=0;
  89.             delay1();
  90.                 sda=CY;
  91.                 delay1();
  92.                 scl=1;
  93.                 delay1();
  94.         }
  95.         scl=0;
  96.         delay1();
  97.         sda=1;//总线释放
  98.         delay1();
  99. }
  100. //*******************************读字节操作函数*****************************
  101. uchar read_byte()
  102. {
  103.         uchar i,k;
  104.         scl=0;
  105.         delay1();
  106.         sda=1;
  107.         delay1();
  108.         for(i=0;i<8;i++)
  109.         {
  110.                 scl=1;
  111.                 delay1();       
  112.                 k=(k<<1)|sda;    //或运算,放到最低位
  113.                 scl=0;
  114.                 delay1();       
  115.         }
  116.         return k;
  117. }
  118. //**********************************写地址函数******************************
  119. void write_add(uchar address,uchar date)
  120. {
  121.         start();
  122.         write_byte(0xa0);
  123.         respond();
  124.         write_byte(address);
  125.         respond();
  126.         write_byte(date);
  127.         respond();
  128.         stop();
  129. }
  130. //*******************************读地址函数*************************************
  131. uchar read_add(uchar address)
  132. {
  133.         uchar date;
  134.         start();
  135.         write_byte(0xa0);
  136.         respond();
  137.         write_byte(address);
  138.         respond();
  139.         start();
  140.         write_byte(0xa1);
  141.         respond();
  142.         date=read_byte();
  143.         stop();
  144.         return date;
  145. }
  146. //****************************LCD1602的初始化*******************************
  147. void write_com(uchar com)
  148. {
  149.         rs=0;
  150.         lcden=0;
  151.         P0=com;
  152.         delay(5);
  153.         lcden=1;
  154.         delay(5);
  155.         lcden=0;       
  156. }

  157. void write_date(uchar date)
  158. {
  159.         rs=1;
  160.         lcden=0;
  161.         P0=date;
  162.         delay(5);
  163.         lcden=1;
  164.         delay(5);
  165.         lcden=0;       
  166. }

  167. //***************************************密码比较函数********************************
  168. bit mimacmp()                                       
  169. {
  170.         bit flag;
  171.         uchar i;
  172.         for(i=0;i<8;i++)
  173.                 {
  174.                         if(mima[i]==tab_key[i])
  175.                                 flag=1;
  176.                         else
  177.                                 {
  178.                                 flag=0;
  179.                                 i=8;
  180.                                 }
  181.                 }
  182.         return(flag);                                                        //返回flag
  183. }

  184. ////**********************************LCD显示函数开始**************************************
  185. void lcd_display()
  186. {
  187. uchar i=0;
  188. write_com(0x80+0x40+8);
  189. for(i=0;i<n;i++)
  190. {
  191. write_date(table3[0]);
  192. }
  193. }

  194. //****************************************键盘功能分配函数群开始****************************
  195. //** 0 ** 1 **2 ** 3**                     
  196. //** 4** 5** 6 **7 **
  197. //**8** 9** 确认(A)  **无效(B)
  198. //**取消(C)**修改密码键(D)**确认修改键(E)**无效(F)

  199. void key_manage1()
  200. {
  201. tab_key[n]=0;
  202. n++;
  203. if(xiugaiflag==1)
  204. {
  205. mima[count4]=0;
  206. count4++;
  207. }
  208. }

  209. void key_manage2()
  210. {

  211. tab_key[n]=1;
  212. n++;
  213. if(xiugaiflag==1)
  214. {
  215. mima[count4]=1;
  216. count4++;
  217. }
  218. }

  219. void key_manage3()
  220. {

  221. tab_key[n]=2;
  222. n++;
  223. if(xiugaiflag==1)
  224. {
  225. mima[count4]=2;
  226. count4++;
  227. }
  228. }

  229. void key_manage4()
  230. {
  231. tab_key[n]=3;
  232. n++;
  233. if(xiugaiflag==1)
  234. {
  235. mima[count4]=3;
  236. count4++;
  237. }
  238. }

  239. void key_manage5()
  240. {
  241. tab_key[n]=4;
  242. n++;
  243. if(xiugaiflag==1)
  244. {
  245. mima[count4]=4;
  246. count4++;
  247. }
  248. }

  249. void key_manage6()
  250. {
  251. tab_key[n]=5;
  252. n++;
  253. if(xiugaiflag==1)
  254. {
  255. mima[count4]=5;
  256. count4++;
  257. }
  258. }
  259. void key_manage7()
  260. {
  261. tab_key[n]=6;
  262. n++;
  263. if(xiugaiflag==1)
  264. {
  265. mima[count4]=6;
  266. count4++;
  267. }
  268. }
  269. void key_manage8()
  270. {
  271. tab_key[n]=7;
  272. n++;
  273. if(xiugaiflag==1)
  274. {
  275. mima[count4]=7;
  276. count4++;
  277. }
  278. }

  279. void key_manage9()
  280. {
  281. tab_key[n]=8;
  282. n++;
  283. if(xiugaiflag==1)
  284. {
  285. mima[count4]=8;
  286. count4++;
  287. }
  288. }
  289. void key_manage10()
  290. {
  291. tab_key[n]=9;
  292. n++;
  293. if(xiugaiflag==1)
  294. {
  295. mima[count4]=9;
  296. count4++;
  297. }
  298. }
  299. //**********************************确认键**************************************************************  
  300. void key_manage11()
  301. {
  302.         enterflag=1;                                        //确认键按下
  303.         if(n==8)                                           //只有输入8个密码后按确认才做比较
  304.                 mimaflag=mimacmp();
  305.         else
  306.                 mimaflag=0;
  307.          if(enterflag==1)
  308.                 {
  309.                         enterflag=0;
  310.                         n=0;
  311.                         //用FFFFFFFF清除已经输入的密码
  312.                         for(count3=0;count3<8;count3++)
  313.                         {       
  314.                                 delay(5);
  315.                                 tab_key[count3]=0x0f;               
  316.                         }               
  317.                                        
  318.                         TR1=1;                                                                        //打开计数器1
  319.                         count1=0;                                                                //定时器1由50MS累计到1S所用的计数器
  320.                         if(mimaflag==1)
  321.                         {       
  322.                                 a=0;
  323.                        
  324.                                 write_com(0x01);
  325.                                 write_com(0x80);
  326.                                 for(count3=0;count3<16;count3++)
  327.                                 {
  328.                                         write_date(table4[count3]);        //密码正确,显示RIGHT,绿灯亮
  329.                                         delay(5);
  330.                                 }
  331.                         }
  332.                                 
  333.                     else
  334.                         {   
  335.                                  n=0;
  336.                                  red=0;
  337.                             bell=0;
  338.                                 a++;
  339.                                 if(a==1)
  340.                                 {
  341.                                         for(count3=0;count3<8;count3++) //ffffffff清除密码
  342.                                         {       
  343.                                                 delay(5);
  344.                                                 tab_key[count3]=0x0f;               
  345.                                         }
  346.                                         write_com(0x01);                                                                               
  347.                                         write_com(0x80);
  348.                                         for(count3=0;count3<16;count3++)
  349.                                         {
  350.                                                 write_date(table5[count3]);        //密码错误,显示 first error,红灯亮
  351.                                                 delay(5);
  352.                                         }
  353.                                                 TR1=1;
  354.                                 }
  355.                                 if(a==2)
  356.                                 {       
  357.                                         for(count3=0;count3<8;count3++) //ffffffff清除密码
  358.                                         {       
  359.                                                 delay(5);
  360.                                                 tab_key[count3]=0x0f;               
  361.                                         }
  362.                                                 write_com(0x01);
  363.                                                 write_com(0x80);
  364.                                                 for(count3=0;count3<16;count3++)
  365.                                                 {
  366.                                                         write_date(table6[count3]);        //密码错误,显示SECOND ERROR,红灯亮
  367.                                                         delay(5);
  368.                                                 }
  369.                                                         TR1=1;
  370.                                 }
  371.                                        
  372.                                   if(a==3)
  373.                                         {       
  374.                                                 for(count3=0;count3<8;count3++) //ffffffff清除密码
  375.                                                 {       
  376.                                                         delay(5);
  377.                                                         tab_key[count3]=0x0f;               
  378.                                                 }
  379.                                                 write_com(0x01);
  380.                                                 write_com(0x80);
  381.                                                 for(count3=0;count3<16;count3++)
  382.                                                 {
  383.                                                         write_date(table7[count3]);        //密码错误,显示third error see,红灯亮
  384.                                                         delay(5);
  385.                                                 }
  386.                                                 write_com(0x80+0x40);
  387.                                                 for(count3=0;count3<16;count3++)
  388.                                                 {
  389.                                                         write_date(table8[count3]);//密码错误,显示 U TOMORROW ,红灯亮
  390.                                                         delay(5);
  391.                                                 }
  392.                                                         TR1=0;
  393.                                                                
  394.                                         }
  395.                                                        
  396.                 }
  397.         }

  398. }
  399. void key_manage12()
  400. {
  401. tab_key[n]=11;
  402. n++;                                                  //密码计数清零

  403. }
  404. //****************************************************取消键********************************************  
  405. void key_manage13()
  406. {

  407. n=0;                                                  //密码计数清零
  408. write_com(0x80);                                                //指针所指位置
  409. for(count3=0;count3<16;count3++)
  410. {
  411.         write_date(table1[count3]);                //第一行显示INPUT THE PASSPORD:
  412.         delay(5);
  413. }
  414. write_com(0x80+0x40);
  415. for(count3=0;count3<16;count3++)
  416. {
  417.         write_date(table2[count3]);        //开机显示--------
  418.         delay(5);
  419.         tab_key[count3]=0x0f;                        //用FFFFFFFF清楚已经输入的密码
  420. }

  421. }
  422. //*******************************************修改密码键**********************************
  423. void key_manage14()
  424. {
  425.         uchar aa=0;
  426.         n=0;
  427.         xiugaiflag=1;
  428.         write_com(0x01);
  429.         write_com(0x80);
  430. for(count3=0;count3<16;count3++)
  431. {
  432.         write_date(table9[count3]);        //显示define the password
  433.         delay(5);
  434.         tab_key[count3]=0x0f;                        //用FFFFFFFF清楚已经输入的密码
  435. }
  436.         write_com(0x80+0x40);
  437. for(count3=0;count3<16;count3++)
  438. {
  439.         write_date(table10[count3]);        //显示--------
  440.         delay(5);
  441. }
  442. TR0=1;

  443. }
  444. //******************************************修改密码键的确认键********************************
  445. void key_manage15()
  446. {
  447. n=0;
  448. enter1flag=1;
  449. if(enter1flag==1)
  450. {
  451.         enter1flag=0;
  452.         count4=0;
  453.         for(count3=0;count3<16;count3++)
  454.         {
  455.         tab_key[count3]=0x0f;                        //用FFFFFFFF清楚已经输入的密码
  456.         }
  457.         write_com(0x01);
  458.         write_com(0x80);
  459.         for(count3=0;count3<16;count3++)
  460.         {
  461.                 write_date(table11[count3]);
  462.                 delay(100);
  463.         }
  464.         TR1=1;
  465.         count1=0;
  466. }
  467. }
  468. void key_manage16()
  469. {
  470. tab_key[n]=15;
  471. n++;
  472. }

  473. //****************************************定时器1的50MS,共延时1秒*****************************
  474. void time_1() interrupt 3
  475. {       

  476.         TH1=(65536-50000)/256;
  477.         TL1=(65536-50000)%256;
  478.         if(count1<20)
  479.         {
  480.                 count1++;
  481.         }
  482.         else                                                         //计时到1S
  483.         {
  484.                 TR1=0;
  485.                 count1=0;
  486.                 mimaflag=0;

  487.                 red=1;
  488.                 bell=1;
  489.                 //显示FFFFFFFF
  490.                 write_com(0x01);
  491.                 write_com(0x80);
  492.                 for(count3=0;count3<16;count3++)
  493.                         {
  494.                                 write_date(table1[count3]);        //显示INPUT THE PASSCODE
  495.                                 delay(5);
  496.                         }
  497.                 write_com(0x80+0x40);
  498.                 for(count3=0;count3<16;count3++)
  499.                         {
  500.                                 write_date(table2[count3]);        //开机显示FFFFFFFF
  501.                                 delay(5);
  502.                         }
  503.         }

  504. }
  505. //***********************************************定时0**********************************************
  506. void time_0() interrupt 1
  507. {       

  508.         TH0=(65536-50000)/256;
  509.         TL0=(65536-50000)%256;
  510. if(count4<8)
  511. {
  512.         key_scan();
  513. }
  514. else
  515. {
  516.         TR0=0;
  517.         count4=0;
  518. }
  519. }

  520. //初始化函数
  521. void init()
  522. {       

  523.         uchar i;
  524.         lcden=0;
  525.         write_com(0x38);                                        //打开显示模式设置
  526.         write_com(0x0c);                                        //打开显示,光标等等设置未零
  527.         write_com(0x06);                                        //当读或写一个字符后地址指针加一,且光标加一,当写一个字符后整频显示左移,
  528.         write_com(0x01);                                        //清零指令
  529.         write_com(0x80);                                        //指针所指位置

  530.         //定时器初始化
  531.         TMOD=0x11;                                                        //T0,T1工作方式1
  532.         TH0=(65536-2000)/256;
  533.         TL0=(65536-2000)%256;                                //T0初始化2MS

  534.         TH1=(65536-50000)/256;
  535.         TL1=(65536-50000)%256;                                //T1初始化50MS

  536.         TR1=0;
  537.         ET1=1;
  538.         EA=1;
  539.         TR0=0;
  540.         ET0=1;

  541.         count0=0;                                                        //初始没有密码输入,故为零
  542.         enterflag=0;                                                //没有确认键按下
  543.         mimaflag=0;                                                        //密码正确与否键先置零
  544.                                        
  545.         red=1;                                                                //红灯不亮
  546. //************密码存入EPROM中**********************************
  547.         sda=1;
  548.         delay(5);
  549.         scl=1;
  550.         delay(5);
  551.         for(i=0;i<8;i++)
  552.         {
  553.                 write_add(i,8);
  554.                 delay2(100);
  555.         }
  556.         for(i=0;i<8;i++)
  557.         {
  558.                 mima[i]=read_add(i);
  559.                 delay(5);
  560.         }

  561. }
  562. void main()
  563. {        rw=0;               
  564.         init();
  565.         write_com(0x80);                                                //指针所指位置
  566.         for(count3=0;count3<16;count3++)
  567.         {
  568.                 write_date(table1[count3]);                //第一行显示INPUT THE PASSPORD:
  569.                 delay(5);
  570.         }
  571.         write_com(0x80+0x40);
  572.         for(count3=0;count3<16;count3++)
  573.         {
  574.                 write_date(table2[count3]);                //开机显示FFFFFFFF
  575.                 delay(5);
  576.         }
  577.         while(1)
  578.         {
  579.                 key_scan();                                                      //调用键盘扫描函数
  580.                 lcd_display();
  581.         }
  582.                  
  583. }
  584. //**************************************************键盘扫描函数开始********************************
  585. void key_scan()
  586. {
  587. //**********扫描第一行*********
  588. P1=0xfe;
  589. temp=P1;
  590. temp=temp&0xf0;
  591. if(temp!=0xf0)
  592. {
  593. delay(100);
  594. if(temp!=0xf0)
  595. {
  596. temp=P1;
  597. switch(temp)
  598. {
  599. case 0xee:
  600. key_manage1();
  601. break;

  602. case 0xde:
  603. key_manage2();
  604. break;

  605. case 0xbe:
  606. key_manage3();
  607. break;

  608. case 0x7e:
  609. key_manage4();
  610. break;
  611. }
  612. while(temp!=0xf0)
  613. {
  614. temp=P1;
  615. temp=temp&0xf0;
  616. }
  617. }
  618. }
  619. //**************************************************扫描第二行***********************************
  620. P1=0xfd;
  621. temp=P1;
  622. temp=temp&0xf0;
  623. if(temp!=0xf0)
  624. {
  625. delay(100);
  626. if(temp!=0xf0)
  627. {
  628. temp=P1;
  629. switch(temp)
  630. {
  631. case 0xed:
  632. key_manage5();
  633. break;

  634. case 0xdd:
  635. key_manage6();
  636. break;

  637. case 0xbd:
  638. key_manage7();
  639. break;

  640. case 0x7d:
  641. key_manage8();
  642. break;
  643. }
  644. while(temp!=0xf0)
  645. {
  646. temp=P1;
  647. temp=temp&0xf0;
  648. }
  649. }
  650. }
  651. //*********************************************扫描第三行***********************************
  652. P1=0xfb;
  653. temp=P1;
  654. temp=temp&0xf0;
  655. if(temp!=0xf0)
  656. {
  657. delay(100);
  658. if(temp!=0xf0)
  659. {
  660. temp=P1;
  661. switch(temp)
  662. {
  663. case 0xeb:
  664. key_manage9();
  665. break;

  666. case 0xdb:
  667. key_manage10();
  668. break;

  669. case 0xbb:
  670. key_manage11();
  671. break;

  672. case 0x7b:
  673. key_manage12();
  674. break;
  675. }
  676. while(temp!=0xf0)
  677. {
  678. temp=P1;
  679. temp=temp&0xf0;
  680. }
  681. }
  682. }

  683. //***************************************************扫描第四行****************************************
  684. P1=0xf7;
  685. temp=P1;
  686. temp=temp&0xf0;
  687. if(temp!=0xf0)
  688. {
  689. delay(100);
  690. if(temp!=0xf0)
  691. {
  692. temp=P1;
  693. switch(temp)
  694. {
  695. case 0xe7:
  696. key_manage13();
  697. break;

  698. case 0xd7:
  699. key_manage14();
  700. break;

  701. case 0xb7:
  702. key_manage15();
  703. break;

  704. case 0x77:
  705. key_manage16();
  706. break;
  707. }
  708. while(temp!=0xf0)
  709. {
  710. temp=P1;
  711. temp=temp&0xf0;
  712. }
  713. }
  714. }
  715. }
复制代码



评分

参与人数 11黑币 +53 收起 理由
dghfjjklll + 5 很给力!
jim0618 + 5
zyqddd + 2 绝世好帖!
小菜鸟222 + 5 绝世好帖!
芦苇劫 + 8 赞一个!
QQ菜鸟 + 4
IKENR + 4 赞一个!
ssfc + 8 很给力!
HH2013.08.13 + 2 赞一个!
fay860601 + 5 赞一个!
madell + 5 赞一个!

查看全部评分

回复

使用道具 举报

ID:92810 发表于 2023-7-3 18:24 | 显示全部楼层
支持大神多发帖,供新手学习
回复

使用道具 举报

ID:495990 发表于 2022-11-2 20:20 | 显示全部楼层
楼主,出现重复多次调用报警,可能会影响程序的可靠性吧?,
回复

使用道具 举报

ID:1048696 发表于 2022-10-24 15:12 来自手机 | 显示全部楼层
楼主,5行为什么不正式参数中,6.7.8行都出现一点问题,求解决方法
回复

使用道具 举报

ID:442132 发表于 2018-12-8 14:59 | 显示全部楼层
很好,很值得学习的一个贴
回复

使用道具 举报

ID:433239 发表于 2018-11-26 10:23 | 显示全部楼层
感谢大佬
回复

使用道具 举报

ID:432815 发表于 2018-11-25 14:07 | 显示全部楼层
楼主可以的   
回复

使用道具 举报

ID:260743 发表于 2018-9-24 16:22 | 显示全部楼层
密码应该是0000 0000吧
回复

使用道具 举报

ID:398464 发表于 2018-9-15 23:54 | 显示全部楼层
赞一个,很给力,
回复

使用道具 举报

ID:389243 发表于 2018-8-24 17:01 | 显示全部楼层
大神,原理图可以发全吗
回复

使用道具 举报

ID:343931 发表于 2018-6-11 23:01 | 显示全部楼层
楼主,这个不用at24的吧。。我试着做了仿真,可是下进去就只有初始化的语句,按键没反应呀
回复

使用道具 举报

ID:310719 发表于 2018-5-23 11:07 | 显示全部楼层
希望楼主能发个更清晰的电路图
回复

使用道具 举报

ID:266164 发表于 2018-5-20 21:45 | 显示全部楼层
正准备做个密码锁。好好学习一下。
回复

使用道具 举报

ID:322886 发表于 2018-5-12 10:08 | 显示全部楼层
请问有仿真图吗
回复

使用道具 举报

ID:322886 发表于 2018-5-8 15:58 | 显示全部楼层
求更清晰的仿真图
回复

使用道具 举报

ID:322886 发表于 2018-5-8 15:40 | 显示全部楼层
3次密码锁定解锁怎么解
回复

使用道具 举报

ID:243865 发表于 2018-5-8 10:08 | 显示全部楼层
很好的资料,学习了
回复

使用道具 举报

ID:289867 发表于 2018-4-27 16:27 来自手机 | 显示全部楼层
如果要改成三次输入密码后是重设密码应该怎么改
回复

使用道具 举报

ID:267881 发表于 2018-1-4 18:54 | 显示全部楼层
大神6666,膜拜
回复

使用道具 举报

ID:241379 发表于 2017-12-27 21:47 | 显示全部楼层
不错,挺好的
回复

使用道具 举报

ID:266600 发表于 2017-12-25 16:20 | 显示全部楼层
有不有基于ARM LPC2138芯片的电子密码锁设计
回复

使用道具 举报

ID:263767 发表于 2017-12-20 17:17 | 显示全部楼层
厉害了 膜拜大神
回复

使用道具 举报

ID:243865 发表于 2017-12-18 10:09 | 显示全部楼层
毕业设计zheng需要,谢谢了
回复

使用道具 举报

ID:255915 发表于 2017-12-2 10:19 | 显示全部楼层
怎么让它变成6位密码
回复

使用道具 举报

ID:246166 发表于 2017-11-8 18:34 | 显示全部楼层
楼主太强了,学习学习
回复

使用道具 举报

ID:96218 发表于 2017-11-1 19:36 | 显示全部楼层
再开发个机械部分就完美了!
回复

使用道具 举报

ID:233080 发表于 2017-9-18 10:22 | 显示全部楼层
程序掉电,密码就没了,而且不太稳定,弄不清楚
回复

使用道具 举报

ID:229500 发表于 2017-9-17 16:11 | 显示全部楼层
求原理图
回复

使用道具 举报

ID:114669 发表于 2017-9-15 13:07 | 显示全部楼层
有原理图嘛
回复

使用道具 举报

ID:209421 发表于 2017-6-9 09:02 | 显示全部楼层
有接线图吗?
回复

使用道具 举报

ID:207196 发表于 2017-6-2 20:08 | 显示全部楼层
大神请问这个能用的吗
回复

使用道具 举报

ID:64922 发表于 2017-5-19 20:23 | 显示全部楼层
这个不错值得学习,
回复

使用道具 举报

ID:157662 发表于 2017-5-7 19:40 | 显示全部楼层
有没有仿真图啊?
回复

使用道具 举报

ID:66287 发表于 2017-5-3 11:28 | 显示全部楼层
楼主牛X,谢谢分享!
回复

使用道具 举报

ID:192116 发表于 2017-4-27 13:37 | 显示全部楼层
有没有更清楚的原理图啊,大神
回复

使用道具 举报

ID:188374 发表于 2017-4-11 10:48 | 显示全部楼层
有没有元器件清单啊?楼主
回复

使用道具 举报

ID:176848 发表于 2017-3-23 08:19 | 显示全部楼层
邰夏留 发表于 2015-9-21 19:04
支持大神多发帖,供新手学习。。

这图有点看不清啊,有没有清晰一点的能不能给我发一份,谢谢。1778360798@qq.com
回复

使用道具 举报

ID:158014 发表于 2016-12-28 12:56 来自手机 | 显示全部楼层
运行程序有警告没弄明白
回复

使用道具 举报

ID:157642 发表于 2016-12-26 09:13 | 显示全部楼层
楼主可不可以发一个更清晰的原理图
回复

使用道具 举报

ID:157642 发表于 2016-12-26 09:08 | 显示全部楼层
楼主能不能发个更清楚的原理图
回复

使用道具 举报

ID:151844 发表于 2016-12-21 10:23 | 显示全部楼层
有人试过,成功了吗?求交流
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表