找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8582|回復(fù): 13
打印 上一主題 下一主題
收起左側(cè)

STM32 hc-08藍(lán)牙模塊驅(qū)動代碼(雛形物聯(lián)網(wǎng))

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:438796 發(fā)表于 2019-3-8 10:04 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
用stm32f103c8t6單片機(jī)和hc-08藍(lán)牙模塊實現(xiàn)一個雛形物聯(lián)網(wǎng)功能新手剛接觸,程序?qū)懙牟缓玫牡胤秸堉附,勿噴,謝謝

手機(jī)連接是hc-08藍(lán)牙模塊后,輸入初始密碼,正確后單片機(jī)通過串口給手機(jī)發(fā)一個密碼正確,然后你可以在手機(jī)上發(fā)送開燈,單片機(jī)上的LED燈亮,手機(jī)顯示LED亮...也可以在手機(jī)上,輸入更改密碼,單片機(jī)發(fā)送先輸入初始密碼,正確后輸入新密碼,然后密碼修改成功。
因為這個中文顯示亂碼,我不知道怎么解決,所以放2張截屏圖片。 藍(lán)牙控?zé)?rar (313.54 KB, 下載次數(shù): 131)
  1. //////////////////////////////////////////////////////////////////////////////////         
  2. //本程序只供學(xué)習(xí)使用,未經(jīng)作者許可,不得用于其它任何用途
  3. //版權(quán)所有,盜版必究。
  4. //
  5. //                                                                  
  6. //////////////////////////////////////////////////////////////////////////////////  

  7. #include "stm32f10x.h"
  8. //#include "led.h"
  9. //#include "key.h"
  10. //#include "usart.h"
  11. //#include "timer.h"
  12. #include "bluetooth.h"


  13. int main(void)
  14. {
  15.          //char ch;
  16.                 /*獲取數(shù)據(jù)*/                                
  17.                 LED_Init();
  18.         //        USART1_Initialise(9600);
  19.           USART_Config1();
  20.                  TIM3_Int_Init(999,71);
  21.                 printf("請輸入密碼\r\n如果修改密碼請輸入    更改密碼\r\n");
  22.                 //USART1_SendStr( USART1,"這是一個哈哈哈實驗\n");
  23.                 while(1)
  24.                 {               
  25.                         pd();
  26.                         jg();
  27.                         quit();
  28.                 }
  29. }
復(fù)制代碼

  1. #include "bluetooth.h"        
  2. //////////////////////////////////////////////////////////////////////////////////         
  3. //本程序只供學(xué)習(xí)使用,未經(jīng)作者許可,不得用于其它任何用途
  4. //修改日期:2019.1.1
  5. //版權(quán)所有,盜版必究。
  6. //
  7. //                                                                  
  8. //////////////////////////////////////////////////////////////////////////////////  

  9. uint16_t j;
  10. u8 BackData[255];
  11. char hh[]="哈哈";
  12. u8 count;
  13. u8 TIME3_ON;
  14. u8 i,passwordPIN_flag=0,ok=0,correct_flag1=0;
  15. char dengl[]="開燈";
  16. char dengm[]="關(guān)燈";
  17. char baoj[]="報警";
  18. char guanb[]="關(guān)閉";
  19. char out[]="退出";
  20. u8 out_flag=0;
  21. char mima[]="更改密碼";
  22. char old_mima[6]="888888";
  23. char* read_data;        
  24. void clean_rebuff(void)
  25. {
  26.         while(i)
  27.         BackData[--i] = 0;
  28. }

  29. void Change_password()
  30. {
  31.         if(strstr(read_data,mima) != 0)                                
  32.                         {
  33.                                 passwordPIN_flag=1;
  34.                                 printf("請輸入舊密碼\r\n");
  35.                                 ok=0;
  36.                         }
  37.                         if(passwordPIN_flag==1)
  38.                         {
  39.                                 if(ok==1)
  40.                                 {
  41.                                         if((BackData[0]==old_mima[0])&&(BackData[1]==old_mima[1])&&(BackData[2]==old_mima[2])&&(BackData[3]==old_mima[3])&&(BackData[4]==old_mima[4])&&(BackData[5]==old_mima[5]))                        
  42.                                         {
  43.                                                 printf("請輸入新密碼\r\n");
  44.                                                 passwordPIN_flag = 2;
  45.                                                 clean_rebuff();        
  46.                                                 ok=0;                                       
  47.                                         }
  48.                                         else
  49.                                         {
  50.                                                 passwordPIN_flag=1;
  51.                                                 printf("密碼錯誤           \r\n");
  52.                                         }
  53.                                 }
  54.                         }
  55.                         if(passwordPIN_flag==2)
  56.                         {
  57.                                 if(ok==1)
  58.                                 {
  59.                                         old_mima[0]=BackData[0];
  60.                                         old_mima[1]=BackData[1];
  61.                                         old_mima[2]=BackData[3];
  62.                                         old_mima[3]=BackData[3];
  63.                                         old_mima[4]=BackData[5];
  64.                                         old_mima[5]=BackData[5];
  65.                                         printf("密碼修改成功\r\n");                                
  66.                                         printf("新密碼為%s\r\n ", old_mima);
  67.                                         printf("請輸入密碼  \r\n");                        
  68.                                         ok=0;
  69.                                         passwordPIN_flag=0;
  70.                                 }
  71.                         }        
  72. }
  73. void Input_password()
  74. {
  75.                 if(passwordPIN_flag==0)
  76.                         {
  77.                                 if(ok==1)
  78.                                 {                        
  79.                                         if((BackData[0]==old_mima[0])&&(BackData[1]==old_mima[1])&&(BackData[2]==old_mima[2])&&(BackData[3]==old_mima[3])&&(BackData[4]==old_mima[4])&&(BackData[5]==old_mima[5]))                                
  80.                                         {                                       
  81.                                                 correct_flag1 =1;
  82.                                                 printf("密碼正確  \r\n可輸入  開燈  關(guān)燈  報警  關(guān)閉報警\r\n或者退出\r\n ");
  83.                                                 ok=0;
  84.                                                 passwordPIN_flag=3;
  85.                                 }
  86.                                         else
  87.                                         {
  88.                                                 passwordPIN_flag=0;
  89.                                                 printf("密碼錯誤           \r\n");
  90.                                                 out_flag=0;
  91.                                         }
  92.                                        
  93.                                 }        
  94.                         }
  95. }
  96. void quit()
  97. {
  98.         if(strstr(read_data,out) != 0)                                
  99.         {
  100.                 correct_flag1=0;
  101.                 out_flag=1;               
  102.                 passwordPIN_flag=0;
  103.                 printf("您已成功退出      \r\n");        
  104.                 printf("請輸入密碼      \r\n");
  105.                 ok=0;        
  106.                 Input_password();               
  107.         }
  108. }
  109. void pd()
  110. {

  111.         if(count > 5)
  112.                 {
  113.                         Change_password();
  114.                         Input_password();
  115.                         count = 0;
  116.                         TIME3_ON = 0;
  117.                         clean_rebuff();                        
  118.                 }               
  119. }

  120. void choice()
  121. {
  122.         //u8 sum;
  123.         if(correct_flag1 == 1)
  124.         {
  125.                 if(strstr(read_data,dengl) != 0)                                
  126.                 {
  127.                         LED0=0;
  128.                         printf("led亮                    \r\n");               
  129.                 }
  130.                 if(strstr(read_data,dengm) != 0)                                
  131.                 {
  132.                         LED0=1;
  133.                         printf("led滅                    \r\n");
  134.                 }
  135.                 if(strstr(read_data,baoj) != 0)                                
  136.                 {
  137.                         
  138.                         bee=1;
  139.                         //GPIO_SetBits(GPIOB,GPIO_Pin_9);
  140.                         printf("以報警                    \r\n");
  141.                 }
  142.                 if(strstr(read_data,guanb) != 0)                                
  143.                 {
  144.                         bee=0;
  145.                         printf("以關(guān)閉報警               \r\n");
  146.                 }
  147.         }
  148. }
  149. void jg()
  150. {
  151.                 if(correct_flag1==1)
  152.                 {        
  153.                         choice();
  154.                 }
  155. }
  156. void USART2_IRQHandler(void)
  157. {
  158.         if(USART_GetITStatus(DEBUG_USARTx2, USART_IT_RXNE) != RESET)//判斷讀寄存器是否非空
  159.         {               
  160.                         TIME3_ON = 1;
  161.                         ok=1;
  162.                         BackData[i] = USART_ReceiveData(DEBUG_USARTx2);
  163.                         i++;
  164.                         read_data = (char *) & BackData;
  165.                         count = 0;        
  166.         }
  167. }
