zigbee CC2530 系列教程 14 蓝牙控制实验

所有课程见此链接:

zigbee CC2530 系列教程 0 课程介绍

4.14蓝牙控制实验

4.14.1 实验目的

学习使用蓝牙模块,并通过风云串口助手控制。

4.14.2 实验讲解

首先根据开发板硬件原理图确定蓝牙模块与CC2530芯片的连接引脚,如图4-17所示。

图4-17 蓝牙模块接口图

此节可参考4.6节串口数据收发实验以及查阅风云蓝牙模块说明书进行学习。

蓝牙模块采用风云蓝牙模块,引脚定义:

蓝牙模块 TXD:蓝牙模块的发送端,正常通信必须接另一个设备的 RXD。

蓝牙模块 RXD:蓝牙模块的接收端,正常通信必须接另一个设备的 TXD。

蓝牙模块 STATE:蓝牙模块的状态引脚,与蓝牙 led 表示的状态一致(此引脚不常用) 。

蓝牙模块 EN:蓝牙模块的使能端(此引脚不常用) 。

蓝牙模块 5V:蓝牙模块的电源引脚。

蓝牙模块 GND:蓝牙模块的接地引脚

注意:通常仅使用 TXD、RXD 、5V 、 GND 即可通信

主函数部分程序如下:

#include <iocc2530.h>

//LED灯IO定义

#define LED1   P1_0

#define LED2   P1_1

unsigned char temp;

void initUART0(void);

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

串口(UART0)初始化函数:

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

void initUART0(void)

{

    CLKCONCMD &= ~0x40;      //设置系统时钟源为32MHZ晶振

    while(CLKCONSTA & 0x40);   //等待晶振稳定

    CLKCONCMD &= ~0x47;     //设置系统主时钟频率为32MHZ

    PERCFG = 0x00;             //位置1 P0口

    P0SEL = 0x3c;            //P0用作串口

    P2DIR &= ~0XC0;           //P0优先作为UART0    

    U0CSR |= 0x80;            //串口设置为UART方式

    U0GCR |= 8;

    U0BAUD |= 59;              //波特率设为9600

    UTX0IF = 1;              //UART0 TX中断标志初始置位1    

    U0CSR |= 0X40;      //允许接收

    IEN0 |= 0x84;            //开总中断,接收中断

}

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

主函数

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

void main(void)

{

    /******LED P1_0,P1_1方向初始化******/

    P1DIR |= 0x03;     //P1_0,P1_1设置为输出模式    

    LED1 = 1;         //熄灭LED1

    LED2 = 1;         //熄灭LED2

    initUART0();

    while(1)

    {

        if(temp == 0x01)

        {

            LED1 = 0;         //点亮LED1

        }

        if(temp == 0x02)

        {

            LED2 = 0;         //点亮LED2

        }

        if(temp == 0x11)

        {

            LED1 = 1;         //熄灭LED1

        }

        if(temp == 0x22)

        {

            LED2 = 1;         //熄灭LED2

        }

    }

}

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

一旦有数据从串口传至CC2530,则进入中断,将接收到的数据赋值给变量temp.

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

#pragma vector = URX0_VECTOR

 __interrupt void UART0_ISR(void)

{

    URX0IF = 0; //清中断标志

    temp = U0DBUF;

}

4.14.3 实验效果

将风云蓝牙模块接插到开发板相应位置,注意接插方向,请按照正确说明接插进去,然后下载程序,安装给手机安装风云蓝牙串口助手,如图4-18,手机连接蓝牙模块,发送指令如下:

发送0x01指令,开发板D3(LED1)点亮,发送0x11指令,开发板D3(LED1)熄灭;

发送0x02指令,开发板D4(LED2)点亮,发送0x22指令,开发板D4(LED2)熄灭。

发布了133 篇原创文章 · 获赞 51 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/aa120515692/article/details/104007216