標(biāo)題: 單片機(jī)+手機(jī)APP藍(lán)牙控制RGB燈的顏色變化 程序與pcb [打印本頁(yè)]

作者: pdh    時(shí)間: 2016-1-11 10:37
標(biāo)題: 單片機(jī)+手機(jī)APP藍(lán)牙控制RGB燈的顏色變化 程序與pcb
STC15單片機(jī) 模塊化程序 關(guān)于RGB燈的設(shè)計(jì),自己寫了一個(gè)手機(jī)APP通過藍(lán)牙控制RGB燈的顏色變化



pcb下載 電路圖: PCB.rar (4.52 MB, 下載次數(shù): 417)
stc15單片機(jī)完整源程序下載: 彩燈.rar (109.72 KB, 下載次數(shù): 464)


下面是部分程序預(yù)覽:
anjian.c
  1. /********************************************************************                                                                                                  *
  2. *文件名:ANJIAN.c
  3. *文件描述:按鍵控制LED的顏色變化
  4. *創(chuàng)建作者:龐登輝
  5. *創(chuàng)建日期:2015/11/28
  6. *創(chuàng)建版本號(hào):V1.0
  7. *******************************************************************/
  8. #include"ANJIAN.h"
  9. /********************************************************************
  10. *函數(shù)名: void AnJan_Kong(void)
  11. *函數(shù)功能:        手機(jī)按鍵控制RGB燈的顏色
  12. *輸入?yún)?shù):無
  13. *返回參數(shù):void
  14. *函數(shù)使用注意事項(xiàng):初始化
  15. *********************************************************************/
  16. void AnJan_Kong(void)
  17. {        if(biaozhi==1)
  18. {
  19.         if(SBUF=='e') //紅色
  20.         {
  21.                 CCAP0H = CCAP0L = 255; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  22.                 CCAP1H = CCAP1L = 0; //紅色PWM
  23.                 CCAP2H = CCAP2L = 255; //藍(lán)色PWM
  24.                 rgb[1] = 0; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  25.                 rgb[0] = 255; //紅色PWM
  26.                 rgb[2] = 0; //藍(lán)色PWM
  27.         }
  28.         if(SBUF=='f') //綠色
  29.         {
  30.                 CCAP0H = CCAP0L = 0; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  31.                 CCAP1H = CCAP1L = 255; //紅色PWM
  32.                 CCAP2H = CCAP2L = 255; //藍(lán)色PWM
  33.                 rgb[1] = 255; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  34.                 rgb[0] = 0; //紅色PWM
  35.                 rgb[2] = 0; //藍(lán)色PWM
  36.         }
  37.         if(SBUF=='g') //藍(lán)色
  38.         {
  39.                 CCAP0H = CCAP0L = 255; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  40.                 CCAP1H = CCAP1L = 255; //紅色PWM
  41.                 CCAP2H = CCAP2L = 0; //藍(lán)色PWM
  42.                 rgb[1] = 0; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  43.                 rgb[0] = 0; //紅色PWM
  44.                 rgb[2] = 255; //藍(lán)色PWM
  45.         }
  46.         if(SBUF=='h') //半紅色
  47.         {
  48.                 CCAP0H = CCAP0L = 255; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  49.                 CCAP1H = CCAP1L = 128; //紅色PWM
  50.                 CCAP2H = CCAP2L = 255; //藍(lán)色PWM
  51.                 rgb[1] = 0; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  52.                 rgb[0] = 127; //紅色PWM
  53.                 rgb[2] = 0; //藍(lán)色PWM
  54.         }
  55.         if(SBUF=='i') //半綠色
  56.         {
  57.                 CCAP0H = CCAP0L = 128; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  58.                 CCAP1H = CCAP1L = 255; //紅色PWM
  59.                 CCAP2H = CCAP2L = 255; //藍(lán)色PWM
  60.                 rgb[1] = 127; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  61.                 rgb[0] = 0; //紅色PWM
  62.                 rgb[2] = 0; //藍(lán)色PWM
  63.         }
  64.         if(SBUF=='j') //半藍(lán)色
  65.         {
  66.                 CCAP0H = CCAP0L = 255; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  67.                 CCAP1H = CCAP1L = 255; //紅色PWM
  68.                 CCAP2H = CCAP2L = 128; //藍(lán)色PWM
  69.                 rgb[1] = 0; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  70.                 rgb[0] = 0; //紅色PWM
  71.                 rgb[2] = 127; //藍(lán)色PWM
  72.         }
  73.         if(SBUF=='k') //黃色
  74.         {
  75.                 CCAP0H = CCAP0L = 0; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  76.                 CCAP1H = CCAP1L = 0; //紅色PWM
  77.                 CCAP2H = CCAP2L = 255; //藍(lán)色PWM
  78.                 rgb[1] = 255; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  79.                 rgb[0] = 255; //紅色PWM
  80.                 rgb[2] = 0; //藍(lán)色PWM
  81.         }
  82.         if(SBUF=='l') //藍(lán)綠色
  83.         {
  84.                 CCAP0H = CCAP0L = 0; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  85.                 CCAP1H = CCAP1L = 255; //紅色PWM
  86.                 CCAP2H = CCAP2L = 0; //藍(lán)色PWM
  87.                 rgb[1] = 255; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  88.                 rgb[0] = 0; //紅色PWM
  89.                 rgb[2] = 255; //藍(lán)色PWM
  90.         }
  91.         if(SBUF=='p') //白色
  92.         {
  93.                 CCAP0H = CCAP0L = 0; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  94.                 CCAP1H = CCAP1L = 0; //紅色PWM
  95.                 CCAP2H = CCAP2L = 0; //藍(lán)色PWM
  96.                 rgb[1] = 255; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  97.                 rgb[0] = 255; //紅色PWM
  98.                 rgb[2] = 255; //藍(lán)色PWM
  99.         }
  100.         if(SBUF=='o') //粉紅色
  101.         {
  102.                 CCAP0H = CCAP0L = 255; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  103.                 CCAP1H = CCAP1L = 0; //紅色PWM
  104.                 CCAP2H = CCAP2L = 0; //藍(lán)色PWM
  105.                 rgb[1] = 0; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  106.                 rgb[0] = 255; //紅色PWM
  107.                 rgb[2] = 255; //藍(lán)色PWM
  108.         }        
  109.         if(SBUF=='n') //天藍(lán)色
  110.         {
  111.                 CCAP0H = CCAP0L = 128; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  112.                 CCAP1H = CCAP1L = 255; //紅色PWM
  113.                 CCAP2H = CCAP2L = 0; //藍(lán)色PWM
  114.                 rgb[1] = 127; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  115.                 rgb[0] = 0; //紅色PWM
  116.                 rgb[2] = 255; //藍(lán)色PWM
  117.         }
  118.         if(SBUF=='m') //紫色
  119.         {
  120.                 CCAP0H = CCAP0L = 250; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  121.                 CCAP1H = CCAP1L = 133; //紅色PWM
  122.                 CCAP2H = CCAP2L = 148; //藍(lán)色PWM
  123.                 rgb[1] = 0; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  124.                 rgb[0] = 117; //紅色PWM
  125.                 rgb[2] = 102; //藍(lán)色PWM
  126.         }
  127.         }
  128. }
  129. /********************************************************************
  130. *函數(shù)名: void RGB_Led_Process(void)
  131. *函數(shù)功能:        手機(jī)按鍵控制RGB燈的顏色的進(jìn)程函數(shù)
  132. *輸入?yún)?shù):無
  133. *返回參數(shù):void
  134. *函數(shù)使用注意事項(xiàng):初始化
  135. *********************************************************************/
  136. void RGB_Led_Process(void)
  137. {
  138.         CCAP0H = CCAP0L = 255-rgb[1]; //綠色PWM(三極管電路設(shè)計(jì)時(shí)PWM大導(dǎo)通小亮度弱)
  139.         CCAP1H = CCAP1L = 255-rgb[0]; //紅色PWM
  140.         CCAP2H = CCAP2L = 255-rgb[2]; //藍(lán)色PWM
  141.         AnJan_Kong();
  142.         SendData_Uart1(re[2]);

  143. }
