《無(wú)線通信開(kāi)發(fā)技術(shù)及實(shí)踐》課件實(shí)踐3_第1頁(yè)
《無(wú)線通信開(kāi)發(fā)技術(shù)及實(shí)踐》課件實(shí)踐3_第2頁(yè)
《無(wú)線通信開(kāi)發(fā)技術(shù)及實(shí)踐》課件實(shí)踐3_第3頁(yè)
《無(wú)線通信開(kāi)發(fā)技術(shù)及實(shí)踐》課件實(shí)踐3_第4頁(yè)
《無(wú)線通信開(kāi)發(fā)技術(shù)及實(shí)踐》課件實(shí)踐3_第5頁(yè)
已閱讀5頁(yè),還剩72頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

實(shí)踐3藍(lán)牙技術(shù)實(shí)踐3.G.1實(shí)踐3.G.2

實(shí)踐3.G.1

兩個(gè)藍(lán)牙模塊之間的透?jìng)鳒y(cè)試。

【分析】藍(lán)牙模塊能與內(nèi)含藍(lán)牙模塊的手機(jī)進(jìn)行配對(duì)連接,也能彼此之間進(jìn)行配對(duì)連接。藍(lán)牙模塊一旦完成配對(duì)連接,彼此之間即為透明數(shù)據(jù)傳輸狀態(tài)。本實(shí)踐實(shí)現(xiàn)兩個(gè)藍(lán)牙模塊的配對(duì)連接和數(shù)據(jù)通信,首先通過(guò)跳線開(kāi)關(guān)分別設(shè)置為主模塊和從模塊;然后分別進(jìn)行初始化,在初始化中設(shè)置的配對(duì)碼必須保持一致。

解決問(wèn)題的步驟如下:

(1)硬件準(zhǔn)備。

(2)兩個(gè)藍(lán)牙模塊分別初始化。

(3)配對(duì)成功后,通過(guò)超級(jí)串口進(jìn)行透?jìng)鳒y(cè)試。

【參考解決方案】

1.硬件準(zhǔn)備

將兩個(gè)實(shí)驗(yàn)開(kāi)發(fā)板上的JP12通過(guò)跳線選通COM端,藍(lán)牙串口通過(guò)串口線分別連至兩臺(tái)PC機(jī);同時(shí),JP13通過(guò)跳線選通HW端,即硬件選擇主、從模式。將一個(gè)實(shí)驗(yàn)開(kāi)發(fā)板的JP14通過(guò)跳線選通MA端,即硬件設(shè)置為主模塊;將另一個(gè)實(shí)驗(yàn)開(kāi)發(fā)板的JP14通過(guò)跳線選通SL端,即硬件設(shè)置為從模塊。

設(shè)置完成之后,分別開(kāi)啟電源開(kāi)關(guān)。

2.兩個(gè)模塊初始化

先后開(kāi)啟兩個(gè)實(shí)驗(yàn)開(kāi)發(fā)板上的電源開(kāi)關(guān),在兩臺(tái)PC機(jī)上分別開(kāi)啟超級(jí)串口程序,正確設(shè)置端口號(hào)和波特率后,輸入相關(guān)AT指令完成主模塊和從模塊的初始化。

1)主模塊初始化

首先開(kāi)啟主模塊所在的實(shí)驗(yàn)開(kāi)發(fā)板上的電源開(kāi)關(guān),再開(kāi)啟與之相連的PC機(jī)上的超級(jí)串口程序,波特率選擇藍(lán)牙模塊的默認(rèn)值“9600”,選擇正確的串口號(hào),此例中的設(shè)置如圖S3-1所示。圖S3-1主模塊超級(jí)串口參數(shù)設(shè)置然后,在“超級(jí)串口”界面輸入初始化的AT指令,將主模塊命名為BOLUTEK1,開(kāi)啟上報(bào)指令,主動(dòng)搜索遠(yuǎn)端藍(lán)牙設(shè)備,配對(duì)碼設(shè)置為1234560。每一條指令必須以回車結(jié)尾,在全部輸入完之后,點(diǎn)擊“發(fā)送”,相應(yīng)的指令回復(fù)如圖S3-2所示。圖中的最后兩條指令是主模塊搜索遠(yuǎn)端藍(lán)牙設(shè)備的上報(bào)結(jié)果,每隔一段時(shí)間主動(dòng)上報(bào)一次。圖S3-2主模塊初始化完成主模塊初始化后,關(guān)閉實(shí)驗(yàn)板上的電源開(kāi)關(guān)。

2)從模塊初始化

首先開(kāi)啟從模塊所在的實(shí)驗(yàn)開(kāi)發(fā)板上的電源開(kāi)關(guān),再開(kāi)啟對(duì)應(yīng)的超級(jí)串口程序,波特率選擇默認(rèn)值“9600”,選擇正確的串口號(hào),此例中的設(shè)置如圖S3-3所示。圖S3-3從模塊的超級(jí)串口參數(shù)設(shè)置然后,在超級(jí)串口界面輸入初始化的AT指令,將從

