最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

单片机的蓝牙接收发射模块设计报告

来源:动视网 责编:小OO 时间:2025-09-24 21:06:26
文档

单片机的蓝牙接收发射模块设计报告

单片机的蓝牙接收发射模块设计09电子信息工程A班胡传高0915211020马延涛0915211042严飞0915261036目录第一章引言31.1本设计的背景31.2本设计的系统方案31.2.1系统各模块的选择4第二章单片机数据传输系统的组成框图42.1单片机数据发送模块框图42.2PC数据接收模块框图4第三章单片机数据传输系统硬件设计53.1发送与接收模块的单片机最小系统53.2发送与接收模块的无线通信模块——BC04-B蓝牙模块53.2.1蓝牙技术协议简介53.2.2蓝牙技术的核心协议63
推荐度:
导读单片机的蓝牙接收发射模块设计09电子信息工程A班胡传高0915211020马延涛0915211042严飞0915261036目录第一章引言31.1本设计的背景31.2本设计的系统方案31.2.1系统各模块的选择4第二章单片机数据传输系统的组成框图42.1单片机数据发送模块框图42.2PC数据接收模块框图4第三章单片机数据传输系统硬件设计53.1发送与接收模块的单片机最小系统53.2发送与接收模块的无线通信模块——BC04-B蓝牙模块53.2.1蓝牙技术协议简介53.2.2蓝牙技术的核心协议63
              

单片机的蓝牙接收发射模块设计

             09电子信息工程A班

        胡传高  0915211020

        马延涛  0915211042

        严  飞  0915261036

目录

第一章 引言    3

1.1 本设计的背景    3

1.2 本设计的系统方案    3

1.2.1 系统各模块的选择    4

第二章 单片机数据传输系统的组成框图    4

2.1 单片机数据发送模块框图    4

2.2 PC数据接收模块框图    4

第三章 单片机数据传输系统硬件设计    5

3.1 发送与接收模块的单片机最小系统    5

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

3.2.1 蓝牙技术协议简介    5

3.2.2 蓝牙技术的核心协议    6

3.2.3 HCI协议    6

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

3.3 18B20数字温湿度传感器    8

3.3.1 18B20简介    8

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

3.4.1超声波传感器原理    8

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

3.6 MAX232串口电路    10

3.7单片机显示电路    10

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

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

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

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

第六章 总结    14

参考文献    14

附录    14

第一章 引言

1.1 本设计的背景

蓝牙技术是近年来发展迅速的短距离无线通信技术,可以用来替代数字设备间短距离的有线电缆连接。使用全球通用的2.4GHz频段,即ISM(Industrial、Scientific and Medical)频段,使得蓝牙设备可工作于世界上任何地方;采用了跳频技术,提高了抗干扰性;蓝牙模块具有低成本、低功耗和低辐射的优点;具备认证和加密机制,实现了较高的安全性;应用范围广泛,可应用于无线设备、图像处理设备、安全产品、消费娱乐、汽车产品、家用电器、医疗健身、建筑、玩具等多种领域;支持点对点和点对多点传输,多个蓝牙设备可组成微微网,具备明显的网络特性。

1.2 本设计的系统方案

1.2.1 系统的功能实现

通过温湿度及距离传感器采集环境的温湿度、距离信号,将信号处理然后通过无线传输到距离十多米的地方进行显示,实现实时监测环境的温度、距离等信息,具有很大的应用前景。

  本设计以单片机和蓝牙模块BC04-B为主,设计了基于蓝牙无线传输的数据采集系统,整个装置由前端数据采集、传送部分以及末端的数据接受部分组成(如PC机)。前端数据采集部分由位于现场的传感器、单片机、串口通信等构成,传送部分主要利用自带微带天线的蓝牙模块进行数据的无线传输;末端通过蓝牙模块、串口通信传输将数据送到上位PC机进一步处理。PC机可以根据指令来控制数据的获取。

1.2.1 系统各模块的选择

    1.18B20数字温湿度传感器,内部包含一个电容式感湿元件和NTC测温元件,还有A/D转换模块,实现温湿度数字信号输出。同时18B20又是单总线形式,与单片机相连减少了I/O口的使用。

2.超声波测距模块,利用单片机发送触发信号,产生40HZ的声波信号,经过物体遮挡住返回的时间,可以计算距离。

   3.采用STCC52单片机控制单元[2],产品较为普遍,价格便宜,易于控制。对STCC52用C语言编写程序,可读性较好。

