找回密码
 注册
关于网站域名变更的通知
查看: 1021|回复: 13
打印 上一主题 下一主题

51单片机电子密码锁仿真及程序 制作成功功能全

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-11 13:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 yxlk 于 2019-1-11 14:03 编辑 $ @- t& Z, V7 h8 ?6 a
- {/ M1 U- a5 ~* w1 s! [- F
51单片机电子密码锁仿真及程序 制作成功功能全& |$ _6 v7 L! M. k) u( l  O. U
$ k% X$ R  `# M" C

, m$ e% y1 G3 ]$ y: s$ }2 e' _做的51单片机电子密码锁,分享给大家
  u. S+ t/ k5 ?7 Q5 h* u: t7 ^% L# P* P( L5 A* a0 K
% [2 G8 d/ B- J
) H4 a0 h4 i1 _3 v) i% y
基于80C51液晶显示和24C01密码实时保护的电子密码锁
7 R1 c/ _" \4 I. A7 x. K6 `程序(完整版本请下载附件):
+ r0 @& {7 U  I9 j' g) j
#include( q, S4 |5 O7 R- o
#include<12864.h>
$ N$ u4 K* n$ v0 Z6 G#include. ]) H& A0 J% p* U/ Z$ s
#include<24C01.h>: G. S+ [; f4 Q& u8 N+ |0 ~

" h/ m7 q- T# O. J6 m' b7 m5 U' A+ A
  c$ M) P( u( o# b
#define uchar unsigned char
) z) p  E* D8 X" m#define uint unsigned int
: f9 \( h& D- w8 Asbit LED1=P1^5;
9 m: k3 I0 f, Z5 Osbit LED2=P1^6;
) M2 j  M, e9 v( e5 q  nsbit INIT=P2^2;" ]5 O$ I: v" O
sbit SOUND=P1^7;3 L$ a  A7 m' K4 g
3 g$ d( G! Z9 e0 H: z: s% P
5 ?! e) |( O6 o5 I9 g
uchar idata key[6]={0,0,0,0,0,0};; U$ H  R/ e3 V8 y. [# O
uchar idata iic[6]={0,1,2,3,4,5};7 A% V1 u! B- @1 F* U- o" n
& ~( M8 j! X. }4 a' L7 x' g( v/ f4 k. j
# v6 k6 T' F$ D# D9 @& R
void press(uchar *s)
3 h. s# D, a: A* I{' X& r: T3 H$ {$ T7 \7 g) `
            uchar dat;
  `! \/ v* O6 p/ Z8 m: |0 Q//**************************************************$ v8 \( Y+ A% `/ r$ t
       P3=0xf0;                                                                //保存第一位密码
( n- |0 @2 ~9 y. z; s           while(P3==0xf0);
! s. w5 N9 ?7 ?9 [+ J& u# i; a( t/ x       dat=key_scan();
( m) I7 _- B9 _6 L, v, [9 O% y           if((dat!=0x0a)&&(dat!=0x0b))
+ y5 s- [- {4 ]$ {5 D         {   *s=dat;
6 e, S; E# ?: ~, u                         Left();) A. f% c1 g  _0 V6 J' w
                         star_12864(star,0x05,16);
) n4 }7 c! l; r             }
, |# m4 e4 A1 X0 v: A4 y, N           s++;                  
# R( Q4 ~: ?$ ?, w' Q8 O, v//**************************************************
9 l0 p) X+ A. I2 V9 ^. \2 R           P3=0xf0;                                                          //保存第二位密码 " ?% b9 b* n- R8 m' W( H4 `
           while(P3==0xf0);                                                
& Q# I/ y9 q: z+ u4 S$ {5 H       dat=key_scan(); 1 l' U- I5 h1 G' r
           if((dat!=0x0a)&&(dat!=0x0b))
$ Z8 B! F: g" x6 c$ A9 v         {   *s=dat;
" \7 Z( u) O9 r  j                         Left();
' k' D6 k( f( _2 i* W                         star_12864(star,0x05,24);
( x( u, z( T! W  I                  }
) v2 u3 L+ s* O% @- m: r           s++;        8 D& {8 \) X6 O# e8 g) c. U3 f! B
//**************************************************
# U1 T) i8 C% H2 G           P3=0xf0;                                                          //保存第三位密码
6 b* x5 N- w( G, a5 ^- X, g           while(P3==0xf0);                                                 * ^$ F6 d! P% L% b" o0 P
       dat=key_scan();4 w+ D4 E6 {& B' @
           if((dat!=0x0a)&&(dat!=0x0b))+ P+ H1 L1 I1 n5 l0 }
         {   *s=dat;$ X. N4 E2 Y  t. ^6 m  ]3 Q1 Q
                         Left();# i+ z3 y3 I2 b' V
                         star_12864(star,0x05,32);
" G" B: a! I: u# Q1 {                  }6 L/ M5 E: M6 N  f, \
           s++;        + ^2 f$ v- A0 j9 |. K( U- E8 B
//**************************************************
5 T$ F4 D# S* U( D# B           P3=0xf0;                                                          //保存第四位密码
% N) A3 b# U( D) Z5 \           while(P3==0xf0);                                                
# P( z, i1 ^' R9 x: d/ \           dat=key_scan();
1 M3 k( j8 V* }) }$ Y           if((dat!=0x0a)&&(dat!=0x0b))
5 {2 y& x8 j  ]8 g6 |- E3 n1 n. B         {   *s=dat;
9 T7 o) r6 D+ ], @5 _  a, C                         Left();) p5 O: F# z# g( P
                         star_12864(star,0x05,40);
' \# a: N% u) z' Y7 ]( a% J$ x                  }
5 O! k6 r& l! i) v7 {+ N! R; K           s++;        
! d) [; s4 N0 p- ]% e2 M//**************************************************. Z+ Y9 ?! ?; L4 A
           P3=0xf0;                                                          //保存第五位密码 4 Q# ^' Z1 D9 \
           while(P3==0xf0);                                                
, I- e# O! E% X5 {       dat=key_scan();
9 D; L2 F7 E* r           if((dat!=0x0a)&&(dat!=0x0b)), ^- W0 t/ I. X6 [
         {   *s=dat;
3 Q+ ~; S6 P& @                         Left();
; h! U/ F' _* N" `8 a9 }" Y9 @                         star_12864(star,0x05,48);
) A' F6 d) v, q9 L/ W( v                  }
% o6 n3 L' ?& I- q2 k           s++;        ; \- b* t* g/ c# R8 `0 ]
//**************************************************+ H  O0 a* f8 q7 R5 i) Q
           P3=0xf0;                                                          //保存第六位密码 # U* U* U9 e6 R: y- ], W
           while(P3==0xf0);                                                 7 b, R1 L4 \2 N2 t- p
       dat=key_scan();
% Z; C1 q  l. U- @           if((dat!=0x0a)&&(dat!=0x0b))2 @, `$ A0 D- B- d
         {   *s=dat;
, M/ H/ |& m% `# g; v2 e                         Left();
6 f) s) q  F) F" Z  o" e( J                         star_12864(star,0x05,56);3 I. D& A' f* f) V# m, L1 [
                  }
" g6 P4 Y8 n6 u% c//**************************************************! t/ Y9 }9 M; o: }9 Z# ^6 \7 A
           do{P3=0xf0;                                                        //键入Enter键盘继续执行下面语句,否则等待
6 ^* Y, A1 N4 ~: O* [4 c7 t              while(P3==0xf0);                                                 ) [- M" h! \; `
          dat=key_scan();
; X( q8 e" i3 M( k" R              }while(dat!=0x0b);  }( K- q) c) x- D$ A
}! G* P, y5 R; P1 J5 d7 q' \$ r+ H

& o" e( V% O8 A9 P2 v
% R8 A1 Y+ j  t4 `" s! ^$ J
void Delay10ms(void)           //延时10ms # X5 N0 h6 h9 l' u4 Z$ r
{
9 M- P& H3 \5 g6 U        uint i,j,k;/ \. y! P/ l4 O2 }" m
        for(i=5;i>0;i--)
5 q* D9 O; N% W& @; w        for(j=4;j>0;j--)1 Z6 _8 G; [( Q# m6 m7 C
        for(k=248;k>0;k--);
) j9 o2 N9 \1 J1 h! Z
5 {7 T: {, K" O. F* Z. q4 E* P* F

5 f! y- w6 }0 d. T! S}. J0 `- w: R2 v4 x, R) S# M0 }
4 t3 t. A: |) @: P4 t4 B7 D+ K

$ z6 B) S5 _3 p$ D" M+ Zvoid main()) X  f/ }% w; I" I5 M
{
9 O' y6 E# \# d' ]5 M      uchar dat;
: ]' @/ T0 j) u3 {      uchar i=0,j=0,k;
. U( ^- z* [$ E) l! m* ^$ t; i      uchar x;
, G( ]0 x+ w* M/ U( |2 i, }. S          LED1=1;
. L$ S5 \/ P6 q) h$ _! g! H8 ]3 O          LED2=1;
4 [, q7 ~- `3 Q( g          SOUND=0;- |  j1 j/ ?1 k9 y0 Y8 I/ b4 i
          INIT=1;% C7 Y' e0 Z& y& o' o
      if(INIT==0)                   //密码初始化 # s- ~& z' k5 k7 i( i; j2 z
      {* e- O% F; d6 y5 Q& d6 D4 l7 G
             x=SendB(iic,0x50,6);$ E2 X" u$ q  s8 h5 ]% m4 ^
                 Delay10ms();" p, z' X& {  O( |
      }             //首先从IIC器件中读出密码以供下面输入密码进行比较
  Z$ q& `0 c! w0 r. g      x=ReadB(iic,0x50,6);3 @! Z( _- g& e1 m4 b
      Init_12864();
3 C7 p. `" F( Q. b% r/ g, S1 m' K          for(i=0;i<150;i++){Delay10ms();}
/ W4 {3 U. B; O; r, i" K//**********************************若密码不正确,循环执行do{}while()********************************************
8 P3 w* U5 n4 J3 c6 Rdo{
3 w5 S' \6 e2 i) J             LED1=1;
& x, K7 V. P+ T; @+ g2 X! S# t             System();                  //显示:"请输入密码"字幕  7 W3 g* r! i* j* b
             press(key);. j5 U- Z! B2 \2 V$ i
                 if((key[0]==iic[0])&&(key[1]==iic[1])&&(key[2]==iic[2])&&(key[3]==iic[3])&&(key[4]==iic[4])&&(key[5]==iic[5])) //密码比较,若密码正确责进入系统,若密码不正确则显示密码错误,重新输入密码/ T, a' u# R! u9 U# A% R/ Z$ C
         {
0 K1 V8 Q0 ]2 ]) X" L                    true();2 W7 @2 _; H  x% P0 T
                    do
6 u- z# p* n" ]& F                    {% e* j  n& |; u; |5 H
                       P3=0xf0;                                                        //键入1或2继续执行下面语句,否则等待
5 P6 {1 h/ \0 ?7 W% u" A                   while(P3==0xf0);                                                 # O9 B' h1 i% [" o4 p/ E* r. S
               dat=key_scan();3 p, ?0 B; ~) F' w8 J4 H
                 }while(dat!=0x01&&dat!=0x02);2 q/ _* S: D. b2 E- h! o
                    if(dat==1)                                                       //开锁
! E# T+ i# U+ J& d- t                    {; l. c& q" Z, P
                        LED1=0;+ a. B1 v' b( |% N5 W, V2 c5 u" U, [
                                unlock();- Y  g5 K9 _9 B+ p# c
                            for(i=0;i<100;i++){Delay10ms();}
+ ^" ?' B& \$ k1 g$ m                    continue;6 W+ j+ d$ j5 H4 S# N
                     }
+ e! n$ S: o4 w/ f                    if(dat==2)                                                        //修改密码
; N' Z1 A! r/ F/ V                   {
4 v( \  T" j% i( X; ~# V9 }& R1 _                       do{& F+ x; N5 {) @  {
                              System(); - \) L  V1 }- |4 B8 [( b4 u
                                  press(key);3 ]* G$ ]6 }9 M0 i. Z
                                  again();
- m: O+ \! _3 E5 _                                  press(iic);
: b2 C! I9 N3 P+ z                                      if((key[0]==iic[0])&&(key[1]==iic[1])&&(key[2]==iic[2])&&(key[3]==iic[3])&&(key[4]==iic[4])&&(key[5]==iic[5]))
. m+ ^! u( P- i! R" L; G                                      {2 a+ L0 S2 W5 I5 X. v# O3 |
                                          succeed();                                //修改密码成功 4 V7 L) q* {  M8 X
                                                  for(i=0;i<100;i++){Delay10ms();}
/ R# A  l7 l# X3 d( b7 z  ^8 \9 b                                      Delay10ms();
+ @3 N  S2 {4 e5 L- A$ a                              x=SendB(iic,0x50,6);) l  e: Z8 r5 Q1 t5 ]) k
                                      Delay10ms();        6 F- d. V! S5 T6 B
                          x=ReadB(iic,0x50,6);break;# E' ?7 |2 }& H7 `! x2 A, g- l
                                       }
6 F9 E7 g. s: T. b  m                                      else                             //修改密码不成功,重新修改 : f0 g5 [' f3 H0 M
                                          {/ M' v' d0 W9 \) t8 z& S5 ?9 w9 X
                                              repeat();( P' z+ C, e! V' [' K' D
                                                  for(i=0;i<100;i++){Delay10ms();}4 ?# ]# H% K, W, [* O
                                           }6 {5 l& d- b6 j
                                  }while(1);   
. _$ J6 S6 W6 L2 r5 N                    }
  F# t' d& p; T/ f1 T# m8 b5 j9 _                 : `* Q$ D5 Z5 I% ?$ G! x
                 }0 q: u7 [9 D+ K  o0 q
                else                                                                           //密码不正确,重新输入密码 & I8 z& W0 f) k! d( ]: H3 H
                {6 E0 o' p! s4 u# S+ L
                    j++;+ l$ i! N& K3 K. P
                        if(j==3)
! H, `$ x" u3 \! m                        {" z; N" w, }+ n6 i
                           for(i=0;i<8;i++)
* N. [& M- Q1 S                           {
3 z/ h# k( }! q# w' ]# \& W                              LED2=0;
2 L+ i7 g9 O" T- R  M& m                                  for(k=0;k<5;k++){Delay10ms();}8 Y! Y' w6 v- }& r6 x$ I' M6 d
                                  LED2=1;* h, d2 ]9 ^6 r; N. Y
                                  for(k=0;k<5;k++){Delay10ms();}( g$ }$ K) {6 H$ C1 _" Y. @; H0 ]- [3 G
                                }
$ t1 F  L2 N3 G2 c' g3 D& D                                j=0;2 F2 M% W/ k# _: U# B
                         }8 c" L. V3 V* I  K- p5 v
                        error();. G& i; T1 U5 Q6 y/ {! y
                        for(i=0;i<50;i++){Delay10ms();}! O) `5 U1 P7 O
                 }# u% O& E* k9 Y4 u  R
}while(1);          " g1 z! v( M) R( ?9 h
      