復(fù)制代碼

gsm.c
  1. /********************************************************************                                                                                                  *
  2. *文件名:GSM.c
  3. *文件描述:STC15串口外設(shè)函數(shù)
  4. *創(chuàng)建作者:龐登輝
  5. *創(chuàng)建日期:2015/11/28
  6. *創(chuàng)建版本號(hào):V1.0
  7. *******************************************************************/
  8. #include "GSM.h"
  9. #include <string.H>
  10. #include <intrins.h>
  11. uchar XinXi = 0;


  12. /********************************************************************
  13. *函數(shù)名: uchar hand(uchar *ptr)
  14. *函數(shù)功能:        檢測(cè)接收字符串
  15. *輸入?yún)?shù):        *ptr 要檢測(cè)的字符串
  16. *返回參數(shù):uchar
  17. *函數(shù)使用注意事項(xiàng):接收數(shù)據(jù)通過中斷完成
  18. *********************************************************************/
  19. uchar hand(uchar *ptr)
  20. {
  21.         if(strstr(rec_data,ptr)!=NULL)//strstr(char *str1, char *str2);找出str2字符串在
  22.                                                                 //str1字符串中第一次出現(xiàn)的位置(不包括str2的串結(jié)束符)。
  23.                                                                 //返回值:返回該位置的指針,如找不到,返回空指針。
  24.                 return 1;
  25.         else
  26.                 return 0;
  27. }

  28. /********************************************************************
  29. *函數(shù)名: void clear_rec_data(void)
  30. *函數(shù)功能:        清除接收的字符串
  31. *輸入?yún)?shù):無
  32. *返回參數(shù):void
  33. *函數(shù)使用注意事項(xiàng):接收數(shù)據(jù)通過中斷完成
  34. *********************************************************************/
  35. void clear_rec_data(void)
  36. {
  37.         uchar i;
  38.         for(i=0;i<strlen(rec_data);i++)
  39.         {
  40.                 rec_data[i] = '0';
  41.         }
  42.         rec_num = 0;
  43. }
  44. /********************************************************************
  45. *函數(shù)名: void JieShou_Sing_Process(void)
  46. *函數(shù)功能:        接收手機(jī)信息進(jìn)程函數(shù)
  47. *輸入?yún)?shù):無
  48. *返回參數(shù):void
  49. *函數(shù)使用注意事項(xiàng):接收數(shù)據(jù)通過中斷完成
  50. *********************************************************************/
  51. void JieShou_Sing_Process(void)
  52. {
  53.         if(hand("+GMTI"))//如果有短信發(fā)來就為1
  54.         {
  55.                 clear_rec_data(); //清除接收的字符
  56.                 SendString_Uart2("AT+CMGR=1\r\n");//發(fā)送讀取信息
  57.                 delay_ms(1);        
  58.                 if(S2BUF=='H') //信息有用信息的標(biāo)記為后面接有用信息
  59.                 {
  60.                         XinXi = rec_data[rec_num];//把有用的信號(hào)給變量XinXi               
  61.                 }
  62.                 clear_rec_data(); ////清除接收的字符
  63.                    SendString_Uart2("AT+CMGD=1\r\n");//刪除短信以防空間不足
  64.         }
  65. }
  66. /********************************************************************
  67. *函數(shù)名: void Send_Sing_Process(void)
  68. *函數(shù)功能:        發(fā)送手機(jī)信息進(jìn)程函數(shù)
  69. *輸入?yún)?shù):無
  70. *返回參數(shù):void
  71. *函數(shù)使用注意事項(xiàng):接收數(shù)據(jù)通過中斷完成
  72. *********************************************************************/
  73. void Send_Sing_Process(void)
  74. {
  75.          SendString_Uart2("AT+CSCS=\"GSM\"\r\n");
  76.     delay_s(1);//延時(shí)大約1秒
  77.     SendString_Uart2("AT+CMGF=1\r\n");
  78.     delay_s(1);//延時(shí)1秒
  79.         SendString_Uart2("AT+CSCA?\r\n");
  80.     delay_s(1);//延時(shí)1秒
  81.         SendString_Uart2("AT+CSMP=17,167,0,240\r\n");
  82.     delay_s(1);//延時(shí)1秒
  83.     SendString_Uart2("AT+CMGS=\"13557032914\"\r\n");//此處修改為對(duì)方的電話號(hào)
  84.     delay_s(1);//延時(shí)1秒
  85.     SendString_Uart2("HELLO");//修改短信內(nèi)容,短信內(nèi)容可為英文和數(shù)字
  86.     SendData_Uart2(0x1a);
  87.     delay_s(15);//延時(shí)15秒
  88. }
