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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 yxlk 于 2019-1-11 14:03 编辑 / z. n. ^0 q& {: F! a
0 [7 @+ b) R$ T+ c. C0 A9 V' [+ v
51单片机电子密码锁仿真及程序 制作成功功能全
  p* ]8 J- z3 m8 N, P  q
( k/ g' a8 N8 J3 E5 M% C% X; u# E, Q) A+ C+ o) B0 i$ e) y
做的51单片机电子密码锁,分享给大家2 A; |) s7 D4 T) `( q

/ `1 A1 z, j  i4 i. p$ J3 C

# A2 s3 u- o9 [/ k2 V( k
7 I( S& ~! s# s6 n# p基于80C51液晶显示和24C01密码实时保护的电子密码锁
% L- l" K8 }7 b/ A* s; O程序(完整版本请下载附件):
5 D& q* m7 A* z- p/ c
#include
7 y8 H2 g: J" r4 F9 C: K#include<12864.h>
) v5 \. M" ^6 d! Y2 W#include
& F: f5 y' D& Z2 Y#include<24C01.h>3 R1 l' [% g9 |2 Y" L- [

- W  E8 z1 X7 P% R

% q/ b/ L+ X; s2 ?# |* B#define uchar unsigned char7 y; S4 @. y4 ?
#define uint unsigned int' l6 J6 l/ |6 Y- O9 o9 z
sbit LED1=P1^5;
3 g8 n8 ?! R# w2 z0 t  h" }sbit LED2=P1^6;
9 a2 {, j" B" Wsbit INIT=P2^2;
4 D; F2 d, j. u7 l$ y- t' F4 q2 isbit SOUND=P1^7;
9 a, f. U3 @. B+ |
7 Z: ~# x& J( s; H! h/ p

1 k  q1 \. v) P0 F7 p$ ?2 s5 V: luchar idata key[6]={0,0,0,0,0,0};1 f) N, O2 _+ M& w' G, ~+ }) [  y
uchar idata iic[6]={0,1,2,3,4,5};5 x8 D- F3 ~  C" Z' M' a# X

