单片机的蓝牙接收发射模块设计报告要点Word文件下载.docx

上传人:b****7 文档编号:22718428 上传时间:2023-02-05 格式:DOCX 页数:29 大小:582.07KB
下载 相关 举报
单片机的蓝牙接收发射模块设计报告要点Word文件下载.docx_第1页
第1页 / 共29页
单片机的蓝牙接收发射模块设计报告要点Word文件下载.docx_第2页
第2页 / 共29页
单片机的蓝牙接收发射模块设计报告要点Word文件下载.docx_第3页
第3页 / 共29页
单片机的蓝牙接收发射模块设计报告要点Word文件下载.docx_第4页
第4页 / 共29页
单片机的蓝牙接收发射模块设计报告要点Word文件下载.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

单片机的蓝牙接收发射模块设计报告要点Word文件下载.docx

《单片机的蓝牙接收发射模块设计报告要点Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机的蓝牙接收发射模块设计报告要点Word文件下载.docx(29页珍藏版)》请在冰豆网上搜索。

单片机的蓝牙接收发射模块设计报告要点Word文件下载.docx

(3)低功耗:

掉电模式耗电低于0.1uA,正常工作模式为4mA~7mA,掉电模式可由外部中断唤醒,适用于电池供电系统;

(4)通过MAX232电平转换芯片即可进行下载,编程方式灵活,可用C语言进行编写,可读性强,8KB的内部ROM增强编程方便性。

发送与接收模块的控制单元电路原理图如图3.1:

图3.1STC89C52单片机最小系统

图3.1中间部分为STC89C52芯片,该芯片采用40脚双列直插DIP封装,第40脚接+5V电源,第20脚接地,左上部分为复位电路,接单片机的第9脚,但按下键时即对系统进行复位。

左下为晶振电路,采用11.0592MHZ的晶振。

第31脚接高电平。

3.2发送与接收模块的无线通信模块——BC04-B蓝牙模块

3.2.1蓝牙技术的协议简介

蓝牙无线通信的协议标准是由SIG制定的,它规定了蓝牙应用产品应遵循的标准和需要达到的要求。

目前颁布的蓝牙规范有1.0、1.1、2.0、2.1等几个版本。

协议栈由上至下可分为3个部分:

传输协议、中介协议和应用协议。

传输协议负责蓝牙设备间的相互位置确认,以及建立和管理蓝牙设备间的物理和逻辑链路,包括LMP、L2CAP、HCI;

中介协议为高层应用协议或程序在蓝牙逻辑链路上工作提供了支持,为应用层提供了各种标准接口,包括:

RFCOMM、SDP、IrDA、PPP、TCP/IP、UDP、TSC和AT指令集等;

应用协议是指那些位于蓝牙协议栈之上的应用软甲和其中涉及的协议,包括开发驱动和其他蓝牙应用程序等。

3.2.2蓝牙技术的核心协议

蓝牙技术的核心协议分为四个部分,如下:

(1)基带协议(Baseband)

基带和链路控制层确保网络内部蓝牙设备单元之间由射频构成的物理连接。

(2)连接管理协议(LMP)

负责蓝牙网络内各设备之间连接的建立。

(3)逻辑链路控制和适配协议(L2CAP)

是一个为高层传输层和应用层协议屏蔽基带协议的适配协议,为高层应用传输提供了更加有效和更有利于实现的数据分组格式。

(4)服务发现协议(SDP)

发现服务在蓝牙技术框架中起到了至关重要的作用,它是所有用户模式的基础,是为实现网络中蓝牙设备之间相互查询及访问提供的服务。

在蓝牙系统中,客户只有通过服务发现协议,才能获得设备信息、服务信息以及服务特征,从而在设备单元之间建立不同的SDP层连接[3]。

3.2.3HCI协议

HCI(HostControllerInterface)协议,即主机控制接口协议,属于蓝牙协议栈的一部分,是蓝牙规范定义的一个符合标准的接口,它适用于蓝牙通讯模块的硬件部分。

此定义描述了位于HCI驱动程序(主机的一部分,也即蓝牙通讯模块的使用者)和主机控制器固件(蓝牙通讯模块本身的一部分)之间的接口。

HCI固件通过访问基带命令、硬件状态寄存器、控制寄存器以及时间寄存器实现对蓝牙硬件的HCI指令。

HCI传输层是蓝牙主机与蓝牙主控制器之间的物理接口。

目前,蓝牙HCI传输层的物理接口由通用串行总线(USB)、串行端口(RS232)、通用异步收发器(UART)和个人计算机存储卡。