復(fù)制代碼

OTHER_FUNCTION.c
  1. /********************************************************************                                                                                                  *
  2. *文件名:OTHER_FUNCTION.c
  3. *文件描述:STC15串口外設(shè)函數(shù)
  4. *創(chuàng)建作者:龐登輝
  5. *創(chuàng)建日期:2015/11/28
  6. *創(chuàng)建版本號(hào):V1.0
  7. *******************************************************************/
  8. #include "OTHER_FUNCTION.h"
  9. uchar biaozhi = 0;
  10. /********************************************************************
  11. *函數(shù)名: void Other_Led(void)
  12. *函數(shù)功能:        手機(jī)控制其它燈的顏色
  13. *輸入?yún)?shù):無
  14. *返回參數(shù):void
  15. *函數(shù)使用注意事項(xiàng):初始化
  16. *********************************************************************/
  17. void Other_Led(void)
  18. {
  19.         if(biaozhi==1)
  20.         {
  21.                 if(SBUF=='A')//開臺(tái)燈
  22.                 {
  23.                         TDLed = 0;
  24.                 }
  25.                 if(SBUF=='C')//開浴室燈
  26.                 {
  27.                         YSLed = 0;
  28.                 }
  29.                 if(SBUF=='Z')//開臥室燈
  30.                 {
  31.                         WSLed = 0;
  32.                 }
  33.                 if(SBUF=='M')//開大廳燈
  34.                 {
  35.                         DTLed = 0;
  36.                 }
  37.                 if(SBUF=='F')//關(guān)臺(tái)燈
  38.                 {
  39.                         TDLed = 1;
  40.                 }
  41.                 if(SBUF=='G')//關(guān)浴室燈
  42.                 {
  43.                         YSLed = 1;
  44.                 }
  45.                 if(SBUF=='H')//關(guān)臥室燈
  46.                 {
  47.                         WSLed = 1;
  48.                 }
  49.                 if(SBUF=='N')//關(guān)大廳燈
  50.                 {
  51.                         DTLed = 1;
  52.                 }
  53.         }               
  54. }
  55. /********************************************************************
  56. *函數(shù)名: void Music_Out(void)
  57. *函數(shù)功能:        手機(jī)控制播放音樂函數(shù)
  58. *輸入?yún)?shù):無
  59. *返回參數(shù):void
  60. *函數(shù)使用注意事項(xiàng):初始化
  61. *********************************************************************/
  62. void Music_Out(void)
  63. {
  64.         if(biaozhi==1)
  65.         {
  66.                 if(SBUF=='B')
  67.                 {
  68.                         Uart_SendCMD(0x0d , 0 , 0x00) ;//播放
  69.                         delay_ms(100) ;//延時(shí)大概100MS
  70.                 }
  71.                 if(SBUF=='T')
  72.                 {
  73.                         Uart_SendCMD(0x0e , 0 , 0x00) ;//暫停
  74.                         delay_ms(100) ;//延時(shí)大概100MS        
  75.                 }
  76.                 if(SBUF=='S')
  77.                 {
  78.                         Uart_SendCMD(0x02 , 0 , 0x00) ;//上一曲
  79.                         delay_ms(100) ;//延時(shí)大概100MS
  80.                 }
  81.                 if(SBUF=='X')
  82.                 {
  83.                         Uart_SendCMD(0x01 , 0 , 0x00) ;//下一曲
  84.                         delay_ms(100) ;//延時(shí)大概100MS        
  85.                 }
  86.         }
  87. }
  88. /********************************************************************
  89. *函數(shù)名: void Music_Out(void)
  90. *函數(shù)功能:        手機(jī)控制播放音樂函數(shù)
  91. *輸入?yún)?shù):無
  92. *返回參數(shù):void
  93. *函數(shù)使用注意事項(xiàng):初始化
  94. *********************************************************************/
  95. void HongWai_BJ(void)
  96. {
  97.         if(HWBZ==0)
  98.         {
  99.                 while(!HWBZ);
  100.                 Send_Sing_Process();
  101.                 HWBZ = 1;
  102.         }
  103. }
  104. /********************************************************************
  105. *函數(shù)名: void Music_Out(void)
  106. *函數(shù)功能:        手機(jī)控制其它所有應(yīng)用進(jìn)程函數(shù)
  107. *輸入?yún)?shù):無
  108. *返回參數(shù):void
  109. *函數(shù)使用注意事項(xiàng):初始化
  110. *********************************************************************/
  111. void Other_All_Process(void)
  112. {
  113.         Music_Out(); //播放音樂
  114.         Other_Led(); //控制其他等
  115.         HongWai_BJ();//紅外報(bào)警,發(fā)短信給手機(jī)        
  116. }
