|
本设计
) y7 @. Q0 `5 d1 |) c$ s8 A 基于STM32的矩阵电子密码锁protues仿真设计 资料包含:源码+仿真+原理图+PCB(具体看下文资料清单) 原理图:Altium Designer 仿真:protues 8.9 程序编译器:keil 5 编程语言:C语言 设计编号:C0034 主要功能: 1. 液晶屏幕实时显示矩阵键盘输入的密码; 2. 4x4矩阵键盘可输入6位密码并支持循环覆盖; 3. 有密码输入正确或错误的声光提示; 4. 带重新输入功能。 # A e6 {3 y h: X' Q
仿真图(提供源文件):
3 b8 f6 u8 D0 e+ k+ l& K
8 t# p$ r* v$ f; y) Z0 L; m; ?0 n! f8 ~4 L. i
原理图(提供源文件): 6 m7 A& c9 w; ^& w* n& ~4 k k
PCB(提供源文件): 程序(提供源文件源码): 以下为部分程序: - void main()* t. b! n# C' Q4 m/ W, R5 ?* i
- {
3 }) J, Y% k. ^0 J% d" C& g* P4 `, w - init_eeprom(); //开始初始化保存的数据
Z! C8 |0 \ M4 @$ g7 ~ - Init_LCD1602(); //初始化LCD1602 K/ Z0 w5 _/ l& o* [1 E
- EA = 0;
9 h$ w0 a& C" M% f - Data_Init();3 ]& V4 S5 @' R# |% T. p, J0 E) c
- Timer0_Init();5 z3 |) i% [' l1 i; p4 E8 l
- //初中始化完成,开断
) F7 I4 [! m6 V9 v5 x - EA = 1;7 i, F) s0 X$ R- h- J& N. B+ }
- - `* O: W+ k0 `3 p$ P1 r0 x
- // Get_Maopi();
# m1 [9 ^* S; f) X/ S, I - LCD1602_write_com(0x80); //指针设置
5 j: B1 D. f- e7 D- A( V - LCD1602_write_word(" Welcome To Use "); //
" d/ `" f8 F) T( w# X( F - LCD1602_write_com(0x80+0x40); //指针设置
1 P7 s( f6 y& a5 p5 D# O: f6 s - LCD1602_write_word("Electronic Scale");
8 |% ]& R5 v' M0 Z# ]( S - // Delay_ms(2000);% a1 Z1 E9 Q9 n
- Get_Maopi();3 P& U' h7 M% h6 W- {
- LCD1602_write_com(0x80); //指针设置/ j* V! _' _- s! C! c1 Q
- LCD1602_write_word("WE:0.000 PR:00.0");
) v) L7 N: y9 b# D8 u/ n6 C' f5 T d - LCD1602_write_com(0x80+0x40); //指针设置1 G) O6 L9 g& n! c
- LCD1602_write_word("MONEY: 0.00 ");9 A) j+ q# R7 c& D
- Display_Price();" D' K# Z' P# [1 D: m7 {
- // Get_Maopi(); //称毛皮重量
+ }) Q% @8 e' t - 8 e6 ~7 |8 i1 m i0 U" h' b4 m9 y
- while(1)
8 v: C- ~% i" w1 T4 l - {
3 S2 a% @0 H/ C* H' Y - //每0.5秒称重一次! [7 Y( b; J1 Z/ v3 ^1 c% | u" s' j
- if (FlagTest==1)1 b2 |6 O9 J0 C: F. Z. d
- {+ W5 m% ]; @8 S4 j8 V% Z. h1 `
- Get_Weight();
8 @, F* W/ W/ ~. U - FlagTest = 0;
8 F% G: \$ u% U" X - }
* j" h' S+ v, i, H" p! c# K5 } - 2 K! i* d! P7 {/ V9 N
- keycode = Getkeyboard();
: I- o$ w) t2 ~5 ]" A3 | - //有效键值0-15
% e/ u1 T( ^; T! K1 I) v* J3 _( ? - if (keycode<16)
1 h) C) t, A- f1 P/ |1 t9 s, E - {, L& h/ o0 }- {: X/ T0 I
- KeyPress(keycode);& }! E& N" v9 Q
- Buzzer=0;
' x6 n. c9 M: k/ k) M - Delay_ms(100);
. ?7 ? g8 L( a - Buzzer=1;
$ e! ~$ u& _3 p: y: E( |+ [, \: b# |# G - while(keycode<16)0 J: h8 w& Q8 m! O6 p
- {* i" `+ A( W1 _2 T' y" Z$ X
- if(keycode==12||keycode==13)% K) w8 j+ K5 }5 _/ H' s
- {
# Q! ^, g5 n$ d ?3 _ - Buzzer=0;
+ ^) ]- t, p* S( x& D: S - Delay_ms(10);) C2 T' D6 A3 H, b! J, H
- Buzzer=1;! _, T0 Z& v; v% C/ y7 x: Q$ l
- KeyPress(keycode);
9 H" A0 f0 [0 r: B4 K% c - Get_Weight();
. k' h' ^0 K6 x& P9 u9 |6 J - flag_key=1;
, e; Z; @( E4 Z a2 u( c$ z - }
& h1 C$ f3 k3 @5 Y- p - keycode = Getkeyboard();
$ O* W# \! Y' l7 M; K5 m - }1 F1 ?% n" ?/ ] v! c/ V
- write_eeprom(); //保存数据5 v" Q+ J* {; ?
- }
& ?" L8 B6 y5 {& D5 h) a3 [ - }
8 j9 O% P& S. u/ W/ L9 T9 J0 s - }
复制代码 ( V8 J- B3 T4 z
|