|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
为了方便大家阅读,程序就不以附件的形式呈现了,我用的蓝牙是HC05,一开始我一直纠结AT指令,一直搞不好。但听高人一说,模块拿来就是用的,所以像我们这种自学单片机的方向一定得对!要特别注意的是,蓝牙发送数据有两种数据形式,16进制发送或字符发送,而字符发送需要在SBUF后面减去48!
; y! G0 W7 U3 X, r' ^; M+ @ O, O* p#include<reg52.h>//声明头文件
: m9 P) R: b3 J' P9 O#define uchar unsigned char//宏定义+ j! Y h) i9 l$ x. g$ b8 u
#define uint unsigned int//宏定义! S. i4 I& l( t# t
uint a;' \+ R% }; E" T0 w( ?( e
void init()//初始化子程序
) E* s; J$ O3 N/ s5 @4 F{: i1 C+ X" l# T$ p2 P( \# J
TMOD=0x20; //设置定时器T1为工作方式2
* i6 ~) Q+ l. e TH1=0xfd;2 @8 n; |) C& m3 M
TL1=0xfd; //T1定时器装初值 o* | ]' T5 d p2 ]) J: C( B& ^
TR1=1; //启动定时器T1
1 L6 K( w8 Q/ S( b REN=1; //允许串口接收4 p( f/ t8 O# C
SM0=0;
6 J0 \' Y' F& j# B& `! C2 g: @ SM1=1; //设置串口工作方式12 D8 @2 P; X0 o/ o
EA=1; //开总中断: @* K7 N! @% E4 H
ES=1; //开串口中断0 G3 Z& Q( @( z r$ b) X, U# z# y( N
}
" x8 L8 O- x# \& x% B2 W$ q0 ~3 W S! c; M$ ?! [, x
6 o! v1 p* ` u% vvoid main()//主程序
2 Q) g* U; q5 V8 T s6 r. F{& G, k4 Q% D7 Z# w+ N% T
init();//调用初始化子程序
" x' s" Q0 x$ w6 n& P while(1)//死循环- v$ }+ Y) ^, y }9 g
{% ?7 X! p4 @" u
switch(a)//判断a从串口读取到的数据1 P7 A5 E" ~9 r& ~) {0 A/ [
{
9 M4 t8 G( f: r case 1:6 T2 E. x! O7 E6 D0 t7 ^. N' y
P2=0X00;
% g7 ?6 Z" l' [$ F, b( @ break;
8 s: j! N1 a6 ^6 P+ i1 Q3 Q
! h( a3 C/ P/ E0 H- h case 2:8 ^5 E; m' |& T& y. h
P2=0X01;" p8 w' l! z/ k' k# R# @! P) X
break;5 C0 {( a/ D5 c" W1 w$ J
" b3 P6 I2 |7 M- m case 3:. f, _9 C. v R; M. i
P2=0X02;3 j1 B: I7 \ O9 I y6 }$ j% y
break;$ t% U9 [. }+ a! B9 c( S6 ?$ ^
5 Y/ K5 K$ B+ v4 [) L. a/ G, V case 4:
$ I6 k8 T h5 @9 q# ~1 c9 f9 M P2=0X04;" L0 l, s1 x' f
break;, L* U! v0 |9 X0 e! C$ [! P. z7 i! \
$ A2 T$ q( E' f2 H
case 5:. u+ M0 u9 Q! o. ^
P2=0X08;9 ? f6 w; j, i+ g" h7 r, i# H' S
break;
& v( n# E- K4 G$ r7 p X
( L1 m6 ^$ H) Y. X7 n5 P/ Q. } case 6:6 M* N/ q. v! b y7 |4 |7 m2 j
P2=0X10;
4 Q0 \: X/ X6 {' {9 ~/ @- }$ ^% j break;
6 b( f8 [5 Y+ n$ l9 A8 L- O- w& b! z+ S5 C- h) s/ N! Y
case 7:* W/ L0 l( ^( X8 Z! }8 Y$ U
P2=0X20;# ?! Q) p6 ^* X8 c
break;5 R3 U4 E( e# r1 y* f/ Z. F5 C
/ j+ `# D7 }2 ~- O9 _& |3 |0 _
case 8:
/ ^+ c* z% j0 {( E4 f P2=0X40;
+ F( r) }5 F3 f/ I break;
7 u! N' s7 S2 Z1 G( F; i8 x
; t1 M1 e) H! h& @" [ g case 9:+ t& I7 v$ |- A1 d; ~& H% V6 y3 S
P2=0X80;' ~3 R( j9 v7 k+ E+ o7 ~: p
break;. S1 C) k5 y) ]3 ^( U) y
. r3 p: ^+ C. `% X2 C% C
} 3 m1 _( T% |/ u9 S9 L) [9 @
} 5 g. t1 V- L) u G4 c. G
}
0 B# `3 O s ]6 o5 |" X9 s- L/ ?5 h3 N
void chuan() interrupt 4//串口中断服务程序
( M( {1 T$ Y2 } ?0 Q1 _/ o: W{
+ K% D' r! z5 U; c+ r RI=0;//软件清除串口响应
, F9 b+ y" L& b& J a=SBUF-48;//读取单片机串口接受的蓝牙模块发送的数据
) Y" K$ ?. o: X3 d5 w} |
|