|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
为了方便大家阅读,程序就不以附件的形式呈现了,我用的蓝牙是HC05,一开始我一直纠结AT指令,一直搞不好。但听高人一说,模块拿来就是用的,所以像我们这种自学单片机的方向一定得对!要特别注意的是,蓝牙发送数据有两种数据形式,16进制发送或字符发送,而字符发送需要在SBUF后面减去48!! ?. G, c% m5 A2 J9 k
#include<reg52.h>//声明头文件! F, }8 |9 Z, ^/ g7 D' J1 y- u: N' z5 N
#define uchar unsigned char//宏定义
: r# A: g1 Z5 F5 m#define uint unsigned int//宏定义
5 c b) m+ A! ^1 k: M6 puint a;
) f7 d6 m6 x+ Y# Z+ Wvoid init()//初始化子程序
6 I7 v+ M$ a. `" a{) O/ { K. L8 M# V! P) E7 X( {7 u
TMOD=0x20; //设置定时器T1为工作方式2, X* B6 Y, O( b. b
TH1=0xfd;0 o( @6 j9 T1 \4 X& n; J
TL1=0xfd; //T1定时器装初值
2 j0 q! g6 U. |9 U9 I2 F- _2 N% X TR1=1; //启动定时器T1# W+ R: w! B( c7 Z. J
REN=1; //允许串口接收 C) m' Y# r- {
SM0=0;, \1 P q( y3 i7 [/ u: F
SM1=1; //设置串口工作方式1! Y* k0 V0 D7 z; m
EA=1; //开总中断
+ ^& [% U' j6 u ES=1; //开串口中断
. y9 t. [2 J6 ^/ L}
' Y0 `3 a3 i T2 E- C0 N+ d' i* ^2 f- F; i8 ~+ z
+ [& [: H, ]$ A4 O4 b9 J
void main()//主程序
+ i6 W$ I- \4 u- @{
1 t4 @, Z9 z" Y+ \ init();//调用初始化子程序
' q% Z+ ]1 x& t' o* J: t" o while(1)//死循环
: D: m9 f0 ?( B& B# e) {4 g {
( `: U7 ~- S4 ~ switch(a)//判断a从串口读取到的数据' ]8 h) ^4 z8 D- O) e
{
; j' i5 e) D9 A, f/ S case 1:
' Q+ n+ T0 P9 b! f P2=0X00;0 W0 O1 U0 y$ }
break;
0 g% J7 b; w7 ]7 M9 N$ b f
3 }, [3 j; u3 P case 2:* b' Q3 Z, F5 N7 r
P2=0X01;
3 g' e) S" Q& r6 L* ] break;6 U/ X/ _6 g$ u/ c% w
0 b( {* e$ |5 b1 }6 m4 [ case 3:/ |7 o5 O* v: D" T7 [ O
P2=0X02;
5 k9 {& o* ^- \9 E7 E break;
! U3 c; L' `3 t$ g
! C( V( e2 h- c( b! w case 4:8 a. q! _. i! m" z2 i" n
P2=0X04;
% U: m2 [' _9 u, \+ W break;
[: ^5 E* ?4 F& ]# k6 t$ [, U* D, `- Q6 |: [, V5 b
case 5:
4 d& w" ?! i5 S P2=0X08;+ N) |" q& n4 r; E% w- n9 Z
break;/ N& g/ a8 `% r' X' H
4 m2 |: F& W. K: a, ?0 I; ^6 u3 K
case 6:
6 l9 m, v0 L0 _# s% h! f, N8 x4 K P2=0X10;/ Z& Y0 q% V( B; b6 y$ e
break;- D f5 l4 i6 Z2 Y
5 p) {/ P# i0 ^$ x case 7:" j. M( l/ M. P( c
P2=0X20; ^7 E- x9 Y& y9 z3 D- ~: ?" z0 Z
break;
# c$ Q, f/ R3 ?) M/ ]; \* t/ z* D$ @; v& x. S6 w0 H" d
case 8:3 g: |9 S7 |' l5 s9 {& [
P2=0X40;3 v3 Q( y4 I q
break;
+ g9 a9 X' D2 v3 K+ m+ F- @
( s4 U# [) i( A. a8 L case 9:& h: o7 t; Q; P; q+ {
P2=0X80;
0 J4 a) o' s3 L6 b7 v break; o7 Y# }8 `2 A/ B) H
+ _/ M4 o6 U' l0 I6 H
}
# J8 } H- a- f/ v }
2 @! d! @& S, [5 _5 ?}
! ~; F1 F7 x2 J+ e* h2 j- G* w$ x% T& n" @; Q/ W
void chuan() interrupt 4//串口中断服务程序- n* c4 i2 z( z9 y9 G3 Y
{- h' X* K/ S5 w L& Y" H: K( i
RI=0;//软件清除串口响应
" V+ A, k& n* n( O a=SBUF-48;//读取单片机串口接受的蓝牙模块发送的数据9 ?- n( C- m* }+ \6 X' c9 u
} |
|