久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7333|回復: 0
打印 上一主題 下一主題
收起左側

藍牙HC-08使用方法及出錯原因解決方法 附源程序+資料

[復制鏈接]
跳轉到指定樓層
樓主
         本文主要介紹在使用匯承4.0藍牙BLE串口助手HC-COM,通過手機向藍牙模塊發送數據、或者通過手機向與藍牙模塊連接的單片機發送指令時,串口中斷函數的編寫方法及出錯的原因和改正方法
   我們怎么把指令發送出去,以及單片機是如何實現接收的呢?,這就要通過串口中斷來實現了,大多數單片機的串口例程或者匯承給的資料包里的例程都會給出類似下面給的一個串口中斷的參考代碼,但是它是有問題的,對于HC-COM來說,是不能正常工作

         void Com_Int(void) interrupt 4
{

  uchar receive_data;
        
  EA = 0;
        
  if(RI == 1) //當硬件接收到一個數據時,RI會置位
        {                 
                RI = 0;
                receive_data = SBUF;//接收到的數據
                        
                if(receive_data == '1')         
                {
                                LED =0;//接收到1亮燈
                }
                else
                {
                                LED =1; //其他情況燈滅
                }
               
        }
          SBUF=receive_data;//將接收到的數據放入到發送寄存器
          while(!TI);                         //等待發送數據完成
          TI=0;                                                 //清除發送完成標志位               
                EA = 1;
}

按照上面的代碼,當我們利用手機上的app HC-COM向單片機發送1的的時候,接收的數據receive_data=1,此時呢LED應該等于0,也就是LED會被點亮,但是實際上它只會閃一下,這就說明,我們通過HC-COM發送1的時候,單片機先接收到我們發的1,之后又接收到其他的信息,在上面的程序中,我們讓單片機把接收到的信息又通過藍牙模塊發送給手機,利用HC-COM進行顯示

乍一看,我們發送1的時候,只返回了一個1 ,發送0的時候,只返回了一個0,那單片機接收的其他信息是從何而來的呢?,為啥手機沒有顯示返回的其他信息呢?對此我進行了大量的實驗,最終發現這個app,它一次發送實際上是發送20位,什么意思呢? 當我們輸入一個1點擊發送的時候,它實際上發送的是1000 0000 0000 0000 0000,也就是說當我們輸入的數據的位數不足20位時它會自動補零,這就解釋了為什么LED燈不會常亮,只會閃一下,因為在接收完我們發送的1后,它又接收了19個0,把這20個數據返回我們手機上的時候,它這個app把它補得這19個0又以空格的格式進行顯示,而不是顯示0(有點坑)。

為了讓LED常亮,我們需要輸入20個1,如上圖所示,也就是不給它補零的機會。這種方法呢用起來十分的不方便,可能個別有耐心的朋友也能接受,但是如果我們要通過HC-COM發送指令,實現對小車的遙控,也就說需要我們快速的輸入指令,這種方法是不行的,怎么辦呢?,對大部分人了說不具備修改這個app的能力,那么只能修改單片機的接收和發送函數了,因此我把上面的串口中斷函數進行了簡單的修改,如下

void Com_Int(void) interrupt 4
{
    EA = 0;        

  if(RI == 1) //當硬件接收到一個數據時,RI會置位
        {
           LED=0;
                RI = 0;
                receive_data = SBUF;//接收到的數據
                if(receive_data!=0)
                receive_real_data=receive_data;
         
                SBUF=receive_real_data;//將接收到的數據放入到發送寄存器
          while(!TI);                         //等待發送數據完成
          TI=0;                                                 //清除發送完成標志位
               
               
}
    EA = 1;        
}

只有接收到的數據不為0時,才賦值給新的變量receive_real_data,我們通過判斷receive_real_data的值,來控制LED或者小車,而不是直接用接收到的值receive _data,同樣我們返回到手機的數據,也改為receive_real_data。這樣我們只需要發送一位的 1、2、3、4、5、6、7、8、等就可以了,用起來很方便



全部資料51hei下載地址:
HC-08藍牙4.0BLE串口模塊使用資料包.7z (7.73 MB, 下載次數: 68)

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产亚洲人成a在线v网站 | 伊人伊人伊人 | 亚洲精品一区二区在线观看 | 久久毛片 | 欧美在线一区二区三区 | 国产丝袜一区二区三区免费视频 | 中文字幕av免费 | 国产在线一区二区三区 | www国产亚洲精品久久网站 | 国产在线视频三区 | 黑人一级黄色大片 | 精品久久久久久亚洲综合网 | 99热99| 爱爱小视频| 波霸ol一区二区 | 欧美午夜精品 | 欧美精产国品一二三区 | av一级毛片 | 国产欧美精品 | 91中文字幕 | 成人精品福利 | 天堂在线免费视频 | 国产精品高清一区二区三区 | 国产免费一区二区 | 精品毛片视频 | 美女日批免费视频 | 人人看人人爽 | 狠狠干狠狠操 | 99tv| 欧美成人精品 | 亚洲一区二区在线电影 | 最新国产精品精品视频 | 激情在线视频网站 | 中文在线一区二区 | 国产在线www | 天天躁天天操 | 天天看逼| 亚洲欧美在线观看视频 | 国产免费看 | 9久9久| 精品亚洲一区二区三区 |