一.硬件方案0 _- {7 K1 z% K6 r9 r
门禁系统采用STM32 单片机作为控制核心,外围加蜂鸣器控制电路、开门指示灯电路、电控锁控制电路以及液晶显示电路等。门禁系统主要组成:由CPU、复位电路、电源指示、工作指示、振荡电路、蜂鸣器电路、门控锁电路、出门按钮、读卡模块、显示模块等组成。采用射频卡完成刷卡进门,按钮出门功能。3 ?, f" p4 {1 _
主要由STM32F103单片机+LCD1602液晶显示+蜂鸣器报警电路+RC522射频卡+继电器电路+按键模块;如图:+ s, A2 W8 T0 ]/ U" q/ p4 E% i5 C; ?
; s3 i3 i4 B4 Y% R! g
( w( ]" t+ V/ G( S" M' c5 h* f5 B) N: u" x; n1 \+ ]* s' A
二.设计功能
5 x# f: o; J6 \. C7 h(1)采用LCD1602液晶显示当前信息。' h8 X8 U; M- k7 O+ P' @
(2)按键对当前的ic卡进行注册、删除、返回。+ S1 A% ?' J) H' ^* {
(3)注册成功后,刷卡成功继电器打开。, P/ ~- `1 C5 N
(4)感应到IC卡后会进行蜂鸣器提醒。
! V8 ?1 E# g1 U
5 R) g' c' A4 }" b4 Q2 b) N三.设计原理图
( R7 ?% G" B. }# J(1)原理图主要采用AD软件进行设计,如图:! b. |7 B, I. X1 {2 W, w ^: R
7 e6 b1 U; T8 }0 V8 Q8 v8 _* F
, {6 }! U& ]: N: R1 l O k& v5 [( T1 t
(2)PCB图如下:
( w1 Q7 u- M, S3 K1 c0 o, i7 z/ h! P, S: j _) ^2 A; ^) U
" m. f$ o( j$ ^% E5 Y5 o6 K2 a2 g/ w9 U3 a
# M: r, M/ k/ o/ @: q四.软件设计
7 [5 d+ V; y1 K# H1 Y6 u2 d, d(1)程序流程图
4 H' t4 \ g# u8 d1 `5 k1 p" `: ~/ i& v0 p/ p+ Q" E4 S% G
; ]' `4 @* L; t/ m2 K+ X6 K$ T. m) h. x% j7 Y0 V/ `' S
(2)主程序源码) h) _' `8 S$ u/ K6 k
' A' s3 ^6 J5 T9 [- int main(void)
: q& _8 v7 J2 H4 L9 Z5 [- a" h - { , p, n, P- P4 A
- u8 stauts = 1,key;; R0 H2 Z0 C4 x I9 N8 `5 o! F
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);) q8 y# r6 ~5 C/ r4 K' I2 ~
- GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
- Z; J0 i. `$ d) K! r+ v - delay_init(); //延时函数初始化 $ m" b1 Z1 w q# m [
- KEY_GPIO_Init(); //按键初始化
; D7 T8 y; y% V' i( F' e1 d1 _, V - RELAY_INIT();
4 L' N) v$ x; w. ]3 o - Human_induction_Iint();5 p) H1 M1 ~ s- [
- BEEP_DISENABLE();) I4 o1 h2 \; V! i4 I$ h. n6 |% |
- delay_ms(100); //上电瞬间加入一定延时在初始化
2 P. L3 }3 `% {; }: e8 I, ] - LCD_Init(); //屏幕初始化5 E6 d8 y3 `4 I7 R% a
- LCD_Write_String(0,0,"Please Bush Card"); 4 j( W% S' ]: m- ~; M
- CHECK_NEW_MCU();& c( U3 t: F8 e; W Y7 U
- TIM2_Init(1000,719); //以100Hz计数( e) {* j8 {" G7 c6 M6 b) j: w
- UART1_INIT((u32)9600);
( ]" i. E7 \0 R0 D2 j - RC522_Init();
8 b8 k' t: L2 n" w n7 [3 ~ x - PcdReset (); //复位RC522 8 `0 V$ H6 J# y% Y
- M500PcdConfigISOType ( 'A' );//设置工作方式
4 U1 `5 j- z3 n) s - % f3 L3 K- k# t1 X
- while(1)5 u! b# P( v. O: R6 Y0 W
- {
) F, ]8 L( G+ k' K - . y* l5 ^* Q. o
0 A# z7 g! ~$ C% H v- if(key == 1) stauts = !stauts;4 ^$ P* w- Y. t+ Y6 \
- if(stauts)
& x2 m! N+ b9 n7 S - key = COMPER_ID_MODE();
$ C+ `3 t1 C. W( }/ z9 }; x - else' ]& K* F7 j2 H: s+ R. W7 ]
- {
& ^1 s: J0 e: z/ m - key = 2;
9 @# T( u8 W5 O! v0 O - while(key != 1)% q4 V! P- P$ L# B2 {6 v6 X$ e8 a
- {
) p% U, E. h" a; d) w - switch(key)4 A, k, \8 v% c/ T
- {, D) W" Z/ z+ ?6 w5 [! t1 G
- case 2: key = ADD_ID_MODE(); break;
6 {0 W' V" b2 W+ @ - case 3: key = DEL_ID_MODE(); break;
0 w8 Z% s# j2 f7 x$ N7 S - case 4: CLEAR_ALL_MES(); key = 2; break;" M& Y& s# L: H2 M, g3 m
- default : break;# x& D- Y4 H7 x, z& r6 Z
- }
8 G! r8 [0 R) c0 s l- F: D - }, L' w$ h. |8 s; q8 v
: P7 q6 t* A- A- }
- D- @4 P a W, _* v - }! L% r9 H: l) Z; v9 f
- }6 K+ M' m: T4 G+ C6 b# x
- * p. s9 w( { ]: I1 |- V
- 2 l( a5 j3 M+ D2 ~) t- L
复制代码 + i, G" w, ]* \# f
|