|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
为了方便大家阅读,程序就不以附件的形式呈现了,我用的蓝牙是HC05,一开始我一直纠结AT指令,一直搞不好。但听高人一说,模块拿来就是用的,所以像我们这种自学单片机的方向一定得对!要特别注意的是,蓝牙发送数据有两种数据形式,16进制发送或字符发送,而字符发送需要在SBUF后面减去48!3 b- c0 }& k* W8 D
#include<reg52.h>//声明头文件
% X* z! T- e2 \& q% Z% U#define uchar unsigned char//宏定义5 v! U( ?" \& U- ~' N3 R
#define uint unsigned int//宏定义" S! |7 X& X3 y9 e
uint a;1 k+ z3 S# W$ H# k% t# p
void init()//初始化子程序
, l' M' T' t6 m3 R2 d+ k3 [{9 ^- s/ l G$ _# |6 P. r# z9 m
TMOD=0x20; //设置定时器T1为工作方式2
- y: ^' c$ P' x, Z; P TH1=0xfd;* J# G3 _+ b$ F+ M: g |) y) \
TL1=0xfd; //T1定时器装初值+ D* o6 a' x6 H2 a ^ m, q1 s4 G
TR1=1; //启动定时器T1 r. U* ` a( K% L
REN=1; //允许串口接收# Z2 x+ I% p( I( `( \1 C
SM0=0;9 e! z* [+ D1 w# o( m+ V+ r2 t$ w
SM1=1; //设置串口工作方式1
F/ l i( Y3 t( t EA=1; //开总中断+ r% B8 C- [/ B+ `$ [4 v
ES=1; //开串口中断
: z7 \1 E! L1 J1 @2 [$ e}$ b7 e/ A. Y" J7 d. P1 w; `* R' u) w
2 G9 H9 j- x0 l* P. g. L
1 X+ M' D( V8 G0 T9 |, {
void main()//主程序# s7 E; `3 l- m( `/ x) j
{! \! Y% t' P; j" J( i, e7 [
init();//调用初始化子程序4 _" e8 w- r6 O) d
while(1)//死循环
- `! y9 O) D, t% d) l- q% I" r9 L {6 Y. ?- H: J8 q' E0 V/ Z
switch(a)//判断a从串口读取到的数据
- D/ J- m2 E( V$ B {
h) y: u: U7 f# O case 1:$ S* T& X4 \9 Q+ ]6 p# U; k
P2=0X00;+ s0 O5 v& a* E3 G9 ?9 z: i
break;3 V" y; L1 \$ I) N) I1 r: x
! `( C8 V, U8 X# O: ]: C- W _
case 2:
+ [7 f0 S& c* N P2=0X01;3 E. y; Z4 `5 Q7 X, J7 w$ |& n
break;
' h3 u+ f# {9 i5 u8 f) P/ n+ g7 J7 C; R0 t0 q0 Q* r
case 3:
: q; @8 V1 ^& v" A, R: f P2=0X02;
8 Y1 m$ e; i) E. U break;
# {4 t+ k z5 _+ k
; m7 m v) o4 q case 4:% i. }( x0 B: h1 a- A) Z! G
P2=0X04;( k+ R5 F( ?( U0 z
break;
' Z7 q/ Y* p, n/ j9 W5 @
, F) L& L6 \( b3 ` case 5:* X* S6 g! o9 e
P2=0X08;* [! h; v# G) @ U+ ~& @# d
break;
) D# v3 f3 a R; D
4 r9 U# b% G7 F# `% n case 6:
$ U" [) g3 m- }$ @& M! [ P2=0X10;
+ u3 W4 e q: U7 g break;+ i, M: A3 w2 p. c& W5 q, F+ U
. U) j- B% [; [( r% Y9 B& k0 k
case 7:
; m7 y, Z' @) ^1 }/ \' c. ` P2=0X20;! R$ y, @' M" [- O- m8 S
break;: Y% G; P# |9 ]3 j* B0 Q
% a5 z* D; N; U) K3 w case 8:/ Q! M# {( B- @# Q* _/ X
P2=0X40;7 L1 g3 R/ a8 c4 R$ @9 Y
break;$ e% S q& T" K) b+ c. b l
. X5 l, b2 ?3 d/ p5 S
case 9: N7 j# w: W, d l4 Q' Z
P2=0X80;( z' D0 T3 m2 h8 s+ E2 X' [
break;& u3 r& S( l9 W- \: @- O: t
* ~7 Q: d4 t. e* D: Q }
0 `( A0 { Q, X% j1 X* } } & K4 p( q' [9 r4 ~4 f5 A
}
: o1 ?% v6 }& R* @2 r3 [* R+ X' z' h8 }- k% a0 C, \0 `' c
void chuan() interrupt 4//串口中断服务程序9 X1 S. V2 j3 l4 k
{
( O5 J7 G4 r3 H" k J RI=0;//软件清除串口响应
. _: W. x$ ]3 _" Y4 q a=SBUF-48;//读取单片机串口接受的蓝牙模块发送的数据* N$ S# Y/ @5 [) y9 | F
} |
|