4.无线通信采用全球广泛使用的蓝牙技术,本设计采用BC04-B蓝牙模块,该模块可实现二十米的无线数据传输。

5.LCD1602液晶显示器为工业字符型液晶,能够显示32个字符,可实现对数据进行简单显示。

                  第二章 单片机数据传输系统的组成框图

数据传输系统分为发送和接收两个模块:发送模块主要由温湿度采集模块、距离采集模块、单片机控制模块、蓝牙发送模块、显示模块和电源模块等组成;接收模块主要由蓝牙接收模块、PC控制、串口调试模块组成。具体框图如下:

2.1 单片机数据发送模块框图

   

信号采集发送过程[3]为18B20、超声波测距模块[4]将信号传给STCC52单片机,单片机将信号处理,并进行超温湿度、距离报警。处理后的信号经串口发送给BC04-B蓝牙发射模块发射出去,采用2.4GHZ全球免费波段。

2.2 PC数据接收模块框图

信号接收过程为蓝牙适配器接收模块接收信号,将信号通过串口传给PC机,通过串口调试助手显示出来。PC可以通过串口调试助手给单片机机发送指令,控制数据的获取。

               第三章  单片机数据传输系统硬件设计

3.1 发送模块的单片机最小系统

本系统采用MCS-51系列STCC52单片机芯片[5]作为发送与接收模块的控制单元,芯片具有如下特点:

(1)抗干扰性强;

(2)低价格;

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

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

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

图3.1 STCC52单片机最小系统

图3.1中间部分为STCC52芯片,该芯片采用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.3 HCI协议

HCI(Host Controller Interface)协议,即主机控制接口协议,属于蓝牙协议栈的一部分,是蓝牙规范定义的一个符合标准的接口,它适用于蓝牙通讯模块的硬件部分。此定义描述了位于HCI驱动程序(主机的一部分,也即蓝牙通讯模块的使用者)和主机控制器固件(蓝牙通讯模块本身的一部分)之间的接口。HCI固件通过访问基带命令、硬件状态寄存器、控制寄存器以及时间寄存器实现对蓝牙硬件的HCI指令。

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

本系统采用UART方式在蓝牙设备和主控制器之间传输数据。UART传输层发目标在于可以在同一PCB电路板上两UART之间的串行接口上使用蓝牙HCI协议。UART传输层假定UART通信不存在线路故障,图1为UART传输层。

图1 UART传输层

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

波特率厂商指定信息
数据位数8
奇偶校验位无奇偶校验位
终止位1 终止位

流控制RTS/CTS
流完成响应时间3ms
表1 RS232接口参数配置

其中,RTS/CTS流控制用于防止临时UART缓冲区溢出,当CTS为1时,允许蓝牙主机/主机控制器发送,当CTS为0时,禁止蓝牙主机/主机控制器发送。流完成响应时间则定义了从设置RTS为0到字节流真正结束时的最大时间。

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

UART传输层同时具备纠错功能。如果当蓝牙主机与主机控制器在RS232通信上失去同步,则必须复位。RS232通信失去同步意味着已检测到HCI分组指示器或者HCI分组长度超出了范围。如果蓝牙主机与主机控制器在UART通信失去同步,那么主控制器将发送硬件故障时间,以将同步错误告诉蓝牙主机。主控制器需要从蓝牙主机接受一个RESET指令以执行抚慰,从而实现重新同步。

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

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

(1)频率:2.4GHz ISM band

(2)调制方式:GFSK

(3)发射功率等级:class2

(4)灵敏度:≦-80dBm

(5)通信速率:2Mbps

(6)供电电源:3.3V

(7)工作温度:-20 ~+55℃

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

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

图3.2左边部分为蓝牙芯片,其TX与RX引脚分别接STCC52的RXD(P3.0)和TXD(P3.1),PIO1接LED灯,当LED常亮时表示蓝牙数据开始传输。右上部分为电源+5V转为+3.3V电路。BC04-B蓝牙模块实物如图3.2.2:

                      

图3.2.2 BC04-B蓝牙模块

3.3 18B20数字温湿度传感器

3.3.1 18B20简介

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接STCC52的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.6 MAX232串口电路