復(fù)制代碼

STC15_UART.c
  1. /********************************************************************                                                                                                  *
  2. *文件名:STC15_UART.c
  3. *文件描述:STC15串口外設(shè)函數(shù)
  4. *創(chuàng)建作者:龐登輝
  5. *創(chuàng)建日期:2015/11/28
  6. *創(chuàng)建版本號(hào):V1.0
  7. *******************************************************************/
  8. #include "STC15_UART.h"
  9. #include "process.h"
  10. #define uint unsigned int
  11. #define uchar unsigned char
  12. static INT8U Send_buf[10] = {0} ;
  13. static INT8U Recv_buf[10] = {0} ;
  14. bit busy_uart1;

  15. #define S2_S0 0x01              //P_SW2.0               //中斷控制寄存器2
  16. bit busy_uart2;
  17. uchar  re[4]={0};
  18. uchar  rgb[3]={255,255,255};
  19. uchar count=1;//

  20. uchar rec_data[50] = {0};        //以下是GSM模塊返回?cái)?shù)據(jù)
  21. uchar rec_num=0;        //串口2收到數(shù)據(jù)的個(gè)數(shù)
  22.         

  23. /********************************************************************
  24. *函數(shù)名: void UART1_Init(void)
  25. *函數(shù)功能:        串口1初始化
  26. *輸入?yún)?shù):無
  27. *返回參數(shù):void
  28. *函數(shù)使用注意事項(xiàng):初始化
  29. *********************************************************************/
  30. void UART1_Init(void){

  31.     #if(PARITYBIT == NONE_PARITY)
  32.             SCON = 0x50;
  33.         #elif(PARITYBIT == ODD_PARITY) || (PARITYBIT == EVEN_PARITY) || (PARITYBIT == MARK_PARITY)
  34.             SCON = 0xda;
  35.         #elif(PARITYBIT == SPACE_PARITY)
  36.             SCON = 0xd2;
  37.     #endif
  38.         AUXR &= 0xFF;
  39.         AUXR |= 0x54;
  40.         TMOD = 0x00;
  41.         TL1 = (65536-(MAIN_Fosc/4/BAUD_UART1));
  42.         TH1 = (65536-(MAIN_Fosc/4/BAUD_UART1))>>8;

  43.         TR1 = 1;
  44.         ES = 1;
  45.         EA = 1;
  46. }
  47. /********************************************************************
  48. *函數(shù)名: void SendData_Uart1(uchar dat)
  49. *函數(shù)功能:        串口發(fā)送數(shù)據(jù)
  50. *輸入?yún)?shù):dat
  51. *返回參數(shù):void
  52. *函數(shù)使用注意事項(xiàng):?jiǎn)蝹(gè)數(shù)據(jù)
  53. *********************************************************************/
  54. void SendData_Uart1(uchar dat)
  55. {

  56.         while(busy_uart1);                 //等待之前數(shù)據(jù)發(fā)送完成
  57.         ACC = dat;        
  58.         
  59.         if (P)                      //根據(jù)P來設(shè)置校驗(yàn)位
  60.     {
  61.                 #if (PARITYBIT == ODD_PARITY)
  62.                        TB8 = 0;                //設(shè)置校驗(yàn)位為0
  63.                 #elif (PARITYBIT == EVEN_PARITY)
  64.                 TB8 = 1;                //設(shè)置校驗(yàn)位為1
  65.                 #endif
  66.             }
  67.             else
  68.             {
  69.                 #if (PARITYBIT == ODD_PARITY)
  70.                 TB8 = 1;                //設(shè)置校驗(yàn)位為1
  71.                 #elif (PARITYBIT == EVEN_PARITY)
  72.                 TB8 = 0;                //設(shè)置校驗(yàn)位為0
  73.                 #endif                         //計(jì)算偶校檢位 P
  74.          }
  75.         busy_uart1 = 1;                          //忙標(biāo)志位置 1
  76.         SBUF = ACC;                                  //發(fā)送數(shù)據(jù)到串口緩沖區(qū)
  77. }

  78. /********************************************************************
  79. *函數(shù)名: void Uart_Isr()interrupt 4
  80. *函數(shù)功能:        串口中斷服務(wù)函數(shù)
  81. *輸入?yún)?shù):無
  82. *返回參數(shù):void
  83. *函數(shù)使用注意事項(xiàng):接收數(shù)據(jù)通過中斷完成
  84. *********************************************************************/
  85. void Uart_Isr()interrupt 4 using 1
  86. {
  87.         if(RI)
  88.         {
  89.                 RI = 0;                                //清除接收中斷標(biāo)志
  90.         }
  91.         if(TI)
  92.         {
  93.                 TI = 0;                           //清除傳輸中斷標(biāo)志
  94.                 busy_uart1 = 0;           //清除傳輸忙標(biāo)志
  95.                 if(count==1&&(SBUF=='a'||SBUF=='b'||SBUF=='c'))//藍(lán)牙發(fā)送字符判斷RGB的標(biāo)志
  96.                 {
  97.                         re[count] = SBUF;
  98.                 }
  99.                 else
  100.                 {
  101.                         if(SBUF == 'd') //發(fā)送有效數(shù)據(jù)完畢標(biāo)志
  102.                         {
  103.                                 count = 0;        
  104.                         }
  105.                         else
  106.                         {
  107.                                 re[2] = SBUF;  //用來接收有用的數(shù)據(jù)
  108.                                 if(re[1]=='a') //字符為a就給rgb[0]發(fā)送數(shù)據(jù)(rgb[0]為紅色的PWM)
  109.                                 {
  110.                                         rgb[0] = re[2];
  111.                                 }
  112.                                 if(re[1]=='b') //字符為a就給rgb[1]發(fā)送數(shù)據(jù)(rgb[1]為綠色的PWM)
  113.                                 {
  114.                                         rgb[1] = re[2];
  115.                                 }
  116.                                 if(re[1]=='c')        //字符為a就給rgb[2]發(fā)送數(shù)據(jù)(rgb[2]為藍(lán)色的PWM)
  117.                                 {
  118.                                         rgb[2] = re[2];
  119.                                 }
  120.                         }
  121.                 }
  122.                 count++;        
  123.         }
  124. }


  125. /********************************************************************
  126. *函數(shù)名: void UART2_Init(void)
  127. *函數(shù)功能:        串口2初始化
  128. *輸入?yún)?shù):無
  129. *返回參數(shù):void
  130. *函數(shù)使用注意事項(xiàng):初始化
  131. *********************************************************************/
  132. void UART2_Init(void) //初始化串口2
  133. {

  134. //    P_SW2 &= ~S2_S0;            //S2_S0=0 (P1.0/RxD2, P1.1/TxD2)
  135.           P_SW2 |= S2_S0;                //S2_S0=1 (P4.6/RxD2_2, P4.7/TxD2_2)
  136.                                                    

  137. #if (PARITYBIT == NONE_PARITY)
  138.     S2CON = 0x50;               //8位可變波特率
  139. #elif (PARITYBIT == ODD_PARITY) || (PARITYBIT == EVEN_PARITY) || (PARITYBIT == MARK_PARITY)
  140.     S2CON = 0xda;               //9位可變波特率,校驗(yàn)位初始為1
  141. #elif (PARITYBIT == SPACE_PARITY)
  142.     S2CON = 0xd2;               //9位可變波特率,校驗(yàn)位初始為0
  143. #endif

  144.     T2L = (65536 - (MAIN_Fosc/4/BAUD_UART2));   //設(shè)置波特率重裝值
  145.     T2H = (65536 - (MAIN_Fosc/4/BAUD_UART2))>>8;
  146.         AUXR &= 0xFF;
  147.         AUXR |= 0x14;               //T2為1T模式, 并啟動(dòng)定時(shí)器2
  148.     IE2 = 0x01;                 //使能串口2中斷
  149.     EA = 1;
  150. }

  151. /*----------------------------
  152. UART2 中斷服務(wù)程序
  153. -----------------------------*/
  154. void Uart2() interrupt 8 using 1
  155. {  
  156.         uchar temp;
  157.     if (S2CON & S2RI)
  158.     {
  159.         S2CON &= ~S2RI;         //清除S2RI位
  160.                 /*接收短信*/
  161.                 temp = S2BUF;
  162.                 rec_data[rec_num++]=temp;
  163.                 if(rec_num>=50)
  164.                 rec_num=0;        
  165.     }
  166.     if (S2CON & S2TI)
  167.     {
  168.         S2CON &= ~S2TI;         //清除S2TI位
  169.         busy_uart2 = 0;               //清忙標(biāo)志
  170.     }
  171. }

  172. /*----------------------------
  173. 發(fā)送串口2數(shù)據(jù)
  174. ----------------------------*/
  175. void SendData_Uart2(BYTE dat)
  176. {
  177.     while (busy_uart2);               //等待前面的數(shù)據(jù)發(fā)送完成
  178.     ACC = dat;                  //獲取校驗(yàn)位P (PSW.0)
  179.     if (P)                      //根據(jù)P來設(shè)置校驗(yàn)位
  180.     {
  181. #if (PARITYBIT == ODD_PARITY)
  182.         S2CON &= ~S2TB8;        //設(shè)置校驗(yàn)位為0
  183. #elif (PARITYBIT == EVEN_PARITY)
  184.         S2CON |= S2TB8;         //設(shè)置校驗(yàn)位為1
  185. #endif
  186.     }
  187.     else
  188.     {
  189. #if (PARITYBIT == ODD_PARITY)
  190.         S2CON |= S2TB8;         //設(shè)置校驗(yàn)位為1
  191. #elif (PARITYBIT == EVEN_PARITY)
  192.         S2CON &= ~S2TB8;        //設(shè)置校驗(yàn)位為0
  193. #endif
  194.     }
  195.     busy_uart2 = 1;
  196.     S2BUF = ACC;                //寫數(shù)據(jù)到UART2數(shù)據(jù)寄存器
  197. }
  198. /********************************************************************
  199. *函數(shù)名: void SendString_Uart1(char *s)
  200. *函數(shù)功能:        發(fā)送字符串函數(shù)
  201. *輸入?yún)?shù):無
  202. *返回參數(shù):void
  203. *函數(shù)使用注意事項(xiàng):
  204. *********************************************************************/
  205. void SendString_Uart2(char *s)
  206. {
  207.         while(*s)
  208.         {
  209.                 SendData_Uart2(*s++);        
  210.         }
  211. }
  212. /*****************************************************************************************************
  213. - 功能描述: 串口發(fā)送一幀數(shù)據(jù)(MP3播放音樂(串口方式(用串口1)))
  214. - 隸屬模塊: 內(nèi)部
  215. - 參數(shù)說明:
  216. - 返回說明:
  217. - 注:無     
  218. *****************************************************************************************************/
  219. void SendCmd(INT8U len)
  220. {
  221.     INT8U i = 0 ;
  222.         delay_us(100);
  223.     SendData_Uart1(0x7E); //起始
  224.     for(i=0; i<len; i++)//數(shù)據(jù)
  225.     {
  226.                 SendData_Uart1(Send_buf[i]) ;
  227.                 delay_us(100);
  228.     }
  229.     SendData_Uart1(0xEF) ;//結(jié)束
  230.         delay_us(100);
  231. }
  232. /********************************************************************************************
  233. - 功能描述:求和校驗(yàn)
  234. - 隸屬模塊:
  235. - 參數(shù)說明:
  236. - 返回說明:
  237. - 注:      和校驗(yàn)的思路如下
  238.              發(fā)送的指令,去掉起始和結(jié)束。將中間的6個(gè)字節(jié)進(jìn)行累加,最后取反碼
  239.              接收端就將接收到的一幀數(shù)據(jù),去掉起始和結(jié)束。將中間的數(shù)據(jù)累加,再加上接收到的校驗(yàn)
  240.              字節(jié)。剛好為0.這樣就代表接收到的數(shù)據(jù)完全正確。
  241. ********************************************************************************************/
  242. void DoSum( INT8U *Str, INT8U len)
  243. {
  244.     INT16U xorsum = 0;
  245.     INT8U i;

  246.     for(i=0; i<len; i++)
  247.     {
  248.         xorsum  = xorsum + Str[i];
  249.     }
  250.         xorsum     = 0 -xorsum;
  251.         *(Str+i)   = (INT8U)(xorsum >>8);
  252.         *(Str+i+1) = (INT8U)(xorsum & 0x00ff);
  253. }


  254. /********************************************************************************************
  255. - 功能描述: 串口向外發(fā)送命令[包括控制和查詢]
  256. - 隸屬模塊: 外部
  257. - 參數(shù)說明: CMD:表示控制指令,請(qǐng)查閱指令表,還包括查詢的相關(guān)指令
  258.               feedback:是否需要應(yīng)答[0:不需要應(yīng)答,1:需要應(yīng)答]
  259.               data:傳送的參數(shù)
  260. - 返回說明:
  261. - 注:      
  262. ********************************************************************************************/
  263. void Uart_SendCMD(INT8U CMD ,INT8U feedback , INT16U dat)
  264. {
  265.     Send_buf[0] = 0xff;    //保留字節(jié)
  266.     Send_buf[1] = 0x06;    //長(zhǎng)度
  267.     Send_buf[2] = CMD;     //控制指令
  268.     Send_buf[3] = feedback;//是否需要反饋
  269.     Send_buf[4] = (INT8U)(dat >> 8);//datah
  270.     Send_buf[5] = (INT8U)(dat);     //datal
  271.     DoSum(&Send_buf[0],6);        //校驗(yàn)
  272.     SendCmd(8);       //發(fā)送此幀數(shù)據(jù)
  273. }