: v8 D% E! b+ `6 t" V

9 [6 o* t8 r0 F& D: Hvoid press(uchar *s)
4 o6 P9 e0 h) p; C' i: f: z{
) `+ F+ g6 ]/ q; f- r8 k7 t' K            uchar dat;
: n- {, n. N9 j+ [( c% m//**************************************************8 ~- @4 G+ F; T4 p- h5 I2 V
       P3=0xf0;                                                                //保存第一位密码 8 n( I- L! ]3 \' L
           while(P3==0xf0);
4 h, }) r7 p" ?. a       dat=key_scan();2 k( ?1 Q$ o' i( k3 q
           if((dat!=0x0a)&&(dat!=0x0b))
- G( Z% ~0 a9 S! G/ y( \0 u         {   *s=dat;# N! E3 }5 W  Z' X5 }1 w
                         Left();
) I% _/ M* U, e- N! O                         star_12864(star,0x05,16);
3 y$ A0 R4 [" w, K3 D9 b# q+ t             }3 y! N9 S  ]- h5 U, j  X: y1 ?% |& ^
           s++;                  
. O  Z% [3 Y  ~. s, z( J//**************************************************
  T. B$ W6 P- ]' @! `) h           P3=0xf0;                                                          //保存第二位密码
  e% t8 O/ P: k  q* X& F  p           while(P3==0xf0);                                                 . S1 Y  L3 A4 \. M. |
       dat=key_scan();
' s$ v3 A" u) ~9 @1 \           if((dat!=0x0a)&&(dat!=0x0b))% a1 V9 v) `$ {: b( y' b
         {   *s=dat;
& M, h& U7 C2 I4 a8 {! f                         Left();2 x. B2 L* E1 U
                         star_12864(star,0x05,24);
$ ^- A  l) y9 t# R+ [. s# i                  }
6 Q& f5 a+ h. F8 _; f           s++;        4 v$ G2 f4 V$ [3 V9 ?# R4 R
//**************************************************2 E, B" ~4 I) i* O0 M, S( h! U
           P3=0xf0;                                                          //保存第三位密码
2 z* q+ G. q* g& H2 d           while(P3==0xf0);                                                
% |# _  k0 R5 {2 C# j  [* \7 c" e3 a       dat=key_scan();
2 \4 W; O# ^& h, e4 Q" O; w           if((dat!=0x0a)&&(dat!=0x0b))
2 s4 W; n  g. |. ^         {   *s=dat;
+ u8 f) H' t6 G1 _                         Left();! v6 P. w. D2 m$ @  |$ A7 ~' ?3 ]" `
                         star_12864(star,0x05,32);: w+ s& f# i7 T
                  }- g7 H/ F! J8 b& y
           s++;        
2 h- C+ C1 Z3 ~2 G//**************************************************
+ B; D  A, \0 P3 n- Y$ K7 a& H           P3=0xf0;                                                          //保存第四位密码
2 @1 l6 n% ~* h( Z- Y5 v; p           while(P3==0xf0);                                                 " N7 X( f* u" X
           dat=key_scan();
4 [+ g9 |: W1 G+ O; \7 m5 k; Z) R- s( \           if((dat!=0x0a)&&(dat!=0x0b))9 w" v4 I$ L* o" Q# Y: ]) m
         {   *s=dat;
% J; M7 Y* Q" k                         Left();. n8 ]) i- v2 r0 O9 e# m( V; W
                         star_12864(star,0x05,40);( h; o+ s) J4 o, \3 ?9 z8 Q  B
                  }
* s9 [& b; M8 Q* `5 ]* [2 L4 X& R  s  Z           s++;        
4 O8 w- M3 O6 j//**************************************************
5 U" t/ H/ N5 H2 e2 h. u           P3=0xf0;                                                          //保存第五位密码 : P( D$ R2 Z0 B- O. Z( ?
           while(P3==0xf0);                                                
# s0 B6 W8 V& B" S. A7 B. n       dat=key_scan();& ~( @! A+ c! T3 |
           if((dat!=0x0a)&&(dat!=0x0b))
- r+ F) C; f* e/ ~         {   *s=dat;
4 N' o) s% T, ~6 A4 A; ^                         Left();
3 X. j, A5 t7 N                         star_12864(star,0x05,48);
+ r+ T( k" n5 A- r* _/ l                  }9 e+ m% O) r- X+ s- {  h
           s++;        
; x2 {4 M6 [9 k2 Q4 Y5 @# S/ b" f9 w# O: T//**************************************************
; \$ ]/ M! w! ~, p  t, _           P3=0xf0;                                                          //保存第六位密码 3 _, f0 s# V7 s% z8 f. ]4 l3 h! H- h
           while(P3==0xf0);                                                 ( T% z  ?+ B2 R
       dat=key_scan();
; D% ^* w0 b3 R) Y           if((dat!=0x0a)&&(dat!=0x0b))3 v0 M- n2 A4 S; ?; G  d
         {   *s=dat;
) A; {( \. Y( N! A! |                         Left();
  R- ~: Y, w$ |/ R$ V, g5 e                         star_12864(star,0x05,56);
1 U4 X2 B8 P6 u# o                  }  o4 K2 ]! {4 y5 O
//**************************************************6 z& ~. V  m  u% d# e
           do{P3=0xf0;                                                        //键入Enter键盘继续执行下面语句,否则等待 # e7 S0 o! c* j& L" ^
              while(P3==0xf0);                                                 9 |; Y' w8 d4 l5 A, N6 m$ R8 Y% W
          dat=key_scan();
% b6 w, i) R( e: m# J' ?: d* c* h              }while(dat!=0x0b);
4 c7 y2 z! t$ @7 K+ l3 f9 c}
- I+ q  `5 M4 j( ^3 D
1 C; S7 w  `4 L( \( u

* s# f5 P  {# ]1 v& zvoid Delay10ms(void)           //延时10ms
0 k0 s1 v' T6 Q5 G' j{  S& X+ Y' U! q$ W( q
        uint i,j,k;7 J: Q( B8 Z+ Y. _
        for(i=5;i>0;i--)
5 i+ M: X4 e% k3 R        for(j=4;j>0;j--)2 ^% r/ S. {2 }- P7 z! c- T& T
        for(k=248;k>0;k--);7 {9 i- \' S: C. I# G# u4 j

1 T' O1 G6 s- H# d9 t% l

0 g4 w. y9 ]7 S: ^. h2 u, L}/ N, {, S5 A7 e8 x( D

! Q( J  ]( O! o# }

% q: k* ], |/ W$ x) S/ Jvoid main()
; O, U; S" q0 j6 c/ F; [. y{0 p4 q6 k! a! J5 g- e7 n* u
      uchar dat;- O+ U) ?% _2 m3 R1 [) L+ [
      uchar i=0,j=0,k;
! N/ p" n! Q! X# j      uchar x;
/ B5 d- @3 k5 [          LED1=1;
7 f: ^- N9 T2 H5 q4 ^# a          LED2=1;0 J/ j5 Z" H7 n+ V! Z1 g
          SOUND=0;
. f  D! V0 P' X* D7 x) L          INIT=1;/ f9 I" V5 F; R4 k6 h; M- L
      if(INIT==0)                   //密码初始化
4 T: Z' \* o8 [+ H      {+ c9 s9 q0 u4 ^) e8 Q
             x=SendB(iic,0x50,6);4 Z3 w/ Y6 i4 X- m& B
                 Delay10ms();6 V7 d  P$ V* v( U/ A1 j, F& R
      }             //首先从IIC器件中读出密码以供下面输入密码进行比较
, s$ [- ^; y" {. k      x=ReadB(iic,0x50,6);4 I1 U5 E2 v5 ?6 }* q( |7 a' j
      Init_12864();
$ L1 C( `4 X2 n- h          for(i=0;i<150;i++){Delay10ms();}
2 ^) d4 ?! _+ E) C8 {& j//**********************************若密码不正确,循环执行do{}while()********************************************; t0 B. f" l# q! `
do{$ q* B6 P; Q* \, _2 [
             LED1=1;; X# e' S2 M! f# O
             System();                  //显示:"请输入密码"字幕  1 k' f' \( Y: s' X8 }5 T
             press(key);3 B2 g( s1 O$ E8 F) G) X0 m
                 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])) //密码比较,若密码正确责进入系统,若密码不正确则显示密码错误,重新输入密码
0 Z. ]3 b8 x% ]         {
. |$ p' c% m( ~                    true();
& Q6 I* k/ _- r; o9 r                    do+ E4 w, d) Y9 o: D) _! G
                    {' r4 w$ @* a% x, m* d! {
                       P3=0xf0;                                                        //键入1或2继续执行下面语句,否则等待
1 @+ _8 F" \- l$ ~. }                   while(P3==0xf0);                                                
+ Q& u* [# `" _               dat=key_scan();6 m" A/ g" {% C
                 }while(dat!=0x01&&dat!=0x02);0 V. A7 A9 ^9 o( v3 d) G% T
                    if(dat==1)                                                       //开锁 ' S) S  H8 w% z, w2 R. Y
                    {
& I( S  @3 d' m$ i8 B* _8 y% t                        LED1=0;
8 Q0 g  W8 \9 l& Y6 m                                unlock();9 ?( i, t, E3 ~. c* k
                            for(i=0;i<100;i++){Delay10ms();}% }+ U# E, s: q  N" P% b, v4 Q& [3 P
                    continue;
$ A3 o/ ~( ]- o                     }0 `& x0 _/ {1 ]" s$ k. d# I/ |' V
                    if(dat==2)                                                        //修改密码
, k+ @5 J6 z# z$ {( O# i                   {
8 D3 R% M8 n6 a% _                       do{- A1 Z8 D1 `+ [7 z& E3 N
                              System();
, x. ?% O% `: A, m                                  press(key);, @5 ?9 i, [% ~! a/ X9 X
                                  again();
; V  M2 B! R6 K. i4 d/ r# x                                  press(iic);  H- U0 `; x' E
                                      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]))8 y- T; F4 O! o, G! n* v( f
                                      {
; v! x4 R5 l' W* L3 F4 X+ @                                          succeed();                                //修改密码成功
9 Z: _0 |. y' g+ @2 d                                                  for(i=0;i<100;i++){Delay10ms();}1 W( M% v) Q5 ^8 J+ U
                                      Delay10ms();
8 f" S! V# n/ S* ]  _                              x=SendB(iic,0x50,6);, ?, m$ W9 c8 E2 h9 |" K" f( u% S
                                      Delay10ms();        $ G( x6 q9 R& Y8 o! }5 N
                          x=ReadB(iic,0x50,6);break;
3 ]; B  A- Y/ h, V                                       }# Q/ A4 i" b: u7 `
                                      else                             //修改密码不成功,重新修改 6 a+ M9 N$ u3 w$ P  y/ [
                                          {, e$ `$ r3 Z6 J# l8 L
                                              repeat();$ L! E& J4 Z/ V* o
                                                  for(i=0;i<100;i++){Delay10ms();}# K+ s+ B! ~  t8 z) P# ]% d
                                           }6 ^2 O! C, s' e! \+ D
                                  }while(1);   & d- {8 n, p  {
                    }
3 P4 U: _+ n: S9 O: `1 E                 ( I$ \) ?# d& R
                 }
9 P/ C- h$ ?4 x3 O1 ?                else                                                                           //密码不正确,重新输入密码 , e/ d0 A- ?' L- J  }$ s' h
                {
0 A: \" Y: K2 z+ P' Z                    j++;
& }) T. p. d" Z4 w5 }                        if(j==3)
. u2 O5 N+ ]7 h4 }7 o* Y! D7 h                        {. S8 B: `% y, ^1 O3 x% E9 N0 @( s
                           for(i=0;i<8;i++)
0 m8 k% E! m6 d, A                           {2 Y8 z% Q$ k6 i2 J
                              LED2=0;7 ]# `# n) u# G5 }
                                  for(k=0;k<5;k++){Delay10ms();}& o3 W7 R' _# s1 E$ k, x: G' A
                                  LED2=1;
. O; S% J5 T1 j  M, @' @+ L7 i                                  for(k=0;k<5;k++){Delay10ms();}. H) _* N+ `: `. c4 g
                                }. ?- ]; b, R: ~5 M' i9 H
                                j=0;6 Y5 [( X( G5 J7 F$ e: M! @( j
                         }
4 V" u9 s$ v( a. h: g1 O6 K                        error();; J2 c1 A5 e8 Z% _& N
                        for(i=0;i<50;i++){Delay10ms();}7 j8 N! q% \- c  F' T( q
                 }* b. k% L, F3 B$ {
}while(1);          " s+ T5 j* L2 u( x! d
      
. [9 V4 o4 M+ Y  A5 B% t  a                    
% X' {0 w6 |& L+ {' [5 s5 s           
+ T. n6 e+ e0 K: k2 g}4 d* ?1 [# y1 X  _( L; m

7 }% k) q  j' \1 P  L; T + Y1 Q( \% N( C) D
; C, z. ~: o6 j. `* K- _3 u

0 ~) m, I2 s( F! `
游客,如果您要查看本帖隐藏内容请回复

$ |/ o7 h' J/ o: p* k# h* D- ~
' B# }1 g  b3 o

该用户从未签到

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

    [LV.10]以坛为家III

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

    该用户从未签到

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

    2 E1 J2 l1 n! ?1 I6 l3 [1 {2 G+ A

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-22 08:31 , Processed in 0.171875 second(s), 26 queries , Gzip On.

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

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

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