标题: 使用手机蓝牙控制单片机LED灯的亮灭 [打印本页]

作者: 莫等闲    时间: 2018-4-30 15:02
标题: 使用手机蓝牙控制单片机LED灯的亮灭
准备:1.需要一个蓝牙从模块(在某宝上有卖,价格在20~50元之间)

如下图所示:


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




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. }
复制代码

作者: xcnyw    时间: 2018-5-1 20:27
谢谢,学习学习手机蓝牙控制
作者: wuxishun    时间: 2018-5-1 21:41
有51的程序吗
作者: 青青之歌    时间: 2018-5-1 21:47
我帮楼主补充一下,蓝牙模块有时候需要配置,主要取决你电路的晶振,如果你的晶振是使用12M,那么蓝牙模块默认的波特率是9600需要修改,因为12M晶振不能采用9600的波特率
作者: 学无止境,学习    时间: 2018-10-8 22:31
青青之歌 发表于 2018-5-1 21:47
我帮楼主补充一下,蓝牙模块有时候需要配置,主要取决你电路的晶振,如果你的晶振是使用12M,那么蓝牙模块 ...

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




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1