復(fù)制代碼



U{[N@HYO`%N}S~F`B1X]ZG6.png (84.91 KB, 下載次數(shù): 61)

U{[N@HYO`%N}S~F`B1X]ZG6.png

S(A3$NW]RZINOU)Q%EX2B0Q.png (84.86 KB, 下載次數(shù): 150)

S(A3$NW]RZINOU)Q%EX2B0Q.png

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂3 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:46381 發(fā)表于 2019-3-14 17:40 | 只看該作者
好東西,謝謝分享!下來參考一下
回復(fù)

使用道具 舉報

板凳
ID:116773 發(fā)表于 2019-3-14 19:47 | 只看該作者
感興趣,下載看看,謝謝樓主。
回復(fù)

使用道具 舉報

地板
ID:116773 發(fā)表于 2019-3-14 19:51 | 只看該作者
這個.7z文件如何打開呀?
回復(fù)

使用道具 舉報

5#
ID:480686 發(fā)表于 2019-3-14 19:59 | 只看該作者
請問物聯(lián)網(wǎng)還是單片機(jī)好
回復(fù)

使用道具 舉報

6#
ID:438796 發(fā)表于 2019-3-15 09:54 來自手機(jī) | 只看該作者
打不開嗎,我下載試試
回復(fù)

使用道具 舉報

7#
ID:438796 發(fā)表于 2019-3-15 10:12 | 只看該作者
hujj 發(fā)表于 2019-3-14 19:51
這個.7z文件如何打開呀?

可能我之前這個文件有問題,我更新了一下,現(xiàn)在可以了,不好意思,要不加我QQ,我重新發(fā)你一份
回復(fù)

使用道具 舉報

8#
ID:571290 發(fā)表于 2019-6-24 23:43 | 只看該作者
請問樓主是用什么手機(jī)APP域藍(lán)牙進(jìn)行通訊的?
回復(fù)

使用道具 舉報

9#
ID:667765 發(fā)表于 2019-12-18 21:15 | 只看該作者
請問樓主這個接線是怎么連得
回復(fù)

使用道具 舉報

10#
ID:555216 發(fā)表于 2020-3-21 17:43 | 只看該作者
非常感謝分享
回復(fù)

使用道具 舉報

11#
ID:642517 發(fā)表于 2020-5-25 17:19 | 只看該作者
謝謝樓主的資料,正愁找不到資料學(xué)習(xí)呢
回復(fù)

使用道具 舉報

12#
ID:229641 發(fā)表于 2022-2-11 23:59 來自手機(jī) | 只看該作者
藍(lán)牙APP是啥玩意兒?
回復(fù)

使用道具 舉報

13#
ID:140100 發(fā)表于 2022-3-15 18:39 | 只看該作者
可否搞個原理圖圖呀
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表