模塊命名為BOLUTEK2,開(kāi)啟上報(bào)指令,配對(duì)碼設(shè)置為1234560,與主模塊保持一致。相應(yīng)的指令回復(fù)如圖S3-4

所示。圖S3-4從模塊初始化

3.配對(duì)連接

初始化正確后,配對(duì)連接過(guò)程是由模塊自主完成的。開(kāi)啟主模塊的電源開(kāi)關(guān),主模塊所在的實(shí)驗(yàn)板上LED4燈快閃,片刻之后LED4長(zhǎng)亮。觀察從模塊所在的實(shí)驗(yàn)板,亦可看到LED4燈長(zhǎng)亮。此現(xiàn)象代表兩個(gè)模塊已成功配對(duì)連接。

查看與主模塊相連的PC機(jī)上的超級(jí)串口,可看到如圖S3-5所示的界面。圖S3-5主模塊端的提示查看與從模塊相連的PC機(jī)上的超級(jí)串口,可看到如圖S3-6所示的界面。圖S3-6從模塊端的提示

4.透?jìng)鳒y(cè)試

點(diǎn)擊“清空顯示”按鈕,將兩個(gè)超級(jí)串口的接收區(qū)清空。

在主模塊端再次發(fā)送之前的初始化AT指令如圖S3-7

所示。圖S3-7主模塊端發(fā)送稍后,在從模塊端超級(jí)串口的接收區(qū)可看到如圖S3-8所示的界面。圖S3-8從模塊端接收在發(fā)送區(qū)再次輸入之前的從模塊初始化指令,點(diǎn)擊“發(fā)送”按鈕,如圖S3-9所示。圖S3-9從模塊端發(fā)送稍后,在主模塊對(duì)應(yīng)的超級(jí)串口可看到如圖S3-10所示的界面。圖S3-10主模塊端接收

實(shí)踐3.G.2

單片機(jī)通過(guò)兩個(gè)藍(lán)牙模塊進(jìn)行串口通信

【分析】本實(shí)踐在實(shí)踐3.G.1的基礎(chǔ)上,將兩個(gè)藍(lán)牙模塊分別連至單片機(jī)。單片機(jī)檢測(cè)4個(gè)按鍵,當(dāng)按鍵按下時(shí),單片機(jī)向?qū)嶒?yàn)板上的藍(lán)牙模塊發(fā)送特定的內(nèi)容。由于藍(lán)牙模塊處于透?jìng)鳡顟B(tài),兩個(gè)藍(lán)牙模塊之間可看做一條透明傳輸線,該內(nèi)容將直接傳至對(duì)端藍(lán)牙模塊的單片機(jī)。對(duì)端單片機(jī)在接收到特定內(nèi)容后,控制LCD12864、LED、蜂鳴器等外設(shè)做出響應(yīng)。

本實(shí)踐的硬件電路包含兩部分:藍(lán)牙模塊外圍電路和單片機(jī)及其外設(shè)電路。藍(lán)牙模塊外圍電路請(qǐng)參見(jiàn)理論篇的相關(guān)介紹,此處不再給出。單片機(jī)及其相關(guān)外設(shè)的電路圖如圖S3-11所示,其中外設(shè)包含四個(gè)按鍵、兩個(gè)LED燈、1個(gè)蜂鳴器、1個(gè)LCD12864。圖S3-11單片機(jī)及相關(guān)外設(shè)解決問(wèn)題的步驟如下:

(1)兩個(gè)藍(lán)牙模塊初始化和配對(duì)連接。

(2)將兩個(gè)藍(lán)牙模塊分別連至單片機(jī),編寫(xiě)單片機(jī)控制程序。

(3)仿真調(diào)試與下載驗(yàn)證。

【參考解決方案】

1.兩個(gè)藍(lán)牙模塊初始化和配對(duì)連接

按照3.G.1的實(shí)踐步驟,使兩個(gè)藍(lán)牙模塊進(jìn)入透?jìng)鳡顟B(tài)。

2.將藍(lán)牙模塊連至單片機(jī)

將兩個(gè)實(shí)驗(yàn)開(kāi)發(fā)板上的JP12均通過(guò)跳線選至MCU端,串口線拔出。

3.編寫(xiě)控制程序

將其中一個(gè)實(shí)驗(yàn)開(kāi)發(fā)板(實(shí)驗(yàn)板1)通過(guò)JTAG仿真器連接至PC機(jī),查看其端口號(hào)(方法同實(shí)踐2,此例中為COM12)。新建一個(gè)工程,按照實(shí)踐2做好相關(guān)的IAR設(shè)置;然后編寫(xiě)相關(guān)程序。該工程采用模塊化的編碼風(fēng)格,分別編寫(xiě)主函

