找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12428|回复: 4
收起左侧

使用手机蓝牙控制单片机LED灯的亮灭

[复制链接]
ID:291004 发表于 2018-4-30 15:02 | 显示全部楼层 |阅读模式
准备:1.需要一个蓝牙从模块(在某宝上有卖,价格在20~50元之间)

如下图所示:

蓝牙从模块

蓝牙从模块


2. 需要一个“蓝牙串口”的安卓应用,可以在安卓手机应用商店里找到
如下图所示:

蓝牙app

蓝牙app



3:一款单片机(这里用TI公司的msp430g2553做示范),4根杜邦线

开工:
1.连接,蓝牙模块的VCC与GND分别与单片机标注为VCC与GND的针脚对应相连接。其次蓝牙的RXD与TXD与单片机的TXD与RXD分别连接(VCC指电源,GND指,单片机的RXD与TXD可能要看单片机的引脚功能才能知道那些引脚是TXD,RXD)
2.烧入代码,手机蓝牙与单片机蓝牙模块HC-06连接,发送消息0或1,即可看到LED灯被点亮(具体细节请自行摸索,尝试是一种很好的学习方法)
源代码如下:
  1. #include <msp430.h>

  2. int main(void)
  3. {
  4.   WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  5.   if (CALBC1_1MHZ==0xFF)                                        // If calibration constant erased
  6.   {                                                                                       
  7.     while(1);                               // do not load, trap CPU!!        
  8.   }
  9.   DCOCTL = 0;                               // Select lowest DCOx and MODx settings
  10.   BCSCTL1 = CALBC1_1MHZ;                    // Set DCO
  11.   DCOCTL = CALDCO_1MHZ;
  12.   P1SEL = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
  13.   P1SEL2 = BIT1 + BIT2 ;                    // P1.1 = RXD, P1.2=TXD
  14.   UCA0CTL1 |= UCSSEL_2;                     // SMCLK
  15.   UCA0BR0 = 104;                            // 1MHz 9600
  16.   UCA0BR1 = 0;                              // 1MHz 9600
  17.   UCA0MCTL = UCBRS0;                        // Modulation UCBRSx = 1
  18.   UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  19.   IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt

  20.   __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, interrupts enabled
  21. }

  22. //  Echo back RXed character, confirm TX buffer is ready first
  23. #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
  24. #pragma vector=USCIAB0RX_VECTOR
  25. __interrupt void USCI0RX_ISR(void)
  26. #elif defined(__GNUC__)
  27. void __attribute__ ((interrupt(USCIAB0RX_VECTOR))) USCI0RX_ISR (void)
  28. #else
  29. #error Compiler not supported!
  30. #endif
  31. {
  32.   while (!(IFG2&UCA0TXIFG));                // USCI_A0 TX buffer ready?
  33.   if(UCA0RXBUF=='0')                 // TX -> RXed character
  34.   {
  35.     P1DIR |= BIT0;
  36.     P1OUT ^= BIT0;
  37.   }
  38. }
复制代码
回复

使用道具 举报

ID:9987 发表于 2018-5-1 20:27 | 显示全部楼层
谢谢,学习学习手机蓝牙控制
回复

使用道具 举报

ID:243748 发表于 2018-5-1 21:41 来自手机 | 显示全部楼层
有51的程序吗
回复

使用道具 举报

ID:118624 发表于 2018-5-1 21:47 | 显示全部楼层
我帮楼主补充一下,蓝牙模块有时候需要配置,主要取决你电路的晶振,如果你的晶振是使用12M,那么蓝牙模块默认的波特率是9600需要修改,因为12M晶振不能采用9600的波特率
回复

使用道具 举报

ID:406782 发表于 2018-10-8 22:31 | 显示全部楼层
青青之歌 发表于 2018-5-1 21:47
我帮楼主补充一下,蓝牙模块有时候需要配置,主要取决你电路的晶振,如果你的晶振是使用12M,那么蓝牙模块 ...

老哥,你补充的才是关键啊,不然搞半天都没反应
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表