本系统采用UART方式在蓝牙设备和主控制器之间传输数据。

UART传输层发目标在于可以在同一PCB电路板上两UART之间的串行接口上使用蓝牙HCI协议。

UART传输层假定UART通信不存在线路故障,图1为UART传输层。

图1UART传输层

UART传输层采用了RS232的接口参数配置,如表1:

波特率

厂商指定信息

数据位数

8

奇偶校验位

无奇偶校验位

终止位

1终止位

流控制

RTS/CTS

流完成响应时间

3ms

表1RS232接口参数配置

其中,RTS/CTS流控制用于防止临时UART缓冲区溢出,当CTS为1时,允许蓝牙主机/主机控制器发送,当CTS为0时,禁止蓝牙主机/主机控制器发送。

流完成响应时间则定义了从设置RTS为0到字节流真正结束时的最大时间。

UART信号线采取置空调制解调器模式,RS232信号处于连接状态,即本地TXD连接到远端RXD,本地RTS连接到远端CTS,反之亦然。

UART传输层同时具备纠错功能。

如果当蓝牙主机与主机控制器在RS232通信上失去同步,则必须复位。

RS232通信失去同步意味着已检测到HCI分组指示器或者HCI分组长度超出了范围。

如果蓝牙主机与主机控制器在UART通信失去同步,那么主控制器将发送硬件故障时间,以将同步错误告诉蓝牙主机。

主控制器需要从蓝牙主机接受一个RESET指令以执行抚慰,从而实现重新同步。

3.2.4BC04-B蓝牙模块部分电路

BC04-B蓝牙模块[8,9,10]主要性能参数:

(1)频率:

2.4GHzISMband

(2)调制方式:

GFSK

(3)发射功率等级:

class2

(4)灵敏度:

≦-80dBm

(5)通信速率:

2Mbps

(6)供电电源:

3.3V

(7)工作温度:

-20~+55℃

HC-06蓝牙模块部分电路图如图3.2.1:

图3.2.1HC-06蓝牙模块部分电路

图3.2左边部分为蓝牙芯片,其TX与RX引脚分别接STC89C52的RXD(P3.0)和TXD(P3.1),PIO1接LED灯,当LED常亮时表示蓝牙数据开始传输。

右上部分为电源+5V转为+3.3V电路。

BC04-B蓝牙模块实物如图3.2.2:

图3.2.2BC04-B蓝牙模块

3.318B20数字温湿度传感器

3.3.118B20简介

DHT21数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。

该传感器响应快、抗干扰能力强、性价比高等优点。

单总线串行接口,使系统变得简单快捷。

超小的体积、极低的功耗。

主要性能如下:

(1)供电电压范围:

+3.0V~+5.5V;

(2)测温范围:

-55~+125℃。

固有测温分辨率为0.5℃。

当在-10℃~+85℃范围内,可确保测量误差不超过0.5℃,在-55~+125℃范围内,测量误差也不超过2℃;

(3)通过编程可实现9~12位的数字读数方式.

18B20引脚图如图3.3.1。

本设计将1脚接电源+5V,2接STC89C52的I/O口P2.3脚接地。

图3.3.1

3.4超声波测距传感器及其电路部分

3.4.1超声波传感器原理

(1)采用IO触发测距,给至少10us的高电平信号;