MAX232串口电路主要用于STCC52单片机程序的烧写以及用于扩展与上位机的通信。计算机串口采用的是RS232C负逻辑电平,“1”表示-12V,“0”表示+12V,与单片机的的TTL电平不同,因此通过MAX232串口电路实现与计算机进行通信。其电路图如图3.7,图中的5个电容均为0.1μF的瓷片电容,起到降低芯片的噪声干扰。MAX232的11脚接STCC52单片机的TXD(P3.1),12脚接单片机的RXD(P3.0);右下为串口母头,用于与计算机的通信,第3脚(计算机数据输出端)为从计算机输出至单片机端口,第2脚(计算机数据输入端)为从单片机输入至计算机,5脚为地线,其余引脚在此不用。

图3.6 MAX232串口电路

3.7单片机显示电路

接收模块显示电路采用LCD1602液晶显示。LCD1602能显示16个字符×2行,即32个字符。LCD液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的字符,这些字符有阿拉伯数字、英文字母的大小写、常用符号和日文假名等,每一个字符都有一个固定的ASCII代码。其引脚说明如表3.8。

编号符号引脚说明编号符号引脚说明
1GND电源地9DB2数据
2VCC电源正极10DB3数据
3VEE液晶显示偏压11DB4数据
4RS数据/命令选择

12DB5数据
5R/W读/写选择

13DB6数据
6E使能信号14DB7数据
7DB0数据15BLA背光源正极
8DB1数据16BLK背光源负极
表3.8 LCD1602引脚说明

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

图3.7 LCD1602电路连接图

单片机的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]郭坚. 基于STCC52单片机的多路数据采集控制系统设计[J].装备制造,2010,(4):234.

[2]张发海. 基于单片机STCC52的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

#include

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit DQ=P2^2;

sbit RS=P3^5;

sbit RW=P3^6;

sbit EN=P3^4;

sbit R=P2^7;

sbit T=P2^6;

unsigned int  time=0;

unsigned long S=0;

bit      flag =0;

unsigned char disbuff[4]       ={ 0,0,0,0,};

unsigned char code str1[]={"range     temp "};

float RxBuf,disdata[5];

uint tvalue;//温度值

uchar tflag;//温度正负标志

unsigned char code ASCII[15] = {'0','1','2','3','4','5','6','7','8','9','.','-','M',};

uchar  Tx,Ax;

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

void delay1ms(unsigned int ms)//延时1毫秒(不够精确的)

 unsigned int i,j;

for(i=0;i for(j=0;j<100;j++);

}

void wr_com(unsigned char com)//写指令//

 delay1ms(1);

 RS=0;

 RW=0;

 EN=0;

 P0=com;

 delay1ms(1);

 EN=1;

 delay1ms(1);

 EN=0;

}

void wr_dat(unsigned char dat)//写数据//

 delay1ms(1);;

 RS=1;

 RW=0;

   EN=0;

     P0=dat;

 delay1ms(1);

     EN=1;

     delay1ms(1);

     EN=0;

}

void lcd_init()//初始化设置//

{

      //   BLK=0;

 delay1ms(15);

     wr_com(0x38);

     delay1ms(5);

     wr_com(0x08);delay1ms(5);

     wr_com(0x01);delay1ms(5);

     wr_com(0x06);delay1ms(5);

     wr_com(0x0c);delay1ms(5);

}

void display(unsigned char *p)//显示//

{

 while(*p!='\\0')

 {

  wr_dat(*p);

  p++;

  //delay1ms(1);

 }

}

init_play()//初始化显示

 lcd_init();

 wr_com(0x80);

 display(str1);

}

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

void delay_18B20(unsigned int i)//延时1微秒

{

    while(i--);

 }

  void ds1820rst()/*ds1820复位*/

 { 

 unsigned char x=0;

 DQ = 1;          //DQ复位

 delay_18B20(4); //延时

 DQ = 0;          //DQ拉低

 delay_18B20(100); //精确延时大于480us

 DQ = 1;          //拉高

 delay_18B20(40); 

uchar ds1820rd()/*读数据*/

 unsigned char i=0;

 unsigned char dat = 0;

for (i=8;i>0;i--)

 {   

  DQ = 0; //给脉冲信号

dat>>=1;

      DQ = 1; //给脉冲信号

      if(DQ)

  dat|=0x80;

     delay_18B20(10);

 }

 return(dat);

}

void ds1820wr(uchar wdata)/*写数据*/

{

 unsigned char i=0;

for (i=8; i>0; i--)

    { 

  DQ = 0;

       DQ = wdata&0x01;

       delay_18B20(10);

      DQ = 1;

wdata>>=1;

     }

}

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

