你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于stm32F103C8T6智能门禁经验分享

[复制链接]
攻城狮Melo 发布时间:2023-5-1 18:01
分享一期 RC522刷卡模块做的门禁系统(上面是视频呈现)
2 y. {, F. l6 j# w! U1 K功能文字说明(拓展空间非常大)
+ i- H( k0 j1 S
( s$ I) z8 g+ i+ ]5 C识别卡号以及卡类并显示
! h. B2 V0 H4 G+ O1 d: n$ J

# a' m* w1 q5 T刷管理卡 按下按键 提示刷卡录入(刷未录入的卡即可录入)
, a1 e2 c& o$ l) U& f! \! I, {' M' n4 }! V! U2 p% a/ x
刷用户卡 按下按键 提示刷卡录入(刷未录入的卡即可录入)
9 o$ G7 r, Y/ N) l$ q2 R- e: Q/ {! O
4 V. A/ D2 `" g
再次刷卡 会显示卡号以及卡类& o! [1 }6 @3 m; }
8 g- w" j( Z6 G( ^: o
实际的项目中添加了舵机,语音播报模块,大家也可根据自己的需求任意修改5 ?: r1 p/ `7 D- p. j

2 H# ]( e% _& d" w本次演示所需硬件介绍0 S1 M6 t1 `( o; l2 p5 A4 I( F- @) R

8 |5 v* J& f8 ^. d; t3 C
" ]! H$ n& n' N" v
F103C8T6最小系统% i- U' S' U2 [: \  C. O$ b; Z

5 u% Y. {9 N. j* y% [5 Q: Y
20210630150249385.png
- S: \" k* l/ Q
, I3 ^4 E- _2 W! t$ W
; I7 W' I' }4 g# N8 z" i2 u$ N
RC522刷卡模块
/ K7 S0 ~# ?& O6 d0 l2 j+ [5 ]& H接法$ r  e4 u3 q& N( }) a" e
VCC接3.3V; @+ @# }. z4 A' q9 z# w
GND接GND+ S( y( A1 {, v% M. w) L
SDA,SCK,MOSI,MISO根据引脚配置连接9 s" O9 Y3 `7 M3 e/ A
RQ悬空(不用接)6 X4 Q; B% M+ w
RST接3.3V(波特率设置为9600); O- M9 l0 c) W+ R( R# o- V9 K8 m
- B0 x. T$ r3 q5 i6 Z9 V6 u
20210630150120352.png
! G# V4 M% t8 {0 D& R
" W. Q3 d: M, k8 }2 Z8 x! M
轻触按键
! q5 b+ J; L2 B& \$ _' C; y. f找一块以前测试的洞洞板, 随意焊接一个小按键,对脚用排针引出更方便连接(节省成本 向我学习)
0 q% @9 y' P& J/ {
1 v9 @5 u: T- z0 j7 [( a
Y0Y0)%~}5S7_253%JTM%)JS.png
* l5 [8 O8 W3 H( {* U6 h  k2 y/ O0 |

* }& @% F6 z; e部分代码
' k; t, z1 [& A4 j1 R5 O( s" L) e! R6 M
  1. #include "stm32f10x.h"
    3 p" V1 o% c" d" D2 V1 o
  2. #include "usart.h"( [4 m7 \# E$ O+ s; d
  3. #include "sys.h"
    9 o1 Q6 ?3 b4 X. F  l3 j  A, s2 ^" Q
  4. #include "oled.h"
    . p6 a- U9 `3 {' r& J5 r! E9 A' z; S& c
  5. #include "delay.h"2 D/ f% b: T9 p) {" z
  6. #include "rc522_function.h", V$ s/ w0 |  Q  H
  7. #include "rc522_config.h"! ?6 @: Y1 Z+ O+ i. R
  8. #include "timer.h"3 R; C+ [( b4 C- y/ G
  9. #include "read_card.h"
    * H! N" X0 g, C
  10. #include "rtc.h"
      p$ x1 X( Y, Q3 U, O
  11. #include "usmart.h"9 p  |; u% ?3 o4 S
  12. #include "key.h"+ q" E. P" c4 U4 Y2 X- N
  13. #include "stmflash.h"4 ~- v2 X) z' K
  14. #include "MP3.h"
    ' x* N$ I4 E; j( R- n' ]; i
  15. const u8 TEXT_Buffer[]={"STM32F103 FLASH TEST"};
    7 f1 P0 l* Q: H$ S/ J; k8 I/ f
  16. u8 USERResult;//IC卡匹配结果
    0 t) n; I2 g/ U3 F0 p3 D
  17. u8 Look_Start;//门禁状态
    ) _' \' E6 u% ^: y, M3 ]5 C
  18. u8 Key_Value;//按键值: }5 s9 x4 ^, x3 b' Z
  19. extern u8 flag;
    # M" k3 c3 l; n5 Z
  20. extern int lu;7 \/ \' [& v  }4 _
  21. extern int lz;
    ) S/ I+ w- i* Y
  22. int main(void)( v9 c7 G& _4 r" n4 [
  23. {& `  O' i  T# B3 ?6 _2 y2 E. V
  24.   u8 datatemp[30];
    ) n8 b* s0 D1 n+ j* C
  25.         u8 sss,aaa;
    : ^% F1 O( Z0 o
  26.   delay_init();        " N, G- j8 J6 J
  27.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         
    $ y' @, O+ ?2 O0 S2 k* H3 Z
  28.   uart_init(9600);5 h: X: M: u" N) l7 d; v" `* u
  29.         TIM3_PWM_Init(899,0);( |# I& R7 U- M9 I
  30.         RC522_Init ();5 h1 Y% \3 E1 R1 H
  31.         KEY_Init();         
      B+ ?) a% m/ O3 d' ?" k
  32.         usmart_dev.init(SystemCoreClock/1000000);       
    6 a+ C! ]3 W: v$ t( p  [
  33.         RTC_Init();
    ( |( ?" j# E8 G' h& h
  34.         PcdReset ();
    " z  k* e/ e! y( x/ h# _
  35.         MP3_Init();/ G0 `# _% W: C2 }! z0 p: J
  36.         M500PcdConfigISOType ( 'A' );//设置工作方式
    / ]. C1 R4 V$ T8 p
  37.         OLED_Init();                        ' W2 W! x9 I: p8 E( ?6 }9 V3 H
  38.         OLED_Clear();% \/ k& M& T% i/ B% S4 m
  39.         delay_ms(100);
    . C8 X" V$ r1 v4 W! `; J
  40.          while(1)2 D/ ^& E: R4 Q3 p/ i
  41.          {1 H6 E  I8 [7 C0 E9 V# z
  42.           display_time(0,0,calendar.sec);//显示时间
    # t* t. s& z; u6 i  E
  43.                 oledkaiji();# p1 ~! ^  F  J
  44.                 delay_ms(100);
    : _: C3 Y( `5 h7 ?% O% U
  45.                 IC_test ();//IC卡检测,还需要修改                 
    * |' y* p0 X1 U5 K2 Z" ^$ C7 G
  46.                  Key_Value=KEY_Scan(0);
    2 G$ s6 \$ s! `1 `- X6 \
  47.                 if((flag==0x01)&&(Key_Value==1))
    ; x, |$ ^. z8 _! t* v
  48.                  {1 {& _( i( C3 |, C4 A% k
  49.                          OLED_Clear();# O' |7 W4 ^7 ~% G
  50.                    cunka();//显示 刷卡录入
    4 n4 e: k4 P4 [! i
  51.                          //舵机关闭! {6 e# G, H. a* m; u$ e
  52.                          delay_ms(1000);# `" X* a% N2 x' _; Z' e5 x& @0 y
  53.                          while(lu)
    " `- x7 T7 N1 V2 y
  54.                          {         : h4 k7 ]: _3 B* O9 @2 p* p
  55.                           lurukahao();' e7 M' X5 [; m' D
  56.                                 //duka();
    & V0 d& k3 g. H  c+ Y' g7 E
  57.                          }; X, z& h5 g8 l) p% I% K
  58.                          flag=0; + a# `% S$ Y/ g9 {# h+ ?
  59.                          delay_ms(1000);2 e  A- {9 g4 Q; g
  60.                          OLED_Clear();2 H0 Y1 |5 c+ Z+ }
  61.                          OLED_Clear();- b0 L5 {: p5 C+ i
  62.            }5 ]. u- T$ I* j, c, a
  63.                  if((flag==2)&&(Key_Value==1))5 y; C) t7 S1 @8 {
  64.                  {
    & P) @2 O' w/ s3 k
  65.                          OLED_Clear();9 r8 i9 E% R3 m2 Y; i! e; f
  66.                    //cunka1();//显示 刷卡录入7 Z7 E9 K6 u# z6 u4 N0 B9 W; F
  67.                          //打印卡号,保存到flash
    + j# V+ N" O1 a! q
  68.                          flag=0;
    5 |# v' S% Y* L
  69.                          delay_ms(1000);1 d) l( S  w2 f9 X, t2 l% ]8 T  u
  70.                          OLED_Clear();
    7 U9 F. D, |" m: j/ |; m
  71.                          OLED_Clear();
    # S/ J- a; g/ B, a5 Y. S
  72.            }
    3 O* A  l; E: m  `
  73.          if((flag==1)&&(Key_Value==2))+ [* n$ m# G  K: Q5 A
  74.                  {
    % `' A; y% v6 A0 m% B
  75.                          TIM_SetCompare3(TIM3,37000);! H" P7 B7 O3 `4 D# C
  76.                          flag=0;
      R0 c. t7 n1 C5 F# @( n+ h
  77.            }7 J" _! P. b5 i* U
  78.          
    ) Y$ b) W. @" w7 T
  79.                  if((flag==2)&&(Key_Value==2))1 Z* f" a) F: ~. V
  80.                  {3 S. c0 q7 B2 Y1 n/ v4 Z
  81.                   //MP3_choose(3);//没有权限关门+ P9 O3 V# b- k2 j0 X- P5 D! r
  82.                  }                         5 D  \5 R$ |' V
  83.                  / T$ c! L$ A; l* H; K
  84.                  if(Key_Value==3)# {% l1 S# p! O6 V9 B' E
  85.                  {
    # I1 O- k. U# I
  86.                          OLED_Clear();
    9 s3 b) F: `/ r, C+ s2 y* S# v
  87.                          while(lz)
    : }. _/ {0 `4 q4 |3 |
  88.                          {         
    - k) S# k* l4 e) x4 K
  89.                                  - ?: I3 R2 j* A  t+ I7 c+ H1 `/ m3 X
  90.                           //shanchukahao();6 n1 c) @$ c) [- X
  91.                                 delay_ms(1000);: q4 |  p* Z7 N" |$ l, l. O
  92.                                 sk1();8 N- V4 _+ V1 R, T* Z% I
  93.                                 OLED_Clear();
    ' H5 p  {/ q, j4 ^- O; y! E! [3 V" o7 E
  94.                           OLED_Clear();5 E) I0 D5 h/ T6 d
  95.                                 //duka();* A' E9 [4 y6 k2 x5 O* i) p' T- O
  96.                          }2 g3 I" J  ?( i
  97.                     //flag=0; ! I' J! |5 K1 V. Y- e) s4 U" k
  98.                  }
    ' e& D; |' L6 A' C
  99.                  $ J3 D5 S+ a/ w" H
  100.          
      \; o" |$ t0 i- q( U0 U7 L
  101. }7 D# h2 X- {% S
  102. ; N. f; h& a- z1 M7 Z; n+ z
  103. $ g5 {& `8 M7 D9 {% s
  104. ' K( n. W7 M' t! M

  105. ! p! N6 |8 C% t& k$ H+ R

  106. $ [% [* \2 q( X* _( v4 }
  107. }
    + R' |, J) {8 u" L3 Z
复制代码
+ P! r$ \# e4 M0 ]8 J$ r
————————————————* d' `' s* i" j& H
版权声明:文某90 L$ m$ Y" |# e
如有侵权请联系删除
: Y- w+ Q. Z& m+ g, }, ]" B1 ?" p- j' {0 j7 ]/ Y3 x, ]( K
$ p$ N0 k! D/ V3 L
赞 收藏 评论0 发布时间:2023-5-1 18:01

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版