復(fù)制代碼



作者: 騰飛的龍    時(shí)間: 2016-1-11 11:30
樓主沒有說明怎么用手機(jī)控制啊
作者: admin    時(shí)間: 2016-1-11 19:06
應(yīng)該只需要考慮藍(lán)牙轉(zhuǎn)串口和串口轉(zhuǎn)藍(lán)牙,其實(shí)就是串口通信 樓主用的是哪個(gè)藍(lán)牙軟件? 通過分析代碼應(yīng)該能找到控制指令
作者: 18200877897    時(shí)間: 2016-1-12 17:00
有沒有APP軟件

作者: pdh    時(shí)間: 2016-1-13 12:31
APP軟件是有的,我還沒時(shí)間上傳。
作者: pdh    時(shí)間: 2016-1-13 12:34
admin 發(fā)表于 2016-1-11 19:06
應(yīng)該只需要考慮藍(lán)牙轉(zhuǎn)串口和串口轉(zhuǎn)藍(lán)牙,其實(shí)就是串口通信 樓主用的是哪個(gè)藍(lán)牙軟件? 通過分析代碼應(yīng)該能找 ...

對(duì)的,藍(lán)牙的話,你只要通過串口,寫AT指令,設(shè)置一下就好了,這個(gè)完全是串口透?jìng)鞯模珺C04藍(lán)牙模塊
作者: pdh    時(shí)間: 2016-1-13 15:11
騰飛的龍 發(fā)表于 2016-1-11 11:30
樓主沒有說明怎么用手機(jī)控制啊

