|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
stc51单片机做的六位密码锁控制54步进电机自动开门 源程序
: i2 n' l9 M0 D2 w1 ~% i. j
$ T- F2 o- i$ h1 X3 }6 A. [
6 G) Q! m" s4 L8 ^1 k* ?单片机源程序:8 f, B% \3 h2 d$ N7 j: S
#include"reg52.h"" W; C9 t+ c* N" [: ^8 o% j V& {
#include"1602.h"% |+ q1 Y9 S% o$ e) [
#include"key.h"" [; Q! q. c. G0 |4 A! e r0 S6 X% }/ i
#include"54power.h"8 C1 r9 Z2 _; P7 T* X+ w
) T% J+ T9 o8 U- P) g
#define uint unsigned int2 z0 o) z0 P" A# F: f0 J
#define uchar unsigned char
3 O. { j4 }) @1 p! b* x4 X% K4 p' ?, u- g/ ]1 n1 u. @! p4 ]" e
void UsartInit() //串口初始化函数- \8 n9 }+ d9 @! }6 x, S
{
+ ]1 a! z+ O% _: w& N SCON=0X50; //设置为工作方式1% K6 J3 X4 _, o9 s1 j6 v8 C% O
TMOD=0X20; //设置计数器工作方式2
2 L S+ x1 x4 k* E PCON=0X80; //波特率加倍
/ N, c6 q) ]8 i9 k4 H TH1=0XF3; //计数器初始值设置,波特虑4800
8 \6 G# e# G% A/ C% U4 M V4 P+ r TL1=0XF3;
2 M9 Y' x; ~( |+ d. } ES=1; //打开接收中断
2 m( z+ B5 @9 Z" ?9 O$ z5 z; ] EA=1; //打开总中断
8 v5 z. u. V7 N1 S- @; b. E, B TR1=1;
6 p5 R6 z/ R& C5 M9 T9 i}
4 u8 t3 v2 M8 l: n
! K5 n$ K* @/ u/ G4 q4 Dvoid main()
( q9 M [( Q% P5 M4 Q1 B W* o{
% N4 k! U- ~" m8 Q# n+ q int i = 0;
9 ?# d y3 j. x$ o UsartInit(); //中断初始化
% `0 v- h; z: a5 r0 | init(); //1602初始化
) o. U; S" q* \ Z while(n). [# _; I- K6 G2 V. [1 Q" s7 }6 g
{7 b4 x- F; k C7 a0 X5 ^
t = 0;
0 {( k1 N3 X E5 ~& g printfstart(); //1602第一行输出“Welcome back ! "6 Y3 I$ s0 k/ C. s
printf(); //通过串口1602显示屏显示输入的六位密码6 _* a, r8 [% A' a) H
write_com(0x0C); //开显示屏,光标不显示
' {8 B: }. c, w check(); //检测输入的六位密码,正确灯亮. ~6 r2 D$ o+ Q7 D v# r6 T9 R( Y
write_com(0x0F); //开显示屏,光标显示
9 x9 j- L) r& X) S b write_com(0x01);- u1 Y1 _. K# s5 z# y$ w1 @
}
4 |3 L* ^1 M$ K0 B while(1);
. }6 {- b8 `0 D$ u5 [& u! X}( |0 X/ g7 L* ~
* B, V. _! C, Ovoid timeint(void) interrupt 1
: c& x. o3 n/ v; T# m* s{
, G$ H$ s5 ^3 w' T0 c/ [ TH0=0xFE;& Z' E$ L4 A- u; q( e
TL0=0x0C; //设定时每隔0.5ms中断一次) N5 T7 W; L; c/ [
count++;( o# t2 K" L5 ~ f2 ~. p2 ~* }" f
spcount--;/ J$ m y9 ]" j* x
if(spcount<=0)' d4 Q' d4 z f$ f1 p& `
{+ y# A2 T( d" N# o* c) K4 k; {
spcount = speedlevel;( J! ~% F( \* T( j
gorun();9 Q6 ^9 k8 z- m5 x5 V
}
$ b0 ^0 d6 J$ i O3 c4 g// turn = 1;* l/ H& ?) s* I' C$ }2 S
// step_index = 7;
* @% L7 |- Q0 [" D, Y( o( R// gorun();
& E3 O: N8 E0 b1 ?& p0 b// step_index = 7;% `/ |4 @- f% {( F
// gorun();
7 Z; q/ P7 b2 \' j% E6 n}( X% [3 T5 d* s4 h$ ?2 S! e
4 y5 l# L9 ]: j- Z- V* ?* ~void Usart() interrupt 4+ Z' F$ U4 U6 d" P$ a( C" c, a
{9 j+ _$ [) m0 K; |
receiveData[t++] = SBUF;* b& V8 p, h1 B( F1 I) X" i
RI = 0;
9 {2 h& @8 B- T/ C* R SBUF = receiveData[t-1]; //将接收到的数据放入发送寄存器
$ ?0 R+ B( C. v+ ]2 Y7 N while(!TI); //等待数据发送完成, O& l0 ]* e, [$ H; p) E
) ?% g. T2 Q% E3 f' ]9 }9 {
- s. N6 l* K8 f6 F, b% X. X
…………限于本文篇幅 余下代码请从论坛下载附件…………
" H! P% u2 _# M, T
/ u, i+ n7 t# x$ k( @8 [- m+ a& a
8 V0 p& o1 `$ {" N) c |
|