{

 uchar a,b;

 ds1820rst();    

 ds1820wr(0xcc);//*跳过读序列号*/

 ds1820wr(0x44);//*启动温度转换*/

 ds1820rst();    

 ds1820wr(0xcc);//*跳过读序列号*/ 

 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);

}

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

void show()//温度值显示

{    uchar flagdat; 

     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;//正温度不显示符号

     else

        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);

       wr_dat(ASCII[12]);      

       wr_com(0xc8);

       wr_dat(flagdat);//显示符号?

       wr_com(0xc9);

       wr_dat(disdata[0]);//显示百位

       wr_com(0xca);

       wr_dat(disdata[1]);//显示十位 

       wr_com(0xcb);

       wr_dat(disdata[2]);//显示个位 

       wr_com(0xcc);

       wr_dat(0x2e);//显示小数点 

       wr_com(0xcd);

       wr_dat(disdata[3]);//显示小数位

}    

void  StartModule()                  //启动模块

  {

      T=1;                                 //启动一次模块

      _nop_(); 

      _nop_(); 

      _nop_(); 

      _nop_(); 

      _nop_(); 

      _nop_(); 

      _nop_(); 

      _nop_(); 

      _nop_(); 

      _nop_(); 

      _nop_(); 

      _nop_(); 

      _nop_(); 

      _nop_(); 

      _nop_(); 

      _nop_(); 

      _nop_();

      _nop_(); 

      _nop_(); 

      _nop_(); 

      _nop_();

      _nop_(); 

      _nop_(); 

      _nop_(); 

      _nop_(); 

      T=0;

  }

void UART_Init(void) //串口初始化

{    

     PCON = 0x00;   

     SCON = 0x50; //串口工作方式为1,允许接收.  

     TMOD = 0x21; // T1 定时方式2  c 

     TH1 = 0xfd;  //波特率 9600bps @ fosc = 11.0592MHz   

     TL1 = 0xfd;     //启动T1  

     TH0 =0;

     TL0 =0;

     ES = 1;      //开串口中断.

     ET0 =1;

     TR1=1; 

     EA = 1;      //开总中断.

          }

void Send(uchar dat)

 {          

    SBUF = dat; //待发送的数据写入缓冲区          

    while(!TI); //等待发送完成          

    TI = 0; //清零发送标志位

 }

 /////////////////

/********************主程序***********************************/

void main()

  UART_Init();

  init_play();//初始化显示

  while(1)

 {

      read_temp();//读取温度

      StartModule();

       while(!R);        //当RX为零时等待

         TR0=1;                //开启计数

        while(R);            //当RX为1计数并等待

         TR0=0;                //关闭计数

 show();//显示

         delay1ms(80);        //80M

      if(Tx==1)    

        {

          Send('t');  

          Send('e'); 

          Send('m'); 

          Send('p'); 

          Send('='); 

          Send(disdata[1]);

          Send(disdata[2]);

          Send('.');

          Send(disdata[3]);    

          Tx=0;

          Send(' ');

         }

       if(Ax==1)    

        {

          Send('r');  

          Send('a'); 

          Send('n'); 

          Send('g'); 

          Send('e'); 

          Send('='); 

          Send(ASCII[disbuff[0]]);

          Send('.'); 

          Send(ASCII[disbuff[1]]);

          Send(ASCII[disbuff[2]]);    

            Send(' ');

          Ax=0;

         }

        }

      }

void Uart_INT(void) interrupt 4 //串口中断函数

{    

   uchar Rcv = 0;     

   if(RI) //查询接收标志位(有数据发送过来时置为1)    

  {        

    RI = 0;

    Rcv = SBUF;        

    RxBuf=Rcv;        

    if(RxBuf=='g'){ Tx=1;    }

     if(RxBuf=='o'){ Ax=1;    }

    }

  }

文档

单片机的蓝牙接收发射模块设计报告

单片机的蓝牙接收发射模块设计09电子信息工程A班胡传高0915211020马延涛0915211042严飞0915261036目录第一章引言31.1本设计的背景31.2本设计的系统方案31.2.1系统各模块的选择4第二章单片机数据传输系统的组成框图42.1单片机数据发送模块框图42.2PC数据接收模块框图4第三章单片机数据传输系统硬件设计53.1发送与接收模块的单片机最小系统53.2发送与接收模块的无线通信模块——BC04-B蓝牙模块53.2.1蓝牙技术协议简介53.2.2蓝牙技术的核心协议63
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top