他不給上傳APP
作者: pdh    時(shí)間: 2016-1-13 15:12
18200877897 發(fā)表于 2016-1-12 17:00
有沒有APP軟件

這里不給上傳
作者: shijunxing    時(shí)間: 2016-2-18 11:11
樓主可以加下QQ嗎   畢設(shè)做這個(gè)方面的
作者: pdh    時(shí)間: 2016-2-21 18:47
1006846402
作者: xiaomage    時(shí)間: 2016-2-21 22:15
樓主來些圖片、視頻好
作者: kevintang    時(shí)間: 2016-2-27 14:50
藍(lán)牙app傳一下。
作者: pdh    時(shí)間: 2016-3-5 17:09
kevintang 發(fā)表于 2016-2-27 14:50
藍(lán)牙app傳一下。

這里不給傳
作者: zcadqe897    時(shí)間: 2016-3-17 15:07
藍(lán)牙app來一個(gè),謝謝
郵箱822189409@qq.com
作者: shuma520    時(shí)間: 2016-3-17 19:39
想Diy一個(gè)玩玩,藍(lán)牙app,謝謝

郵箱119548604@qq.com
作者: lyseg01    時(shí)間: 2016-3-18 20:12
謝謝分享。!
作者: freezrz    時(shí)間: 2016-4-1 20:57
終于找到可以借鑒一下的了,樓主來一份藍(lán)牙app吧。
798018847@qq.com
拜謝
作者: admin    時(shí)間: 2016-4-12 17:32
pdh 發(fā)表于 2016-3-5 17:09
這里不給傳

