(玩电子) 电子技术学习与研究
当前位置单片机教程网 >> MCU设计实例 >> 浏览文章

用单片机实现蓝牙功能

作者:佚名   来源:本站原创   点击数:x  更新时间2009年03月05日   字体

  下面的文字只是关于蓝芽技术的调制算法方面我认为只需要将蓝芽模块加在单片机上就可以了而不必通过单片机编程来实现具体的算法只需要编写使两个模块的接口就可以也就是单片机发送信号时的激励程序接受外来信号后的处理程序置于其余就由作为硬件设备的蓝芽来自写理不过我并不确定我会查查看的.

  蓝牙技术是用于替代电缆或连线的短距离无线通信技术它需要把数字信号转换成模拟信号以便在空间中传输,它采用的调制方式是高斯频移键控,以下简称GFSK, 要了解GFSK,就要先说说频移键控的原理,以下简称 FSK

 FSK: 简单的讲就是用不同的频率来调制不同的码元比如说二进制有0和1 两种码元那么我就需要两个频率f1和f2来调制数字0和1 在接受端根据频率f1代表数字0频率f2代表数字1的览把模拟信号还原为数字信号

 GFSK就是在进行FSK 调制之前将原始信号通过一个高斯低通滤波器来限制信号的频谱宽度这样一来可以获得更加紧凑的频谱也就是过说高频的信号但是保留了足够的频带能量以便在收端成功恢复信号高斯低通滤波器限制了带宽对基带信号进行了整形形成高斯脉冲信号下面说下加入高斯低通滤波器的好处

 假设我用-1来代表该信号频谱覆盖范围里最低的频率成分用1来代表该信号频谱覆盖范围里最高的频率成分一旦信号从-1跳变到1或者从1跳变到-1的时候那么被调制的信号的波形变换太快了很有可能会导致在原始信号的频率范围里出现新的频率成分那么我们的信号就已经失真了这是我们最不想看到的结果而这正是FSK的一个隐忧高斯低通滤波器使得信号变得平滑同样的从-1到1因为滤波器限制了带宽于是实际效果是-1-98-93--- 96991那么用这些变化平滑的数字脉冲信号去调制载波就会减少上述出现的多余频率成分的现象

那么为什么在蓝牙技术中采用了GFSK而不是FSK 因ƣӣ技术对于信号的频谱宽度没有什么限制频率间的范围可能很大导致跳变实在太快这样就造成了失真的可能和频谱的利用率不高这句话是我从一英文网上看到的不过现在还不明白而蓝牙传输的频谱并不大所以采用ǣƣӣ技术还有有限的带宽可以节省电流那么对于手机和单片机的寿命是有好处的


我认为不必深究高斯低通滤波的原理因为该滤波器是一个硬件设备作为组件是直接加在蓝芽模块之中的如果真的要对算法进行编程那么我们就只需要月波器里出来的信号进写理也就是如何用程序来表示ƣӣ算法

下面我结合具体的蓝芽模块来说下ǣƣӣ调制在其中的应用

蓝芽的载波选用全球公用的24hz

实际射频通道为f=2402 k×1mhzk=012…78共个频带并采用跳频方式来扩展频带跳频速率为1600跳/s可得到79个1mhz带宽的信道蓝牙设备采用gfsk调制技术通信速率为1mbit/s实际行速首高可达721kbit/s通信距离为10m发射功率为1mw当发射功率为100mw时通信距离可达100m

对于短距离的数据传输当前最普遍的传输方法是有线传输红外传输和蓝牙传输有线传输是较为传统的数据传输方法需要传输电缆当设备为移动设备或设备数目较多时这将带来很大的不便红外传输经常受到温度辐射等干扰且无法穿过实体进写输使用蓝牙技术可以很好地摒弃这两个缺点但目前蓝牙技术一般被用于高端的电子设备中对于低端的电子设备如何使用蓝牙技术还是一个写解决的问题针对这个问题单片机学习网设计了一个基于蓝牙技术和单片机的数据传输系常为度式电子厂商提供一种技术参考.

1    系统的整体架构
该系统由键盘单片机LED显示器固化了电缆通信协议(RFCOMM)的蓝牙模块和PC机组成

2    系统的工作原理
系统的核心是单片机和蓝牙模块系统上电后单片机初始化自身和所有外围接口蓝牙模块主动寻找其它设备并自动建立连接然后系统进入就绪等待状态凑数据传输方向可以把系统分为发送和接收两个子系统
对于发送子系常单片机接收由键盘传来的键值凑一定的协议规则对其进行转换再显示到显示器上同时单片机调用自身的键值分析程序分析用户要输入数据还是要发送数据在输入状态下单片机记下用户所输入的每一个数据并将其打包存储直到用户按下“发送”键此时单片机转变为发送状态控制蓝牙模块将刚才存储的数据发送出去
对于接收子系常单片机凑事先约定的协议接收从蓝牙模块传来的数据直接到数据结束符而后单片机对数据进行分析解包并将其显示在显示器上为了增强可操作性本数据传输系统考虑了单片机和PC机两种情况每一个子系统既可以使用单片机和蓝牙模块接口也可以使用PC机和蓝牙模块接口采用这样的技术后不仅单片机之间可以互传数据而且单片机还可以和PC机互传数据
3      系统的程序设计
单片机上电后首先要初始化自身在本系统中使用了键盘扫描和LED显示接口芯片8279因此在主程序中还要对8279进行初始化
                COM8279 = 0xd1;      //总清除

             COM8279 = 0x00;      //8*8字符显示左边输入编码扫描键盘 双键封锁
                COM8279 = 0x50;      //读FIFO RAM命令
                COM8279 = 0x90;      //写显示RAM(数码管选择)

之后可以把程序分为接收发送和显示三个主要部分
3.1    接收部分
系统采用查询的方法采集蓝牙模块传送过来的串行数据对键盘的按键值进行设定由个人的习惯来进行设定以C语言的形式的伪代码来表示接收函数的伪代码如下

void RcvData(void){
while(DataReceivingNotDone){
    ReceiveNextBit;
}
}
3.2    发送部分
键盘数据经过处理后转化为串行数据发送到蓝牙模块再由蓝牙模块发送出去发送函数的C语言形式的伪代码为

void SendData(void){
if( KeyValue < 10 ){    //如果数据是一位数
        SendOneByte();      //发送这一位
}
else{                   //如果数据是两位数
        SendTwoBytes();     //分成两位发送先发送高位再发送低位
}
}
3.3    显示部分
系统中使用的前位LED显示通过控制显示的接口芯片8279可以控制LED显示的内容显示函数如下

void DispLong(unsigned int dat,unsigned char addr){
    COM8279 = 0x90 + addr;
    DAT8279 = disp_tab[0];
    COM8279 = 0x90 + addr;
    while(dat){
        DAT8279 = disp_tab[dat % 10];
        dat /= 10;
    }
}
4     结束语
短距离通信的发展趋势是无线通信蓝牙技术在当前已经应用得比较普遍但是这种应用往往局限于高端的电子产品中本文的设计采用低成本的单片机来和蓝牙模块进行技术集成使得蓝牙技术也可以应用在低端电子产品中如果您有需要可以与51hei.com联系本文所设计的数据传输系统在实际中运行良好可以为度式电子厂商提供一种技术参考

发表缆告诉好友收藏此文关闭窗口

文章缆

ձһhƬձƵ ձƵɫwww ձƵ:ɫ