數(shù)mian.c、按鍵掃描keyscan.h和keyscan.c、液晶顯示LCD12864SPI.h和LCD12864.c。

1)?main.c

藍(lán)牙模塊通過(guò)USART串口與單片機(jī)相連,因此主函數(shù)采用了任務(wù)函數(shù)結(jié)合定時(shí)器中斷的方法控制蜂鳴器響、清屏、LED2亮和按鍵掃描及特定內(nèi)容的串口發(fā)送,是實(shí)際的工程應(yīng)用中比較常用的編程方法。主程序的源程序代碼如下:

#include<iom16.h>

#include<intrinsics.h>

#include<string.h>

#include“12864SPI.h”

#include“keyscan.h”

#defineucharunsignedchar

#defineuintunsignedint

#defineBIT(x)(1<<(x))

ucharbeep=0;

ucharled=0;

ucharstatus=0;

ucharkey=0;

ucharRX_flag=0;

ucharRX_temp=0;

ucharRX_buffer[UART_BUFLEN];

ucharRX_counter=0;

ucharTX_buffer[UART_BUFLEN]=“HELLO-”;

ucharTX_counter=0;

ucharTX_len=0;

uchar__flashASCII[]=“0123456789ABCDEF”;

#defineTASK_NUM10 //任務(wù)數(shù)量

#defineTaskTypt_tunsignedchar

voidtask0(void);

voidtask1(void);

voidtask2(void);

voidtask3(void);

voidTIMER2_init();

voidUART_init();

voidIO_init();

voiddelayms(uintt);

voidwr_harf_LCD(uchar*ptr,ucharupdown);

/********************主函數(shù)******************/

voidmain(void)

{

IO_init();

LCD_init();

UART_init();

TIMER2_init();

KEY_init();

memset(RX_buffer,32,'');

delayms(50);

while(1)在上述源程序代碼中,串口的發(fā)送與接收通過(guò)相應(yīng)的中斷函數(shù)實(shí)現(xiàn),當(dāng)操作按鍵時(shí),單片機(jī)通過(guò)串口向藍(lán)牙模塊發(fā)送數(shù)據(jù),發(fā)送內(nèi)容為指定的“HELLO+按鍵值”的形式。當(dāng)單片機(jī)接收到相關(guān)數(shù)據(jù)時(shí),將控制LCD12864顯示接收到的內(nèi)容,如果收到的是“HELLO1”,則蜂鳴器響;如果收到的是“HELLO2”,則LED2亮。

2)按鍵掃描

通過(guò)查詢方式檢測(cè)4個(gè)按鍵中是否有按鍵操作,實(shí)驗(yàn)板上的SW2按下并彈起,返回按鍵值1;SW3按下并彈起,返回按鍵值2;SW4按下并彈起,返回按鍵值3;SW5按下并彈起,返回按鍵值4。

頭文件keyscan.h的源程序代碼如下:#ifndef_KEYSCAN_H_

#define_KEYSCAN_H_

#include<ioavr.h>

#defineucharunsignedchar

#defineuintunsignedint

#defineBIT(x)(1<<(x))

#definenops()asm("nop");asm("nop")#defineKEY1PIND_Bit2

#defineKEY2PINA_Bit0

#defineKEY3PIND_Bit4

#defineKEY4PIND_Bit5

voidKEY_init();

ucharkeyscan(void);

#endif實(shí)現(xiàn)具體函數(shù)的keyscan.c文件的源程序代碼如下:

3)液晶顯示驅(qū)動(dòng)

關(guān)于LCD12864顯示驅(qū)動(dòng)程序,在實(shí)踐2中已有講解,此處僅僅省去了測(cè)試函數(shù)Test()。

頭文件LCD12864SPI.h的源程序代碼如下:

#ifndef_12864SPI_H_

#define_12864SPI_H_

#defineucharunsignedchar

#defineuintunsignedint

#defineBIT(x)(1<<(x))實(shí)現(xiàn)驅(qū)動(dòng)函數(shù)的LCD12864.c函數(shù)的源程序代碼如下:

4.下載驗(yàn)證

將LCD12864插入插槽,點(diǎn)擊“Make”按鈕,出現(xiàn)如圖S3-12所示的提示后,點(diǎn)擊“Debug”按鈕,將程序下載至實(shí)

驗(yàn)板,點(diǎn)擊“全速執(zhí)行”按鈕。圖S3-12無(wú)錯(cuò)誤信息提示將JTAG仿真器連接至另一實(shí)驗(yàn)板(實(shí)驗(yàn)板2),采取同樣的操作將程序代碼下載至實(shí)驗(yàn)板2,全速執(zhí)行后,可觀察到下述現(xiàn)象:

在實(shí)驗(yàn)板1上按下并彈起4個(gè)按鍵中的任何一個(gè),LED2燈閃亮一次。當(dāng)按下

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論