樓主 用winrar壓縮一下 就可以上傳了
作者: gemxie    時(shí)間: 2016-4-12 21:50
感覺不錯(cuò)的樣子喂、、
作者: borwell    時(shí)間: 2016-4-13 08:34
pdh 發(fā)表于 2016-3-5 17:09
這里不給傳

麻煩傳一個(gè)APP來看看   謝謝   22035969@qq.com
作者: 1678    時(shí)間: 2016-4-13 15:56
樓主app咋寫啊
作者: 義飛沖天    時(shí)間: 2016-4-14 19:24
樓主能把APP和51程序發(fā)一下嗎?謝謝了429531435@qq.com

作者: meilidianzhi    時(shí)間: 2016-4-20 16:31
謝謝樓主的共享
作者: 252622979    時(shí)間: 2016-4-26 13:55
樓主能把APP和51i源碼程序發(fā)一下嗎?謝謝了252622979@qq.com
作者: yaner    時(shí)間: 2016-4-28 09:57
樓主能把APP和51i源碼程序發(fā)一下嗎?謝謝了       2685339043@qq.com
作者: lori668    時(shí)間: 2016-5-16 16:44
看著不錯(cuò)的,呵呵
作者: purple唯愛紫    時(shí)間: 2016-5-21 08:16
樓主能把APP和51i源碼程序發(fā)一下嗎?謝謝了       27834853@qq.com
作者: sjl    時(shí)間: 2016-5-23 22:46
1981998044@qq.com 麻煩發(fā)份你這個(gè)資料給我看看行不行
作者: sjl    時(shí)間: 2016-5-23 22:48
樓主能不能發(fā)份資料給我看看一下,郵箱1981998044@qq.com
作者: sjl    時(shí)間: 2016-5-23 22:49
樓主發(fā)份資料給我呀!1981998044@qq.com
作者: 5314039    時(shí)間: 2016-6-17 08:55
樓主能把APP和51i源碼程序發(fā)一下嗎?謝謝了814677798@qq.com
作者: 偉民電子    時(shí)間: 2016-6-24 22:27
你啥意思!要鈔票直接說,
作者: 460864915    時(shí)間: 2016-7-1 06:40
樓主厲害,下下來學(xué)習(xí)一下,剛開始學(xué)習(xí),希望能看懂!
作者: jerrytks110    時(shí)間: 2016-7-23 14:45
樓主 發(fā)我郵箱一份資料吧!謝謝   我的郵箱2089606443@qq.com    APP和51i源碼程序發(fā)一下好吧。  謝謝
作者: chjx0131    時(shí)間: 2016-7-25 17:37
扣了五個(gè)幣呀。
作者: 飛刀問情    時(shí)間: 2016-11-9 22:28
樓主厲害,下下來學(xué)習(xí)一下,剛開始學(xué)習(xí),希望能看懂!
作者: blj178    時(shí)間: 2016-11-21 15:54
想Diy一個(gè)玩玩,藍(lán)牙app,謝謝

郵箱blj178@163.com
作者: 莫笑清云    時(shí)間: 2016-11-24 00:34
謝謝樓主,能不能發(fā)一份給我呀!
郵箱:jasonchany@126.com
感謝~
作者: mengzhengjie    時(shí)間: 2016-12-5 09:04
謝謝樓主分享
作者: asdfghjkl    時(shí)間: 2017-1-16 23:14
樓主 發(fā)我郵箱一份資料吧!謝謝   我的郵箱995146638@qq.com    APP和51i源碼程序發(fā)一下好吧。  謝謝
作者: wilin    時(shí)間: 2017-2-8 17:00
樓主 你好  能發(fā)給我APP控制 軟件嗎  我是新手  向多多向你學(xué)習(xí)  876792500@qq.com  謝謝!
作者: shawengang    時(shí)間: 2017-2-10 06:37
你好,可以發(fā)給我一個(gè)嗎,謝謝。15302075489@163.com
作者: 館長(zhǎng)    時(shí)間: 2017-2-20 21:45
樓主有原理圖嗎
作者: peiy    時(shí)間: 2017-3-4 13:42
太給力了
作者: 隔壁老謝    時(shí)間: 2017-3-5 00:07
app怎么開發(fā)出來的,厲害啊
作者: tyler1977    時(shí)間: 2017-3-16 16:19
樓主辛苦了,能發(fā)個(gè)APP給我嗎?謝謝!28651174@qq.com
作者: WSY_    時(shí)間: 2017-3-28 12:13

 剛好畢設(shè)做有關(guān)內(nèi)容,希望樓主能發(fā)我郵箱一份資料,郵箱603882943@qq.com,感恩,比心!