(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;

(3)有信号返回,通过IO输出一高电平,高电平持续的时间就是 

超声波从发射到返回的时间.测试距离=(高电平时间*声速(340M/S))/2;

图3.4.5超声波发送接收原理图

3.5单片机数据传输系统的电源部分

发射与接收模块的电源均用+7.2V的干电池经7805稳压输出+5V的电源,+5V电源在经过ASM1117稳压输出+3.3V。

其电路原理图如图3.5.1。

图中J3的2脚位+7.2V,1脚为地;

S4为拨动开关,电容C11、C12、C13、C14均为7805输入输出端的滤波电容;

D17为发光二极管,即电源指示灯;

D19为1N4007保护二极管,当输入端短路时,给输出电容C14一个放电回路,防止7805被击穿损坏。

图3.5.1+5V电源部分

BC04-B蓝牙模块供电电源由+5V电源在经过ASM1117稳压输出+3.3V供电。

其电路原理图如图3.5.2

图3.5.2+3.3V电源部分

3.6MAX232串口电路

MAX232串口电路主要用于STC89C52单片机程序的烧写以及用于扩展与上位机的通信。

计算机串口采用的是RS232C负逻辑电平,“1”表示-12V,“0”表示+12V,与单片机的的TTL电平不同,因此通过MAX232串口电路实现与计算机进行通信。

其电路图如图3.7,图中的5个电容均为0.1μF的瓷片电容,起到降低芯片的噪声干扰。

MAX232的11脚接STC89C52单片机的TXD(P3.1),12脚接单片机的RXD(P3.0);

右下为串口母头,用于与计算机的通信,第3脚(计算机数据输出端)为从计算机输出至单片机端口,第2脚(计算机数据输入端)为从单片机输入至计算机,5脚为地线,其余引脚在此不用。

图3.6MAX232串口电路

3.7单片机显示电路

接收模块显示电路采用LCD1602液晶显示。

LCD1602能显示16个字符×

2行,即32个字符。

LCD液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的字符,这些字符有阿拉伯数字、英文字母的大小写、常用符号和日文假名等,每一个字符都有一个固定的ASCII代码。

其引脚说明如表3.8。

编号

符号

引脚说明

1

GND

电源地

9

DB2

数据

2

VCC

电源正极

10

DB3

3

VEE

液晶显示偏压

11

DB4

4

RS

数据/命令选择

12

DB5

5

R/W

读/写选择

13

DB6

6

E

使能信号

14

DB7

7

DB0

15

BLA

背光源正极

DB1

16

BLK

背光源负极

表3.8LCD1602引脚说明

LCD1602在本设计中的电路连接图如图3.8,1脚和3脚接地,2脚接电源+5V,4脚接STC89C52

图3.7LCD1602电路连接图

单片机的P2.5,5脚接P2.6,6脚接P2.7,714脚接P0口,15脚串接一个10K的电阻然后接到电源+5V。

第四章单片机数据传输系统的软件设计

单片机数据传输系统软件部分分为数据采集和接收发送数据两个模块[,在此仅分析主程序与各子程序的流程。

涉及的子程序为18B20温湿度子程序,超声波测距子程序,蓝牙收发数据子程序,LCD1602液晶显示子程序。

4.1单片机数据采集系统的程序流程

图4.1系统软件主程序流程图

4.2蓝牙数据收发系统的程序流程

图4.2蓝牙收发程序流程图

第五章单片机数据传输系统调试

系统主要由发送模块和接收模块组成。

用万用表分别检测无短路或断路情况,测得电源部分7805输出端+5V,电源指示灯亮,单片机等各芯片电压正常。

蓝牙模块接上电源LED指示灯正常点亮。

先对温度采集电路进行调试,通过下载软件将HEX文件烧写进入单片机,发现蓝牙能够正常传输数据,测得环境的温度能在PC机上正常显示,温度精确到0.1℃,湿度精确到0.1%,温度的测量范围为-20.0℃+120.0℃。

其次距离采集电路进行调试,下载软件将HEX文件烧写进入单片机,发现蓝牙能够正常传输数据,PC机显示实时距离值。

然后整体系统调试,测得结果在空旷地带,单片机数据传输距离可达30多米;

在有障碍物的时候,数据传输距离也可达10几米。

第六章总结

基于蓝牙技术的数据传输系统的设计,以其低成本、低功耗、便携式、高精度的设计理念,实现对环境的温度、距离等数据的实时采集,让人们的生产生活安排的更加合理有序。

蓝牙技术是全球广泛使用的无线通信技术,能够实现短距离快速传输大容量的数据,是短距离数据通信的首选技术,其不断成熟的技术,更是给无线通信领域带来光明的前景,BC04-B蓝牙模块,可传输十几米的距离,较好的完成了设计任务。

参考文献

[1]郭坚.基于STC89C52单片机的多路数据采集控制系统设计[J].装备制造,2010,(4):

234.

[2]张发海.基于单片机STC89C52的LED数码管温度显示及报警器的实现[J].科技信息,2009,(35):

87-88.

[3]何国泉.基于蓝牙的无线接入点设计[J].微型机与应用,2010,29(18):

58-60.

[4]伍春.基于蓝牙的无线传感器网络节点设计与实现[J].计算机应用与软件,2010,27(4):

74-76,101.

[5]付蔚.基于蓝牙芯片的无线通信模块设计与开发[J].微计算机信息,2009,25(102):

178-179,175.

[6]喻宗泉.蓝牙技术基础[M].北京:

机械工业出版,2006.40-95.

附录

系统PCB:

系统程序:

#include<

REG52.H>

math.h>

stdio.h>

intrins.h>

#defineucharunsignedchar

#defineuintunsignedint

sbitDQ=P2^2;

sbitRS=P3^5;

sbitRW=P3^6;

sbitEN=P3^4;

sbitR=P2^7;

sbitT=P2^6;

unsignedinttime=0;

unsignedlongS=0;

bitflag=0;

unsignedchardisbuff[4]={0,0,0,0,};

unsignedcharcodestr1[]={"

rangetemp"

};

floatRxBuf,disdata[5];

uinttvalue;

//温度值

uchartflag;

//温度正负标志

unsignedcharcodeASCII[15]={'

0'

'

1'

2'

3'

4'

5'

6'

7'

8'

9'

.'

-'

M'

};

ucharTx,Ax;

/*************************lcd1602程序**************************/

voiddelay1ms(unsignedintms)//延时1毫秒(不够精确的)

{

unsignedinti,j;

for(i=0;

i<

ms;

i++)

for(j=0;

j<

100;

j++);

}

voidwr_com(unsignedcharcom)//写指令//

delay1ms

(1);

RS=0;

RW=0;

EN=0;

P0=com;

EN=1;

voidwr_dat(unsignedchardat)//写数据//

;

RS=1;

P0=dat;

voidlcd_init()//初始化设置//

{

//BLK=0;

delay1ms(15);

wr_com(0x38);

delay1ms(5);

wr_com(0x08);

delay1ms(5);

wr_com(0x01);

wr_com(0x06);

wr_com(0x0c);

voiddisplay(unsignedchar*p)//显示//

while(*p!

='

\0'

{

wr_dat(*p);

p++;

//delay1ms

(1);

}

init_play()//初始化显示

lcd_init();

wr_com(0x80);

display(str1);

/******************************ds1820程序***************************************/

voiddelay_18B20(unsignedinti)//延时1微秒

while(i--);

voidds1820rst()/*ds1820复位*/

{

unsignedcharx=0;

DQ=1;

//DQ复位

delay_18B20(4);

//延时

DQ=0;

//DQ拉低

delay_18B20(100);

//精确延时大于480us

//拉高

delay_18B20(40);

}

uchards1820rd()/*读数据*/

unsignedchari=0;

unsignedchardat=0;

for(i=8;

i>

0;

i--)

//给脉冲信号

dat>

>

=1;

if(DQ)

dat|=0x80;

delay_18B20(10);

return(dat);

voidds1820wr(ucharwdata)/*写数据*/

i>

i--)

DQ=wdata&

0x01;

wdata>

read_temp()/*读取温度值并转换*/

uchara,b;

ds1820rst();

ds1820wr(0xcc);

//*跳过读序列号*/

ds1820wr(0x44);

//*启动温度转换*/

//*跳过读序列号*/

ds1820wr(0xbe);

//*读取温度*/

a=ds1820rd();

b=ds1820rd();

tvalue=b;

tvalue<

<

=8;

tvalue=tvalue|a;

if(tvalue<

0x0fff)

tflag=0;

else

tvalue=~tvalue+1;

tflag=1;

tvalue=tvalue*(0.625);

//温度值扩大10倍,精确到1位小?

tvalue=tvalue-15;

return(tvalue);

/*******************************************************************/

voidshow()//温度值显示

{ucharflagdat;

time=TH0*256+TL0;

TH0=0;

TL0=0;

S=(time*1.7)/100;

//算出来是CM

disdata[0]=tvalue/1000+0x30;

//百位数

disdata[1]=tvalue%1000/100+0x30;

//十位数

disdata[2]=tvalue%100/10+0x30;

//个位数

disdata[3]=tvalue%10+0x30;

//小数位

disdata[4]=0x00;

if(tflag==0)

flagdat=0x20;

//正温度不显示符号

flagdat=0x2d;

//负温度显示负号:

-

if(disdata[0]==0x30)

disdata[0]=0x20;

//如果百位为0,不显示

if(disdata[1]==0x30)

disdata[1]=0x20;

//如果百位为0,十位为0也不显示

disbuff[0]=S%1000/100;

disbuff[1]=S%1000%100/10;

disbuff[2]=S%1000%100%10;

disbuff[3]=S%10000%1000%100;

wr_com(0xc0);

wr_dat(ASCII[disbuff[0]]);

//显示百位

wr_com(0xc1);

wr_dat(ASCII[10]);

wr_com(0xc2);

wr_dat(ASCII[disbuff[1]]);

wr_com(0xc3);

wr_dat(ASCII[disbuff[2]]);

wr_com(0xc4);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1