9 c0 ^2 q: I8 ?2 q) W* ?8 e; H: b                    
( O8 R2 Y/ ^& I% ?. M- q           
2 ~7 P$ Z+ S) d0 r- ?4 A}
0 W% B* ^( X3 A$ a% [, }0 b7 c4 v

: c) Y8 `. k9 @+ N8 b4 U3 a# H9 z) k8 `# J& f0 c  k) V1 j

# c4 b4 r" k) R( \* X
游客,如果您要查看本帖隐藏内容请回复
9 w6 x- U  f: H; \# X9 e7 H/ B

0 M7 ^7 f% r( c8 ^4 b2 T

该用户从未签到

2#
发表于 2019-1-11 14:05 | 只看该作者
不错,谢谢分享
  • TA的每日心情
    开心
    2025-10-10 15:30
  • 签到天数: 1059 天

    [LV.10]以坛为家III

    3#
    发表于 2019-1-11 14:26 | 只看该作者
    好东西啊,谢谢分享!

    该用户从未签到

    5#
    发表于 2020-4-3 18:43 | 只看该作者
    好东西啊,学习一下,谢谢分享!

    / P6 M( C( M$ k

    该用户从未签到

    9#
    发表于 2020-4-16 15:50 | 只看该作者
    好东西啊,谢谢分享!
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-10-11 08:45 , Processed in 0.171875 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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