作者: w461954660    時(shí)間: 2017-3-28 22:03
謝謝分享真好需要這份東西
作者: 小小de手心    時(shí)間: 2017-4-3 23:57
謝謝樓主  幫了我這個(gè)新人很大的忙
作者: 南喬曦沫    時(shí)間: 2017-4-4 00:15
手機(jī)app藍(lán)牙可以控制簡(jiǎn)易電子琴按鍵?或者流水燈的模式嗎
作者: eee123    時(shí)間: 2017-4-6 13:28
受教了
作者: 莫奈丶    時(shí)間: 2017-4-9 19:46
貌似挺好的  下載好看看 謝謝樓主了
作者: yanguify    時(shí)間: 2017-4-17 11:37
樓主,我是小白,最近想做這個(gè),可以發(fā)一份給我學(xué)習(xí)一下嗎?
我的郵箱是461023393@qq.com
萬分感謝!!
作者: dengweishun123    時(shí)間: 2017-4-23 13:32
樓主能把APP和51i源碼程序發(fā)一下嗎?謝謝了      1351518162@qq.com
作者: 晨晨晨~    時(shí)間: 2017-5-4 20:14
有沒有手機(jī)端的藍(lán)牙協(xié)議
作者: linqiunan    時(shí)間: 2017-5-8 09:33
大神資源可以分享一下嗎  593602397@qq.com
作者: linqiunan    時(shí)間: 2017-5-11 17:22
樓主 可以分享一下嗎   我最近在做這個(gè)畢業(yè)設(shè)計(jì)   593602397@qq.com
作者: cqw    時(shí)間: 2017-5-11 22:46
大神,app可以發(fā)一個(gè)嗎?1207129241@qq.com
作者: cjjcjj1    時(shí)間: 2017-6-3 22:21
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
作者: lxa0    時(shí)間: 2017-8-13 02:13
只想要app
樓主打包上傳呀
作者: 991015847    時(shí)間: 2017-8-27 10:41
文件打不開,該下載什么軟件呢?
作者: 劉碩碩    時(shí)間: 2017-9-5 23:58
樓主能發(fā)一份51源程序和APPA嗎 想學(xué)習(xí)一下 謝謝  741266201@qq.com
作者: 0o平平凡凡o0    時(shí)間: 2017-10-11 15:34
新手,正在學(xué)習(xí),下來看看,謝樓主
作者: cmthink    時(shí)間: 2017-10-12 08:36
感謝分享
作者: 有只螃蟹lgh    時(shí)間: 2017-10-12 21:56
可以發(fā)一下資料給我嗎?912995665@qq.com非常感謝。
作者: 有只螃蟹lgh    時(shí)間: 2017-10-12 22:17
zcadqe897 發(fā)表于 2016-3-17 15:07
**** 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽 ****

可以發(fā)一下資料給我嗎,我剛進(jìn)來沒有黑幣
作者: xymiss    時(shí)間: 2017-10-22 15:14
壓縮包可以上傳的,希望放一下
作者: luojunhaolq    時(shí)間: 2017-11-20 10:14
支持。!
作者: 隔壁老王/ing    時(shí)間: 2017-11-27 15:45
太厲害了,請(qǐng)接受我的膜拜
作者: 隔壁老王/ing    時(shí)間: 2017-11-27 15:47
大神啊,那怎么轉(zhuǎn)化成手機(jī)APP軟件并可以使用呢
作者: 何必歇斯底里    時(shí)間: 2018-1-8 19:43
好東西
作者: 一禪    時(shí)間: 2018-4-7 16:23
謝謝樓主
作者: xpf2009403    時(shí)間: 2018-4-8 11:34
厲害,樓主很不錯(cuò)
作者: 蜀山劍哥    時(shí)間: 2018-6-13 17:02

樓主能把APP和51i源碼程序發(fā)一下嗎?謝謝了314165299@qq.com

作者: 邵邵    時(shí)間: 2018-10-15 11:53
815947442@qq.com,麻煩樓主分享一下APP和51源碼
作者: YanbinTee    時(shí)間: 2018-11-13 17:39
先謝樓主分享
作者: 民盛    時(shí)間: 2018-12-13 16:38
樓主大神發(fā)下資料,不勝感謝。minshengwx@163.com
作者: papadainifei    時(shí)間: 2018-12-17 18:39
樓主,請(qǐng)問有沒有 app 能發(fā)下嗎 875953727@qq.com
作者: aaa85338477    時(shí)間: 2018-12-18 22:11
真的厲害呀!。。。。。。。。。。。。。。。!
作者: dhii1234    時(shí)間: 2019-1-21 23:41
謝謝分享!
作者: 夢(mèng)園心田    時(shí)間: 2019-1-22 00:40
不知道底層能不能用,能用我做個(gè)配套
作者: pengyongnet    時(shí)間: 2019-1-22 14:18
提供下原理圖
作者: eason1997    時(shí)間: 2019-3-15 10:47
謝謝分享
作者: mcxiangxin    時(shí)間: 2019-3-15 13:11
我需要找人開發(fā)藍(lán)牙控制器,能報(bào)個(gè)價(jià)不?請(qǐng)加我微信18675508086
作者: lin20009    時(shí)間: 2019-12-1 17:47
支持 ,好貼
作者: dick9999    時(shí)間: 2020-2-6 21:23
好辦法,下載下來看看
作者: kevintang    時(shí)間: 2020-3-3 23:36
看著不錯(cuò)的
作者: aking991    時(shí)間: 2020-9-15 09:09
頂一下,雖然在這沒有藍(lán)牙APP,但這難不倒我,有公共可用的藍(lán)牙APP用,這個(gè)程序就是純串口通訊模式,藍(lán)牙只是作個(gè)無線橋接方便而已,其實(shí)大家把它接一下無線的串口模塊也是可以用的,對(duì)不對(duì)
作者: rsx9583    時(shí)間: 2020-9-18 10:40
樓主的代碼很干凈整齊!贊一個(gè)!
作者: jawin    時(shí)間: 2021-1-25 23:01
謝謝分享!樓主有APP嗎
作者: aide51    時(shí)間: 2021-2-23 20:09
收藏下,有時(shí)間制作一個(gè)玩玩




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1