季紅梅
【摘 要】教育教學須因材施教,面對高職學生群體,應運用怎樣的教學方法才能達到最佳教學效果呢?根據自己多年教學體會,認為高職課堂教學,既不能等同于高中教學,也不能完全照搬高校教學。它必須具有高職的特色,其課堂教學既要注重知識性,更要注重趣味性,理論夠用,技能為主,通過學生跟著老師做、學生學著自己做、理論教學做總結的方式,通過實踐體會理解掌握單片機的功能應用技能。
【關鍵詞】高職教學;ZigBee無線技術;單片機數據通訊應用
1.引言
當前各類高職技能大賽項目的機器人控制、非接觸識別等等科目,單片機的數據通訊應用屬于必用項目。如何設計數據通訊知識的教學,使得掌握單片機數據采集或者控制所需數據傳輸給其他單片機或者遠端PC,是必須面對的科目。
2.數據通訊的方法
單片機的常用數據通信主要分為以下類型:
類型1:串行通訊
使用單片機的串口接口(Serial Interface),將數據逐位順序傳送的過程稱為串口通訊。串口通訊特點是通信線路簡單,只要一對傳輸線就可以實現雙向通信(可以直接利用電話線作為傳輸線),從而大大降低了成本,但傳送速度較慢。CC2530具有USART0/USART1兩個串口供用戶使用,通過RS232接口線將單片機的數據傳遞到PC機或接收PC機發出的指令。還可以設計相應線路板,實現單片機之間的串口數據通訊。
類型2:無線局域網通訊
使用ZigBee無線技術,CC2530單片機模塊板可以在0~75m的范圍內,以IEEE 802.15.4標準的下實現無線數據收發功能。一個ZigBee網絡最多可以容納254個從設備和1個主設備。一個區域內最多可以存在100個網,而且組網靈活,用于實現單片機板之間的數據通訊。通訊方式可以是一對一、一對多、多對多、級聯組網等,用戶可以設計靈活的數據協議來實現數據通訊。
局域網無線通訊和串口通訊的靈活組合,可以滿足大多數用戶的數據交流與控制需求,且結合其他通訊設備,方便實現遠程監控。
3.UART串口通訊設計步驟
UART串口通訊實現步驟為:設置串口初始化、讀寫串口處理等步驟。又根據數據傳輸方向,分為單片機→PC、PC→單片機數據傳輸的作不同配置。在完成初始化串口配置以后,將需要傳輸的數據存入緩存UxDBUF,并且需要等待一定時間,等待數據被接收方取走,發送數據不宜使用發送中斷(PC實時性差,容易亂碼,故使用定時器T1設置定時發送中斷發送字符數據,可以通過調試測試出最佳等待時間)。接收數據則可以使用接收中斷來實現數據接收(單片機實時性好)。實驗參考代碼如下:
3.1單片機→PC初始化設置函數(使用UART0口,異步通訊模式,波特率為57600)
void initUART01(void)
{ //片內外設引腳位置采用上電復位默認值,即PERCFG寄存器采用默認值
PERCFG = 0x00; //位置 1 P0 口
P0SEL = 0x3c; //定義P0 用作串口, P0.2、P0.3、P0.4、P0.5作為片內外設I/O
U0BAUD = 216; U0GCR = 10; //波特率為57600
U0CSR |= 0x80; // 模式選擇UART模式
U0UCR |= 0x80; // 進行USART初始化清除
UTX0IF = 0; // 清零UART0 TX發送中斷標志 }
3.2PC→單片機初始化設置函數(使用UART0口,異步通訊模式,波特率為57600)
void initUART02(void)
{ //片內外設引腳位置采用上電復位默認值,即PERCFG寄存器采用默認值
PERCFG = 0x00; //位置 1 P0 口
P0SEL = 0x3c; //定義P0 用作串口, P0.2、P0.3、P0.4、P0.5作為片內外設I/O
U0BAUD = 216; U0GCR = 10; //波特率為57600
U0CSR |= 0x80; // 模式選擇UART模式
U0UCR |= 0x80; // 進行USART初始化清除
U0CSR |= 0x40; //允許UART0接收數據。特別強調必須在其他配置完成后才能配置,不能和模式選擇一起配置
URX0IF = 0; // 清零UART0 RX接收中斷標志 }
3.3發送功能代碼參考(設計定時中斷,在中斷中定時發送,假設為:0.02s)
void UART0SendByte(unsigned char c) // 發送一字節
{ U0DBUF = c; // 將要發送的1字節數據寫入U0DBUF(串口 0 收發緩沖器)
while (!UTX0IF); // 等待TX中斷標志,即U0DBUF就緒
UTX0IF = 0; // 清零TX中斷標志 }
void UART0SendString(unsigned char *str) // UART0發送一個字符串
{ while(1)
{ if(*str == ‘\0)
break; // 遇到結束符,退出
UART0SendByte(*str++); // 發送一字節 } }
3.4接收功能代碼參考
#pragma vector=URX0_VECTOR //中斷向量表的設置endprint
__interrupt void URX0_ISR(void)
{ URX0IF = 0;//清中斷標志
receive_handler(); //調用接收數據后處理函數(略)}
3.5定時發送中斷設計等其他相關輔助代碼,參見教學研究二、三
4.無線局域網通訊設計
借助于TI公司提供基于CC2530的軟件代碼BasicRF包,實現ZigBee無線通訊十分簡單。BasicRF是簡單的無線點對點傳輸協議,可以用來進行無線設備數據傳輸的入門學習開發相對簡單的無線控制與無線傳感網絡。這樣無需深入了解無線通訊底層協議理論(這對于高職學生是非常困難的…),只要教會學生使用BasicRF包實現無限傳輸數據的方法即可。教師需要對BasicRF包的應用,合理做出功能上的劃分,設計好實現程序的框架,教授學生將功能函數添加到框架的合適的部位,實現數據的傳輸。
4.1根據TI公司提供基于CC2530的軟件代碼BasicRF包的使用說明,進行編程環境的基本配置(略)
4.2初始化
//BasicRF地址設置:
#define RF_CHANNEL 20 // 頻道 11~26
#define PAN_ID 0x1A5B //網絡id 0x0000-0xFFFF
#define MY_ADDR 0x1015 //本機模塊地址 id 0x0000-0xFFFF
#define SEND_ADDR 0xAC3A //發送地址 0x0000-0xFFFF
//提示:發送模塊和接收模塊MY_ADDR和SEND_ADDR相反。
//多組同時實驗:RF_CHANNEL / PAN_ID 至少一個不一樣
//模塊相關資源初始化
void halBoardInit(void )
//無線收發參數的配置初始化
void ConfigRf_Init(void );
//檢查結構變量配置端口是否成功,返回值成功為SUCCESS 0,失敗為FAILED 1
uint8 basicRfInit(&basicRfConfig)
4.3發送與接收函數
//發送“ZIGBEE TEST \r\n”,13個字符,成功返回值為0:
uint8 basicRfSendPacket(SEND_ADDR,”ZIGBEE TEST\r\n”,13);
//判斷有無收到zigbee信號,有為真返回值為1:
uint8 basicRfPacketIsReady();
//接收數據放緩存pRxData中,緩沖區最大長度為MAX_RECV_BUF_LEN ,返回值是數據串長度
uint8 basicRfReceive(pRxData, MAX_RECV_BUF_LEN, NULL);
4.4主程序框架(參見圖1)
void main(void)
{ uint16 len = 0;
halBoardInit(); //模塊相關資源的初始化
ConfigRf_Init(); //無線收發參數的配置初始化
//LED1(綠)、LED2(紅)點亮,參見教學研究二、三
while(1)
{ len = RecvUartData(); // 接收串口數據
if(len > 0)
{
// 綠燈取反,無線發送指示(略)
basicRfSendPacket(SEND_ADDR,uRxData,len);
//把串口數據通過zigbee發送出去}
if(basicRfPacketIsReady()) //查詢有沒收到無線信號
{ // 紅燈取反,無線接收指示(略)
len = basicRfReceive(pRxData, MAX_RECV_BUF_LEN, NULL); //接收無線數據
halUartWrite(pRxData,len); //接收到的無線發送到串口數
}}}
說明:
⑴根據需要選擇框架中功能塊,不需要的刪去即可;
⑵收發模塊使用相同的框架流程,注意收發地址的對應關系。
5.數據通訊教學總結
通過框架式教學設計的實踐,學生基本上能夠完成數據通訊功能的設計,并且能夠自由拓展應用,設計6組及以上的單片機組網應用項目,并且結合其他課程知識點,實現人機互動的PC級C#平臺監控界面設計,部分學生可以實現手機遠程操作平臺對單片機網應用的實時監控。
參考文獻:
[1] 姜仲 劉丹 ZigBee技術與實訓教程[M]北京 清華大學出版社2014.
[2] 物聯網無線傳感網實訓教程[M]北京 新大陸時代教育科技有限公司2014.
[3] 本書編委 ZigBee技術開發-CC2530單片機原理及應用[M]北京 清華大學出版社2015.
[4] 楊玥 單片機與接口技術-基于CC2530的單片機應用[M]北京 清華大學出版社2017.endprint