|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
stc51单片机做的六位密码锁控制54步进电机自动开门 源程序
" p0 G( `1 C6 Q; {8 ^/ Y, I% I
x; _2 U8 B! S+ X+ S8 ]7 ~单片机源程序:' E" X, \# B4 ]$ W7 o$ ] v
#include"reg52.h"/ V1 |& Z+ f. g
#include"1602.h"5 `* Z" Y- o3 \4 C) v
#include"key.h"
0 K+ ]- X- z; n# n) \; f#include"54power.h"& V# v0 T( ~- ^% K
+ J! A! O; a* Q6 l1 ?" O( V, z
#define uint unsigned int
1 e3 b) W& b# c' X#define uchar unsigned char
* j$ g6 H% m2 O4 k6 c7 R& i9 ]5 a8 T
: j- y/ O9 C8 vvoid UsartInit() //串口初始化函数
: }. W& l( @# \3 B# `$ Z& A) F1 E9 t{0 m' B& O' _* f# C1 ~. F7 `
SCON=0X50; //设置为工作方式1 w$ i# B% C+ p
TMOD=0X20; //设置计数器工作方式2
) ]- l0 |8 ~' r, J# [6 | PCON=0X80; //波特率加倍
f$ ^8 T1 `/ n! k TH1=0XF3; //计数器初始值设置,波特虑4800
6 Y9 q$ n; l! D4 V3 q TL1=0XF3;1 G& v6 E) w) T* s% F* r4 v
ES=1; //打开接收中断
% g! Z9 a7 b) a# c EA=1; //打开总中断
5 L; M- ?, D' f0 e# J3 @ TR1=1; / {' @5 T6 p- Y
}
0 d, M1 j$ ]# ]2 `; l. L' H' a0 |/ N0 O2 A4 f( L$ I+ V+ x2 D& z
void main()
9 d4 | X7 n# G; G{
8 c3 i4 V3 ^9 W* E- K4 F7 z int i = 0; 8 g; ^( L J: u; ]
UsartInit(); //中断初始化/ c8 Q2 b5 @8 ~
init(); //1602初始化9 S' q) p; J5 h- E
while(n)* G% E( R: z# e) {8 X2 x
{, C, B u& p4 J) B" _7 Y# M
t = 0;, |7 [: j! z/ b
printfstart(); //1602第一行输出“Welcome back ! "
3 y7 Q2 o; \/ j( ^ printf(); //通过串口1602显示屏显示输入的六位密码# R% Q p" I) B ^- G6 I* n, L, \
write_com(0x0C); //开显示屏,光标不显示) a; Q+ r7 W+ y' i8 n( h; O! }0 G
check(); //检测输入的六位密码,正确灯亮! S& J+ t" }) [, k$ u
write_com(0x0F); //开显示屏,光标显示% y2 ?* d( L0 O [+ d/ ?& F
write_com(0x01);" b& x; g8 I) D7 ]
}
( q) {4 v7 j$ _9 l while(1);
) n* x$ n5 S5 j: A}
9 _" n% ~. T* L5 }! N" B* q6 t, x
: r. F A$ w- T, nvoid timeint(void) interrupt 1 # x$ Z5 e. A! U4 y
{ ' \9 s3 ]2 [8 X) v9 W6 T) ~( ?, N
TH0=0xFE;% G$ t c0 N% U
TL0=0x0C; //设定时每隔0.5ms中断一次
1 A; B6 I& Z' y: h+ l count++;& t: H, v1 \. x! k, I% t- ]
spcount--;
7 Y& q6 e h4 D+ e H" |7 `# l/ a if(spcount<=0)
' K j8 q0 A/ x; |8 }4 x {
+ w5 H3 M+ @# H: {( N spcount = speedlevel;- f* P( O% T& N6 `& G" a, { A
gorun();0 |% [+ n+ }8 ?6 p$ v3 _& Y
}
7 w8 g) H4 j! l# v* T// turn = 1;
( A. \7 @$ L! p; i// step_index = 7;
) J: [# H# S0 Q5 N! X// gorun();) d ^& b; `% Q8 G; P
// step_index = 7;9 E) g% b' s& M) Y' L3 x
// gorun();: Q2 K: O" }1 _/ q* r6 f* w6 u
}- o: |" x: I4 i# Q3 W6 X
' T/ Y; o) ^, z" O# L/ E
void Usart() interrupt 4
/ l' }: C# {* i7 ]9 \; G{9 ]( S7 d2 W' g" ^4 G; u
receiveData[t++] = SBUF;- q. S3 n, l i( ~
RI = 0;$ J" H* K: _# y
SBUF = receiveData[t-1]; //将接收到的数据放入发送寄存器
2 K) F$ A2 D& A( X( c while(!TI); //等待数据发送完成
2 U; T4 P1 {6 f# I
5 F" H8 d' x, }
& y S) Z" T/ \' S% t6 a/ s1 H…………限于本文篇幅 余下代码请从论坛下载附件…………
- y5 U" ~. [1 M0 p! E8 s; Q$ T9 ~, S; X5 n. l- X& g# R- L3 J% h/ G; F/ B
+ c0 z [# F/ I" r0 U |
|