|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
stc51单片机做的六位密码锁控制54步进电机自动开门 源程序/ `9 M9 q% I; a7 y) k
; e: j$ K- |( S
: X. E- y9 Z+ L5 l单片机源程序:# I( q$ f. a* s& L# ]" Q& W) S2 n
#include"reg52.h"
- B& } ~% p5 T% @7 I! q#include"1602.h"3 _0 V( ?* ?5 b* Y
#include"key.h"
( _* t+ b) e J* ~# D% ]#include"54power.h"
# B2 X) s, R5 `( @& s3 f4 m- g' I5 [4 [$ }9 m8 v8 m4 G
#define uint unsigned int
* k! p1 `6 i3 r% n' ]' m5 Q#define uchar unsigned char, W5 o" I4 u' b( s- @) F% ^: c
, N! V8 }6 u, [7 f8 K
void UsartInit() //串口初始化函数
! _1 R5 p" y1 O& z( O B{
$ ~ {6 G9 c" |1 q SCON=0X50; //设置为工作方式1
' U! x$ h7 P7 t: k; T& ^2 P. O TMOD=0X20; //设置计数器工作方式2
$ I' [& a9 J8 ] PCON=0X80; //波特率加倍
+ ^+ G1 p! e& B) S TH1=0XF3; //计数器初始值设置,波特虑4800
& `1 B( J0 g3 B8 l TL1=0XF3;
# Z( s% b8 `. _ n3 r; _ ES=1; //打开接收中断
+ U2 k/ h$ a2 g- ^) l EA=1; //打开总中断( q9 E: @8 n5 c, k; s2 N2 ?
TR1=1;
2 {9 h1 z' f8 n; ^! p}9 ^* O3 `! `9 {, G
+ R8 y/ d) c, |( Zvoid main()
# h8 D3 q2 U+ k# f) ^# f2 F{: D! h! @5 M+ Z9 p4 i+ p, U0 K. J a5 C
int i = 0;
; q+ O. x- g" n/ W e, y& e UsartInit(); //中断初始化
. I6 g* o- [0 A1 H1 F7 R* v init(); //1602初始化
: r u/ j9 S8 u$ S& r while(n)( V% j: `' C$ |- b
{" A$ L$ {# C% w) d9 q% N6 j) J
t = 0;
3 G6 G, H( m2 O0 j/ g5 Q: D printfstart(); //1602第一行输出“Welcome back ! "* ]; z- ^ I3 W1 C8 P) j$ [- k# p
printf(); //通过串口1602显示屏显示输入的六位密码( n) E& L( O) u$ V' y
write_com(0x0C); //开显示屏,光标不显示7 c ^( ?' W2 S/ k0 a+ [
check(); //检测输入的六位密码,正确灯亮
- _2 h" l! r) ` write_com(0x0F); //开显示屏,光标显示4 \5 ~7 }8 u, j# e5 P, X0 S
write_com(0x01);
5 L4 O; U+ W, e0 f }
& W. w% L: Z' v while(1);' w; k; n' g: N1 A9 p6 |
}
3 p. @9 P% t: N+ I" J8 Y! m) E0 v. U5 V
void timeint(void) interrupt 1
+ e8 k5 [: C$ t. D# {{
b7 p: m; z& }2 `3 O U) y TH0=0xFE;8 g( O/ ]4 |2 ?1 X, Y
TL0=0x0C; //设定时每隔0.5ms中断一次
+ K" N' N" J" \- P% { count++;
7 h" a1 P4 o& Y$ K spcount--;
# H) F1 B* q+ | if(spcount<=0)
" y8 u6 l, i- S2 \ {2 g' L/ W/ Y' N$ p5 g
spcount = speedlevel;) ^8 j" [8 k0 a: A
gorun();
! A7 ?$ V5 S0 g! G; j7 r }" D2 }: g. p" m- G2 l# G/ |- B
// turn = 1;
! ]: `5 L: ^) R# b4 q5 C5 r0 ^0 m) p// step_index = 7;* x F6 o" f! x; l% S) M) ?- a6 i/ c
// gorun();% D* K# l4 _( {0 ~
// step_index = 7;4 G9 k* g* e7 y- O+ ?5 E- Y% }
// gorun();$ M$ Z8 G& I: B; r3 _0 V5 N* L0 Z
}
! C8 r- \) {# ?% j! o- S6 k/ h0 n( i) [0 e! E1 k6 }# O# |8 t
void Usart() interrupt 4/ D4 \' q. M+ g g5 F
{+ f- H6 `* z" |9 l7 t6 |' t
receiveData[t++] = SBUF;
' v% o$ p5 k6 a6 p RI = 0;
" Q! Q* f) [+ P9 C. ]* A R& P SBUF = receiveData[t-1]; //将接收到的数据放入发送寄存器5 o* M/ D) f: j8 A
while(!TI); //等待数据发送完成# A6 P* M$ u4 H; S& p, Q
! ~5 P( @$ j) l9 h: ^% V6 y
! T2 {6 B O! s9 d2 s3 Y…………限于本文篇幅 余下代码请从论坛下载附件…………2 }6 L3 f4 n) y; Z/ T
+ W' ?, p& ~9 k( G
9 c0 w$ |, b1 S$ \# J& P* K% r# i, Q |
|