




免费预览已结束,剩余21页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机应用技术实验报告院 系: 物理与机电工程学院 专 业: 电子信息工程(1)班 学 生: 林健 学 号: 20100662126 指导老师: 日 期: 1引言 蓝牙技术是近年来发展迅速的短距离无线通信技术,可以用来替代数字设备间短距离的有线电缆连接。在各种生产现场都需要温度传感器实现温度的检测中,温度是一种最常用的控制参数。但在一些危险的场合或物体移动的情况下,有线的温度传感器不仅布线复杂而且容易造成线缆脱落影响数据的可靠性。近年来,蓝牙技术作为一种较成熟的短距离无线通信技术,将它和单片机技术相融合设计无线温度传感器,可以方便、实时、可靠地将采集到的温度数据传输给控制终端,保证了生产的顺利进行。而且,经过功能扩展建立的无线传感器网络,能够适应更加复杂的测量现场。利用蓝牙技术构建数据采集无线传输模块,与传统的电线或红外方式传输测控数据相比,在测控领域应用篮牙技术的优点主要有123: 1.采集测控现场数据遇到大量的电磁干扰,而蓝牙系统因采用了跳频扩频技术,故可以有效地提高数据传输的安全性和抗干扰能力。2.无须铺设线缆,降低了环境改造成本,方便了数据采集人员的工作。3.可以从各个角度进行测控数据的传输,可以实现多个测控仪器设备间的连网,便于进行集中监测与控制。1 蓝牙技术简介蓝牙技术是一种无线的数据与语音通信的开放性标准,工作在2.4GHz的ISM频段上,采用跳频扩谱技术。蓝牙设备的最大发射功率可分为3级:100mw(20dB/m)、2.smw(4dB/m)、lmw(0dB/m)。当蓝牙设备功率为lmw时,其传输距离一般为0.110m。当发射源接近或是远离而使蓝牙设备接收到的电波强度改变时,蓝牙设备会自动地调整发射功率。当发射功率提高到10mw时,其传输距离可以扩大到10om。蓝牙支持点对点和点对多点的通信方式,在非对称连接时,主设备到从设备的传输速率为721kbps,从设备到主设备的传输速率为57.6kbPs;对称连接时,主从设备之间的传输速率各为432.6kbps。蓝牙标准中规定了在连接状态下有保持模式(HoldM0de)、呼吸模式(SniffMode)和休眠模式(ParkMode)3种电源节能模式,再加上正常的活动模式(ActiveMode),一个使用电源管理的蓝牙设备可以处于这4种状态并进行切换,按照电能损耗由高到低的排列顺序为:活动模式、呼吸模式、保持模式、休眠模式,其中,休眠模式节能效率最高。蓝牙技术的出现,为各种移动设备和外围设备之间的低功耗、低成本、短距离的无线连接提供了有效途径。2系统结构原理 本课题以单片机和蓝牙模块HC-06为主,设计了基于蓝牙无线传输的数据采集系统,整个装置由前端数据采集、传送部分以及末端的数据接受部分组成(如PC机)。前端数据采集部分由位于现场的传感器、信号放大电路、A/D转换器、单片机、存储器、串口通信等构成,传送部分主要利用自带微带天线的蓝牙模块进行数据的无线传输;末端通过蓝牙模块、串口通信传输将数据送到上位PC机进一步处理。整个系统结构框架图如图1所示。 AT89C51单片机作为下位机主机,传感器获得的信号经过放大后送入12位A/D转换器AD574A进行A/D 转换,然后将转换后的数据存储到RAM芯片6264中。下位机可以主动地或者在接收上位机通过蓝牙模块发送的传送数据指令后,将6264中存储的数据按照HCI-RS232传输协议进行数据定义,通过MAX3232进行电平转换后送至蓝牙模块,由篮牙模块将数据传送到空间,同时上位机的蓝牙模块对此数据进行接收,再通过MAX3232电平转换后传送至PC机,从而完成蓝牙无线数据的交换。图1. 基于蓝牙无线传输的数据采集系统结构框架图2.1温度检浏单元 温度检测单元采用D1S8B02型传感器,是美国DALLAS公司推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过编程实现912位的数字值读数方式。DS18BZo与SPCEo61A单片机的接口电路如图2所示,由于DS18B20传感器支持“一线总线”接口,因此只需将DS18B20信号线接到单片机的1位1/0线上即可,而且在1根1/0线上可以挂接多个传感器实现多点温度测量。3 软件设计及流程3.1 单片机软件设计单片机软件部分主要包括主程序、中断子程序、测温子程序、转换显示及存储子程序等,为了降低功耗,使用中断来唤醒单片机进行测温等工作,因此主程序部分比较简单,主要负责系统各部分初始化和中断的调用,在系统初始化完成后就直接进人睡眠模式,当中断到来时单片机退出睡眠模式,调用中断子程序实现测温、转换显示、温度数据的传输功能。3.2 蓝牙应用程序设计本系统是基于蓝牙的串口应用模型SPP(SerialPortProfile)实现无线数据的透明传输,在核心协议栈之上编写自己的上层应用程序。CSR的蓝牙核心协议栈包括HCI、LZCAP、SDP、RFCOMM等,以固件的形式提供给开发人员,用户编写的应用程序和协议栈一起运行在CSR嵌人式环境中。在CSR程序中,不同任务之间可以异步地发送消息,每一个任务在创建的时候可以让其中一个拥有消息队列,其它的就把发给任务的消息提交给该消息队列,由任务调度程序自动运行获得任务的消息。蓝牙模块上层应用程序流程如图3所示。4数据采集系统的下位机电路设计 信号放大电路主要采用高共模抑制比放大电路,它由三个集成运算放大器组成,本课题选用的集成运算放大器TL082具有高精度、低漂移的特性。 AT89C51与A/D转换器AD574A及外扩数据存储器6264的接口示意图如图2所示。AT89C51通过地址译码器74LS138、地址锁存器74LS373,对A/D转换器、数据存储器进行地址选择。图4.AT89C51与AD574及外扩数据存储器6264的接口示意图 蓝牙模块与AT89C51串口之间采用蓝牙模块提供的RS232传输层接口实现通信,需要外接电路实现电平转换,由于蓝牙模块需3.3V供电,因此这里选用MAX3232芯片作电平转换芯片。另外,为了将5V输入电压转换为3.3V电压,选用电源稳压芯片7301为蓝牙模块供电。AT89C51通过MAX3232与蓝牙模块的接口示意图如图3所示。图5.AT89C51通过MAX3232与蓝牙模块的接口示意图 4. 数据采集和蓝牙通信的软件实现 本课题的软件主要包括两部分:数据采集和蓝牙通信,采用汇编语言和C51混合编程。为了保证数据采集的实时性,数据采集部分采用汇编语言编程,单片机采用定时采样,具体选择定时方式2,定时为100微秒,定时结束后,进行A/D转换,单片机采用查询的方式读取AD574A的转换结果,然后将转换后的数据存至外扩存储器6264中。另外,串行口工作在方式1,波特率为9600bps。蓝牙通信部分采用C51编程,主要实现利用主机控制器接口HCI层建立点对点的蓝牙异步无链接数据传输通道,当两个蓝牙模块链路建立成功后,就可以按照蓝牙规范规定的HCI数据分组格式收发数据。 两个蓝牙设备间进行数据通信是通过HCI分组实现的,HCI作为蓝牙软件协议堆栈中软硬件之间的接口,为上层提供了访问和控制蓝牙硬件的统一接口。HCI是通过分组(Packet)的方式来进行信息交换的。HCI分组有三种类型:指令分组(Command Packet)、事件分组(Event Packet)和数据分组(Data Packet)。 主机与蓝牙模块用指令-应答方式进行通信,主机向主机控制器发送指令分组;主机控制器执行某一指令后,大多数情况下会返回给主机一个指令完成事件分组(Command Complete Event Packet),该分组携带有指令完成的信息。有些分组不会返回指令完成事件,而返回指令状态事件分组(Command Status Event Packet)用以说明主机发出的指令己经被主机控制器接收并开始处理。如果指令分组的参数有误,返回的指令状态事件分组就会给出相应的错误代码;数据分组分为异步无连接(Asynchronous Connectionless, ACL)数据分组和同步面向连接(Synchronization Connection Oriented, SCO)数据分组两种。在本课题中,仅涉及到数据通信,而没有涉及到语音通信,因此建立的是ACL链路。 单片机与蓝牙模块的软件接口,就是指单片机如何通过软件实现向蓝牙模块发送HCI指令,蓝牙模块又如何通过软件向单片机返回HCI事件以及两者之间如何实现数据传输。单片机和蓝牙模块间通信的过程是通过键入HCI指令,观察收到的HCI事件。当两个蓝牙模块建立链路成功后,就可以按照蓝牙规范规定的HCI数据包格式收发数据。 在通过蓝牙模块进行数据通信时,首先要进行蓝牙模块的初始化和HCI层流控设置。典型的蓝牙模块间的ACL数据通信流程有6个步骤:蓝牙模块自身初始化Init Bluetooth( )、HCI流量控制设置Flow Set( )、查询Inquiry( )、建立连接Great Connection( )、进行数据通信Data_ Transmit(Data Length, HCI_ Number)和断开连接Disconnect() 5。 初始化程序主要是单片机对蓝牙发送一系列命令分组。单片机每向蓝牙发送一个HCI命令分组就要接收蓝牙返回的事件分组,判断命令执行的情况。若返回事件分组不正确就要重新初始化蓝牙,直到完全正确。蓝牙设备在初始化完成之后,通过Set_ Host_ Controller_ To_ Host_ Flow_ Control指令打开主机控制器到主机的流量控制,并通过Host Buffer Size指令来对流量控制进行配置,包括数据分组的长度等。此后,主设备查询周围的蓝牙设备,找到之后即可向其发出建立连接指令,建立ACL连接。成功建立连接之后就可以进行数据通信。通信完成后,主设备和从设备都可以发出断开连接的命令Disconnect。在上述过程中,查询过程不一定存在,所以这只是一般的流程模型。如果在任何一条指令分组发出后,返回错误的事件分组,则指令需重发直到正确为止5。本课题中,下、上位机的蓝牙模块间进行数据传输的程序流程图分别如图4、5所示。图6.点对点蓝牙系统主方程序流程图 图7.点对点蓝牙系统从方程序流程图 5结论 随着数据采集技术的不断发展,将蓝牙技术与数据采集技术相结合构建出的数据采集蓝牙无线传输系统具有性能高、体积小、功耗低、抗干扰能力强、数据传输速度快、安装维护方便适用于移动设备和便携设备等优点。本课题所设计的数据采集蓝牙无线传输模块,有效的实现了对现场数据的采集和短距离内数据的无线传输,对于类似的数据采集系统的设计具有很好的借鉴意义。创新点: 基于蓝牙技术的无线数据采集系统可以在短距离内用无线接口来代替有线连接,这对于需要采集大量数据的测控场合非常有用,在采集数据时,本系统就可以迅速地将所采集到的数据传送到附近的数据处理装置(例如PC、笔记本电脑)中,不仅避免了在现场铺设大量复杂连线以及对这些接线是否正确的检查与核对,而且不会发生因接线可能存在的错误而造成测控的失误小常识(非常重要):TXD:发送端,一般表示为自己的发送端,正常通信必须接另一个设备的RXD。RXD:接收端,一般表示为自己的接收端,正常通信必须接另一个设备的TXD。正常通信时候本身的TXD永远接设备的RXD!自收自发:正常通信时RXD接其他设备的TXD,因此如果要接收自己发送的数据顾名思义,也就是自己接收自己发送的数据,即自身的TXD直接连接到RXD,用来测试本身的发送和接收是否正常,是最快最简单的测试方法,当出现问题时首先做该测试确定是否产品故障。也称回环测试。电平逻辑:TTL电平:通常数据表示采用二进制,规定+5V等价于逻辑1,0V等价于逻辑0,称作TTL信号系统,是正逻辑RS232电平:采用-12V到-3V,等价于逻辑0,+3V到+12V的逻辑电平,等价于逻辑1,是负逻辑的1、核心模块使用HC-06主模块,引出接口包括VCC,GND,TXD,RXD,STATE LED状态输出脚,单片机可通过STATE脚状态判断蓝牙是否已经连接,模块上设置重搜索按键,同时引到KEY脚供外部单片机使用2、led指示蓝牙连接状态,快闪表示未配对,慢闪表示已配对过但目前未与从机连接上,常亮表示已经跟从机连接上3、底板设置LDO,输入电压3.66V,未配对时电流约30mA,配对后约10mA,输入电压禁止超过7V,绝对禁止接反电源!4、接口电平3.3V,可以直接连接各种单片机(51,AVR,PIC,ARM,MSP430等),5V单片机也可直接连接,无需MAX232也不能经过MAX232!5、空旷地有效距离10米,超过10米也是可能的,但不对此距离的连接质量做保证6、配对以后当全双工串口使用,无需了解任何蓝牙协议,但仅支持8位数据位、1位停止位、无奇偶校验的通信格式,这也是最常用的通信格式,不支持其他格式。 7、在未建立蓝牙连接时支持通过AT指令设置波特率、配对密码,设置的参数掉电保存。蓝牙连接以后自动切换到透传模式8、体积小巧(4.03cm*1.52cm),工厂贴片生产,保证贴片质量。并套透明热缩管,防尘美观,且有一定的防静电能力。9、该链接为主机,只能与HC06从机配对,主机之间也不能配对。参数设置(默认设置:波特率:9600bps,设备名称:linvor,配对密码:1234,如按默认参数则无需以下个性设置。所有设置好的参数掉电都可保存):发送AT命令设置参数的设备可以是USB转串口,单片机或其他TTL电平的串口,必须正确连接好硬件才能通过AT命令设置参数(以USB转串口为例):1)、给模块提供合适的工作电源,本店带底板模块的工作电源为3.66V,不带底板核心模块为3.3V2)、正确连接数据线,USB转串口的TXD和RXD必须与蓝牙模块的RXD,TXD交叉连接3)、蓝牙模块的LED必须是闪烁状态才会响应AT命令硬件连接好以后打开电脑上的串口调试工具(以SSCOM3.2软件为例),去掉“发送新行”前的勾,然后在字符串输入框中输入AT命令后点发送。所有AT命令必须大写!测试通讯指令:发送AT,如果模块回复OK则表明硬件连接没有问题,可以发送其他命令修改参数BAUD后面的序号代表需要设置的波特率,对应如下:1-1200bps2-2400bps3-4800bps4-9600bps5-19200bps6-38400bps7-57600bps8-115200bps9-230400bpsA-460800bpsB-921600bpsC-1382400bps设置波特率成功后立即生效,如还需要输入AT指令,必须把软件的波特率调到与刚才设置的波特率一致才能响应AT指令(如默认波特率为9600bps,设置新的波特率为1200bps后,需将软件的波特率设置选1200bps才会重新响应AT指令) 重要提醒:设置波特率前请查看软件是否支持设置后的波特率,否则将无法再用这个软件设置波特率!因为MAX232芯片不能在高于115200波特率下可靠工作,所以当使用电脑的串口设置高于115200bps后,需要使用其他支持该波特率的设备(如单片机,或者支持高波特率的USB转串口)才能再次通过AT命令设置参数修改配对密码发送“AT+PIN0000”,设置成功后模块会回复“OKsetPIN”,则配对密码已被设置为0000,密码只能是四个字符。该配对密码在电脑或其他蓝牙设备连接到蓝牙模块时需要提供。蓝牙模块代替原来的有线串口需要注意1)、请先确定设备的电平逻辑以选择对应电平逻辑的蓝牙模块2)、必须是8位数据位,1位停止位,无奇偶校验的通信格式3)、通信过程必须是固定波特率,不支持通信中修改波特率4)、必须与所物理连接的设备波特率一致才能正常通信5)、通信过程中数据处理肯定会有延时,所以如果问答式通信且数据量大可能会有较大的累计延时,建议一次传输比较大的数据块DS18B20的子程序#include#include#define uchar unsigned char#define uint unsigned intsbit DQ=P20; void reset(); /DS18B20复位函数void write_byte(uchar val); /DS18B20写命令函数uchar read_byte(void); /DS18B20读1字节函数void read_temp(); /温度读取函数void work_temp(); /温度数据处理函数uchar data temp_data2=0x00,0x00;uchar data display5=0x00,0x00,0x00,0x00,0x00; /对于温度显示值值 uchar code ditab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09; /温度小数部分查表 main() while(1)void delay1(uint t)for(;t0;t-);/温度控制子函数 void reset()uchar presence=1;while(presence) while(presence) DQ=1;_nop_();_nop_(); DQ=0; delay1(50); DQ=1; delay1(6); presence=DQ; delay1(45); presence=DQ; DQ=1;void write_byte(uchar val)uchar i;for(i=8;i0;i-) DQ=1;_nop_();_nop_(); DQ=0;_nop_();_nop_();_nop_();_nop_();_nop_(); DQ=val&0x01; delay1(6); val=val/2; DQ=1;_nop_();uchar read_byte(void)uchar i;uchar value=0;for(i=8;i0;i-) DQ=1;_nop_();_nop_(); value=1; DQ=0; _nop_();_nop_();_nop_();_nop_(); DQ=1;_nop_();_nop_();_nop_();_nop_(); if(DQ)value|=0x80; delay1(6); DQ=1;return(value);void read_temp()reset();write_byte(0xcc);write_byte(0xbe);temp_data0=read_byte();temp_data1=read_byte();reset();write_byte(0xcc);write_byte(0x44);void work_temp()if(temp_data1127) temp_data1=(256-temp_data1); temp_data0=(256-temp_data0); n=1; /需要前面宏定义 display4=temp_data0&0x0f; /低位的低4位 display0=ditabdisplay4; /小数点后的数值display4=(temp_data0&0xf0) 4)|(temp_data1&0x0f)0)i-;count-;void init_com()TMOD=0x20; /设置定时器1为模式2TH1=0xfd; /装初值设定波特率TL1=0xfd;TR1=1; /启动定时器SM0=0; /串口通信模式设置SM1=1;/ REN=1; /串口允许接收数据PCON=0; /波特率不倍频/ SMOD=0; /波特率不倍频/ EA=1; /开总中断/ES=1; /开串行中断void display(uint temp)uchar bai,shi,ge;bai=temp/100;shi=temp%100/10;ge=temp%100%10;dula=0;P0=tablebai; /显示百位dula=1; /从0到1,有个上升沿,解除锁存,显示相应段dula=0; /从1到0再次锁存wela=0;P0=0xfe;wela=1;wela=0;delay(1); /延时约2msP0=table1shi; /显示十位dula=1;dula=0;P0=0xfd;wela=1;wela=0;delay(1);P0=tablege; /显示个位dula=1;dula=0;P0=0xfb;wela=1;wela=0;delay(1);void ds_reset(void)ds=1;_nop_(); /1usds=0;TempDelay(80); /当总线停留在低电平超过480us,总线上所以器件都将被复位,这里/延时约530us总线停留在低电平超过480s,总线上的所有器件都/将被复位。_nop_();ds=1; /产生复位脉冲后,微处理器释放总线,让总线处于空闲状态,原因查/18b20中文资料TempDelay(5); /释放总线后,以便从机18b20通过拉低总线来指示其是否在线,/存在检测高电平时间:1560us, 所以延时44us,进行 1-wire presence /detect(单线存在检测)_nop_();_nop_();_nop_();if(ds=0)flag=1; /detect 18b20 successelseflag=0; /detect 18b20 failTempDelay(20); /存在检测低电平时间:60240us,所以延时约140us_nop_();_nop_();ds=1; /再次拉高总线,让总线处于空闲状态bit ds_read_bi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国家能源佳木斯市桦南县2025秋招笔试题库含答案
- 国家能源济南市平阴县2025秋招面试典型题目及答案
- 国家能源大庆市龙凤区2025秋招面试典型题目及答案
- 国家能源邯郸市复兴区2025秋招笔试数学运算题专练及答案
- 初一的读书心得
- 2025年十堰市城发集团及所属子公司公开招聘拟聘用人员考前自测高频考点模拟试题及答案详解一套
- 医生年度个人工作总结2篇
- 2025年北京中医药大学东方医院枣庄医院公开招聘备案制工作人员(59人)考前自测高频考点模拟试题完整参考答案详解
- 周口市中储粮2025秋招机电维修岗高频笔试题库含答案
- 2025年牡丹江绥芬河市博物馆公开招聘讲解员招聘4人考前自测高频考点模拟试题有答案详解
- 2025年吉安县公安局面向社会公开招聘留置看护男勤务辅警29人笔试备考试题及答案解析
- 内部审计管理系统建设需求
- 燃气输配课程设计说明书
- 如何进行模拟堂教学
- 手术操作分类代码国家临床版3.0
- 监控扩容施工方案
- 轴的计算与校核、传动轴计算(无密码可修改)
- 职称若干问题回答
- 《复旦大学介绍》
- 静电测试作业指导书
- 马云演讲中英文版
评论
0/150
提交评论