一.硬件方案, A: z4 k$ I6 V& M
门禁系统采用STM32 单片机作为控制核心,外围加蜂鸣器控制电路、开门指示灯电路、电控锁控制电路以及液晶显示电路等。门禁系统主要组成:由CPU、复位电路、电源指示、工作指示、振荡电路、蜂鸣器电路、门控锁电路、出门按钮、读卡模块、显示模块等组成。采用射频卡完成刷卡进门,按钮出门功能。
# q9 y8 E; f) e主要由STM32F103单片机+LCD1602液晶显示+蜂鸣器报警电路+RC522射频卡+继电器电路+按键模块;如图:" i8 s- G }% p- a# q
4 w; X+ h: V2 b& T' Z1 _( f
& s0 I( X5 F9 ^! k2 e; q- |, S3 r! C
6 e. X: @2 Z8 r. ?, {! S
二.设计功能" ]6 _/ A) S7 T. e& b* T/ s
(1)采用LCD1602液晶显示当前信息。
* K7 j0 b0 ^* q(2)按键对当前的ic卡进行注册、删除、返回。
1 B, F6 f! n# O# s(3)注册成功后,刷卡成功继电器打开。
- P& X1 g0 }4 b, g(4)感应到IC卡后会进行蜂鸣器提醒。
1 R/ B0 ~ T, [/ K2 w
8 y, H' z/ b; R* L8 _ v0 |三.设计原理图! \% z( ]# X2 ]2 t$ B0 g! r+ B3 W
(1)原理图主要采用AD软件进行设计,如图:
5 c5 n5 j7 l9 J8 \" n$ w
& _( l1 {; f: y$ P) L' g
]8 p, d' Q# O C* c5 F2 y' [5 o/ K3 m6 a
(2)PCB图如下:
" j" H: a# V. p5 X/ v
`- \; y' G9 D3 }+ ^
, w( i1 [ e9 ? p
4 L4 @% ]0 Q) V7 ^: Y四.软件设计
' u8 B9 q/ H' _% f) o* V(1)程序流程图
, t' H, S7 g! ]" g' N/ w. _& p
/ n4 N+ o! z1 x. E7 J9 E, V, T
9 V* w2 r+ f: X; m8 q9 G4 q7 g9 G, S3 P- O1 e0 ~) @: o) H
(2)主程序源码8 j# {) `' X* ^% K% q
8 Y9 R( @% m# g* z* v1 G1 s0 }) @
- int main(void)1 j }; I5 F3 ^4 s* W4 a
- {
" G& K2 f9 o3 e# z3 J7 K - u8 stauts = 1,key;1 e* a' L! t0 S7 G9 I* f
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
. c' S7 v5 t: U5 v( u, g - GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);* ]$ i# ]$ b2 T% I; a% `2 q- H
- delay_init(); //延时函数初始化 3 }$ W# _( S7 k4 H. n
- KEY_GPIO_Init(); //按键初始化( `7 C+ E0 _* S! I c8 F
- RELAY_INIT();
$ g4 P% b/ d$ N7 g% A9 ?$ s - Human_induction_Iint();' _) ^1 ?# z0 G
- BEEP_DISENABLE();/ Y" j( t, `0 M9 X( F! h3 G q
- delay_ms(100); //上电瞬间加入一定延时在初始化2 |- J# J8 ~ g6 b
- LCD_Init(); //屏幕初始化
f" s/ E, Q8 p) i; j% N - LCD_Write_String(0,0,"Please Bush Card"); k' V+ d( T6 p8 B: }
- CHECK_NEW_MCU();
& Y( J+ o5 a2 m, J2 y+ H% I& Q; e - TIM2_Init(1000,719); //以100Hz计数
. }5 s4 ]4 H9 O0 m2 h4 c+ R - UART1_INIT((u32)9600);' D! w3 @7 S. t
- RC522_Init();, G% B* k9 s; p
- PcdReset (); //复位RC522 3 f4 j: G+ e( a2 f% c
- M500PcdConfigISOType ( 'A' );//设置工作方式
! N% \% b' e0 T6 j - ( ]3 p& M9 H5 _% ~/ [1 e
- while(1)
# z; t; Z- H) J- @3 t/ c- T$ e - {
; O# ]! H/ l. s' V1 S4 Z - : V0 J9 ~, k6 v# N/ j+ Z
{$ T. h+ y* \/ [ m- if(key == 1) stauts = !stauts;
+ S, r7 b! T0 z& W7 V - if(stauts)
$ k/ j+ o& E6 T# P - key = COMPER_ID_MODE(); p5 h2 I& _0 ]9 y9 L. s5 F% n' ]
- else g5 m. l2 U8 M
- {
% u( }: }! J! V/ Z, T - key = 2;- b* G: I, q& B0 d3 _5 p
- while(key != 1)
, ~' }) |- t* Q/ K9 e4 d - {2 o# d* C j2 A2 {, J" D! O- D
- switch(key)
# H8 }& Y) j' ~4 M - {
8 X% J r6 o0 D& t, K' L9 a - case 2: key = ADD_ID_MODE(); break;9 k6 E2 Q, x4 [5 Q2 X
- case 3: key = DEL_ID_MODE(); break;0 i' q5 O* a: T: X" `0 @
- case 4: CLEAR_ALL_MES(); key = 2; break;
. T3 J4 U) u+ u. S7 \4 z - default : break;
& T! J+ w& m& F& \ - }
. b5 K4 z3 C4 f9 u( h- n% w# M6 W - }$ n, S5 l' F" ?* e/ ~
- - u& Q' z, O3 h4 c- }
- }8 E/ H9 ^6 a4 g6 y# l- P
- }
( l6 p5 |$ e. W# s - }* c% B. O. H5 J6 n
- " q- U$ Z2 n/ W2 d1 V3 C
" ? x' ?& F1 O4 n$ \3 f9 Y0 n
复制代码
3 r2 ~: S0 T. y, J' R |