一.硬件方案8 Z( j! o/ i) ~8 w! l! E$ |
门禁系统采用STM32 单片机作为控制核心,外围加蜂鸣器控制电路、开门指示灯电路、电控锁控制电路以及液晶显示电路等。门禁系统主要组成:由CPU、复位电路、电源指示、工作指示、振荡电路、蜂鸣器电路、门控锁电路、出门按钮、读卡模块、显示模块等组成。采用射频卡完成刷卡进门,按钮出门功能。
6 e: r3 M! u0 b5 X( _: i主要由STM32F103单片机+LCD1602液晶显示+蜂鸣器报警电路+RC522射频卡+继电器电路+按键模块;如图:
% A6 ~7 F& e% J. x) B' G, M# R7 _' ] M% v' L0 G e0 H" |/ M
" @+ ?1 M: u0 E+ s( |4 \
( ^- ]$ {* g6 P* D+ t二.设计功能5 n! ~; u$ S, r
(1)采用LCD1602液晶显示当前信息。8 C3 M! S8 Z1 B& Y/ c
(2)按键对当前的ic卡进行注册、删除、返回。5 Q0 f5 @. i/ B! K
(3)注册成功后,刷卡成功继电器打开。
% Z8 [% y! h. V* @' Z* }: h(4)感应到IC卡后会进行蜂鸣器提醒。
8 Z& L* f" R! G9 r5 S2 ]/ h% ?% m a" s) [& V
三.设计原理图
2 T7 X( {% u/ p(1)原理图主要采用AD软件进行设计,如图:
" R, A& S' ?# r& V/ ^) j. b9 y5 S+ `' V- I5 G
# d6 T- A- B, b3 U, S8 @6 N6 Z
) m# n1 k4 G7 I, ]. G" e5 l
(2)PCB图如下:
9 N1 R$ u& \" |1 M9 S& C$ n, o( l1 ~/ ]
" [$ k) q$ ?1 w5 |* W4 S! e+ w5 N; |2 c# S# N
四.软件设计2 \6 I; b P/ t1 n$ w) }
(1)程序流程图
9 d$ p5 _) F: \4 d$ q" U, e- s4 x' X* m( ~7 ^# I( x6 |1 V4 p) L) s) \$ r
1 V9 M" @3 O# ~7 M& T1 O/ ^! J Q& n8 D5 X
(2)主程序源码' |% a& e" T1 R" N. B
/ |( j1 O e# [$ K
- int main(void)8 x1 H; @7 \ v8 C% U1 f1 @
- {
: e: s* M. N* ?7 N; M. t$ H9 k) s - u8 stauts = 1,key;
# Z, i O. Z8 S) E - RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
# u) ^9 p! {' x2 q4 _( V - GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
( U' v% _5 h* p) i6 S- o - delay_init(); //延时函数初始化 " L9 b+ Y) j" b$ R7 e
- KEY_GPIO_Init(); //按键初始化
" c, a# T6 i* J5 c - RELAY_INIT();
. p, n2 C" s+ r1 K# U. ?1 Z - Human_induction_Iint();
: i+ h( y; u- ] - BEEP_DISENABLE();
V. k2 k. o5 W% x5 Q8 Z, ] - delay_ms(100); //上电瞬间加入一定延时在初始化
% y3 ] Q& w* Z! u E - LCD_Init(); //屏幕初始化8 K7 G4 J; r4 J2 {* v9 C
- LCD_Write_String(0,0,"Please Bush Card");
0 T2 t, }; R9 B" J# A' f - CHECK_NEW_MCU();
% Z0 Z* v" X/ J# Q$ a - TIM2_Init(1000,719); //以100Hz计数
" r7 R1 D8 b+ o4 T0 a J* r/ B1 n - UART1_INIT((u32)9600);3 N) `# i/ _$ }- ~* k) @
- RC522_Init();( y f+ g& j" r7 y
- PcdReset (); //复位RC522
' m0 O. v2 ?3 M) H! t3 i+ m: z, @' r3 @ - M500PcdConfigISOType ( 'A' );//设置工作方式
, g+ e. p/ Z+ i: m2 ?0 k# ?) n8 ^
* f$ |1 U. ` y. \) g- while(1)" M( K' s2 [9 r+ V) d! \
- {
4 P8 i' p" F7 v, g6 T3 g -
' T. D9 J; `/ ]# I: i X - & l$ I5 c5 F! N" H3 Z
- if(key == 1) stauts = !stauts;
& B" f1 }$ @: u0 i8 { - if(stauts)
) Q% V$ B0 @) x( o$ Y m) i - key = COMPER_ID_MODE();
9 V' w/ z$ g! Y# i; ?* E0 ` - else
: ^0 E4 F/ x2 K. O$ k - {+ |- U2 `) `' H- Z: w
- key = 2;
/ w2 B' H; g7 b$ R7 p5 u# g - while(key != 1)
; D T* ~. O9 J3 X - { u3 q- J3 D' [" a' F, s& r& e
- switch(key)
5 s: M' ^/ d' }, f$ D - {% V b2 ^. Y* R+ H# s, G9 f
- case 2: key = ADD_ID_MODE(); break;6 o, Q6 G: I& J$ _& I( [
- case 3: key = DEL_ID_MODE(); break;
5 i" I3 }+ H, C8 i - case 4: CLEAR_ALL_MES(); key = 2; break;" k. p" f) X) m3 J" T
- default : break;1 ]! f: Z3 Q8 l3 x& ~
- }+ w- ^# c0 M, } }
- }
" M) @" T. q- a; m% w
2 M+ x0 i# U" Z; D9 @8 V' u& X- }
* b/ M$ ]( m9 M+ e- b% i - }
* O& P0 y6 v( X* w, N - }* l* u: y" ?; r+ X' h
- 6 ~8 u4 I2 B* p/ r/ R
- 7 ]2 K$ X4 b; Y3 F7 a# s% D
复制代码 ! ?5 r0 k9 o* B( B4 G
|