黃 怡, 駱 懿, 許曉榮
(杭州電子科技大學 通信工程學院, 浙江 杭州 310018)
單片機實踐課程是電子信息與電氣工程類專業重要的專業實踐課程。杭州電子科技大學通信工程學院單片機教學團隊針對通信工程專業的特點,設計了雙向通信控制系統的實驗。通過該實驗,使學生了解單片機系統控制和通信機制的基本原理,掌握單片機系統設計與制作的能力,包括電路設計、程序編寫、實物焊接以及系統調試等,從自主探究與合作交流中提高分析問題和解決復雜工程問題的能力,提高科技創新意識[1-2]。
雙向通信控制系統以TI公司的MSP430F5529單片機作為主控處理器。控制端由雙軸搖桿、射頻模塊和LCD液晶顯示屏組成;被控端由射頻模塊、LCD液晶顯示屏和智能小車組成,智能小車的基礎模塊有直流電機和舵機,可以通過添加傳感器進行功能擴展。
系統的工作流程為:控制端通過采集雙軸搖桿的電位值獲得搖桿當前的位置,電位值數據通過單片機處理后由射頻模塊發送;被控端通過與控制端匹配的射頻模塊接收指令信號,單片機對接收到的指令信號進行解析處理,然后輸出不同占空比的PWM信號,以控制智能小車的直流電機和舵機,實現對小車的速度和方向的控制。
智能小車的速度和方向可顯示在兩端的LCD液晶屏上。若智能小車加裝了環境監測傳感器,可將采集到的數據同時回傳至控制端,并顯示在控制端液晶屏上。系統的框架如圖1所示。

圖1 系統的框架設計
本實驗項目通過可雙向通信的控制系統,讓學生了解工程項目的軟硬件設計流程及調試要求,熟悉單片機作為主控處理器的功能及作用,掌握中斷控制、A/D采樣轉換、異步串口通信、PWM、LCD、直流電機和舵機的應用。通過基礎實驗訓練,學生能夠聯系實際生活和當前技術熱點進行系統的功能拓展和創新。
主控處理器選用MSP430F5529單片機。該單片機是美國德州儀器公司(TI)推出的一種16位超低功耗的混合信號處理器,具有功耗低、指令高效、電壓范圍寬、中斷功能強大、喚醒時間短等特點[3-4]。該單片機片上有時鐘系統、12位A/D轉換器(ADC)、多個可輸出PWM信號的16位定時器和2個通用串行通信接口,完全滿足本系統的使用。
在MSP430F5529核心板的基礎上,我院“微處理器與接口技術課程設計”教學團隊自制了MSP430F5529接口擴展板,如圖2所示。該擴展板與核心板配套使用,核心板通過外接引腳排線插槽與擴展板連接。擴展板包括液晶顯示屏、電位器、ADC測試接口、4個按鍵、3個電容式觸摸鍵及背面的microSD Card插槽、蜂鳴器等。在本實驗設計中,主要采用該擴展板上的LCD和按鍵,其中LCD用于顯示小車的轉速、方向以及傳感器采集的數據,按鍵用于控制。

圖2 自制MSP430F5529接口擴展板
LCD液晶顯示屏為128×64像素,可以顯示8×4個(16×16點陣)漢字或者顯示21×8個(6×8點陣)ASCII碼。LCD的數據線、片選信號、時鐘信號等信號線與MSP430F5529單片機的GPIO口相連接,通過單片機控制GPIO口輸出電平,設置點陣像素電平的高低,在LCD上顯示設置的字符、漢字、圖像點陣[5]。LCD液晶顯示屏與MCU之間的數據傳輸為單向,數據只允許寫入[3,6-7]。
射頻模塊以CC1101為核心,工作頻率為434~437 MHz[8]。CC1101是一款在無線通信系統中廣泛應用的無線傳輸芯片,能夠根據需求配置數據傳輸的頻率、速率、數據格式、調制方式等[9]。射頻模塊以半雙工的方式傳送數據,成對的兩個模塊必須設置相同的波特率、通信頻道和地址才能實現通信,可以通過拉低CON引腳電平進入指令模式進行設置。實驗中,射頻模塊的TXD和RXD引腳分別與單片機的P3.3和P3.4引腳相連,采用UART協議進行串口通信,實現與單片機之間的數據交互。當射頻模塊的RXD端口收到MCU的數據后,自動將數據以無線電波的方式發送到空中,而波特率、通信頻道和地址都匹配的射頻模塊可直接從空中獲得數據。MCU與CC1101射頻模塊的接口示意圖如圖3所示。

圖3 MCU與CC1101射頻模塊接口示意圖
雙軸搖桿模塊的3個信號輸出引腳是S-X、S-Y和S-K,分別連接控制端單片機的P6.1、P6.2和P6.3引腳,通過單片機的ADC模擬信號采樣轉換功能獲得當前搖桿的電位值[10]。實驗中采用的是序列通道多次轉換模式,ADC轉換結果將順序寫入ADC12MEMx的存儲器中。當最后一個通道轉換完成后,一次序列通道轉換完成,會觸發進入下一次序列通道轉換。
被控端的直流電機通過H橋與單片機相連。單片機輸出不同占空比的PWM,由H橋轉換成對應比例的驅動電壓,從而控制直流電機的轉速和正反轉動方向。H橋需要+5 V供電。
舵機由PWM信號控制。利用占空比的變化改變舵機的角度,角度變化與脈沖寬度變化成正比[11]。實驗中采用的SG90舵機,周期為20 ms,脈沖寬度在1~2 ms,對應-90°~+90°。初始化時可將脈沖寬度設置為1.5 ms并作為基準信號。舵機信號線與單片機具有PWM輸出功能的引腳相連,如P2.0。
主程序的流程如圖4所示。系統啟動后首先進入初始化。控制端須進行時鐘初始化、通用輸入輸出口初始化、LCD初始化、按鍵初始化、ADC初始化、UART初始化;被控端除上述初始化外,還需要進行定時器初始化。系統初始化之后進入主循環,在主循環中首先掃描按鍵情況。按鍵可以設置多種功能。圖4中,當按鍵按下時可進入CC1101射頻模塊的指令模式,設置波特率、通信頻道和地址。按鍵功能可自行定義,從而使控制系統的運行及功能更加優化。控制端讀取搖桿的數據,進行處理后發送到CC1101射頻模塊進行發送。被控端持續進行指令監聽,當收到指令后對指令進行解析,并控制直流電機和舵機作出響應。

圖4 主程序流程圖
控制端需要處理A/D采樣轉換后得到的搖桿數據。通過AD采樣得到S -X(P6.1端口)、S -Y(P6.2端口)、S -K(P6.3端口)的值,分別存入ADC12MEM1、ADC12MEM2、ADC12MEM3,范圍均為0~4095。S -X和S -Y分別控制速度和角度,實驗中將其分為8個級別,速度級別為ADC12MEM1/512,角度為ADC12MEM2/512。S -K為搖桿按鍵信號,只有按下和彈起兩種狀態,按下時K值為0,松開時K值為1。將以上所有值整合為一個十進制數Send_Data存入寄存器中。

假設搖桿位置處在中間時,ADC12MEM1、ADC12MEM2的采樣值為2 500,ADC12MEM3約為4 000,則Send_Data=4+4×8+1×64。說明此狀態為第四級速度和第四級角度的按鍵沒有按下,因ADC12MEM3值采樣在實際應用中達不到4 096,故除以3 000。將Send_Data放入寄存器UCA0TXBUF中,即可實現指令信息的發送。
被控端需要無線接收指令信息,通過解析后控制小車電機的轉速和舵機的角度。無線接收到的指令信息存放在UCA0RXBUF中,將其提取出來后存入十進制變量Recv_Data中,對其通過移位相除操作進行解析。具體代碼如下:
Key = Recv_Data/64; //搖桿按下時Key=0,否則為1
Recv_Data = Recv_Data%64; //移位
Speed = Recv_Data%8; //控制電機轉速
Direct = Recv_Data/8; //控制舵機角度
假設Recv_Data=100,Key=100/64=1,說明搖桿按鍵沒有按下;Recv_Data=Recv_Data%64=36, Speed=Recv_Data%8=4,說明此時是第四級速度。Direct=Recv_Data/8=4,說明此時是第四級角度。
UCA0TXBUF、UCA0RXBUF為8位寄存器,在本實驗示例中只使用了第6—0位,最高位則沒有使用。在實際操作中可以鼓勵學生進行功能拓展。例如第7位表示一個按鍵的狀態,當按鍵按下時,要求被控端將電池電量值返回控制端。若將被控端放置在四軸飛行器上,掌握飛行器的電量值以決定是否能夠在飛行器電量用盡前回收,具有實際意義。
指令信息的傳送方式多種多樣,只要通信的雙方能夠準確掌握對方信息所要表達的意思即可。在實踐過程中,有項目小組利用查表的方式進行通信,采用ASCII表中的數字和字母代表具體速度和角度的等級,通信雙方約定ASCII碼字符分別表示的具體意義,在控制端和被控端采用相同的指令表即可。
在實驗教學實踐中,首先會介紹單片機及其開發環境、GPIO、LCD、中斷、ADC采樣轉換、異步串口通信協議、脈沖寬度調制、液晶屏驅動與顯示、直流電機的驅動、舵機的驅動等知識點,并通過樣例程序的編寫和講解讓學生較快熟悉MSP430F5529單片機和CC1101射頻模塊,然后讓學生分組進行項目綜合軟硬件設計及調試。教學實踐證明,學生通過該實驗能夠較好地理解單片機的系統控制功能,所有項目小組均能完成基本功能的設計與調試,部分小組能夠進行創新,增加不同的功能應用。師生普遍認為該實驗項目是對用C語言編程的能力、硬件設計能力、快速學習能力、發現以及解決問題的能力的綜合考察項目,也是一個可拓展的實驗項目。
以本實驗為基礎,可以引導學生進行多方面實驗內容的拓展。例如根據智能小車的功能,可以在小車上加裝特定用途的傳感器,如增加溫濕度傳感器、煙霧傳感器、甲醛傳感器等用于監測環境情況[12];或者增加超聲波傳感器,使小車能夠自主避障,保障小車行駛過程中的安全[13];根據無線信號傳輸方式,可以嘗試用藍牙、WiFi模塊替換CC1101射頻模塊[14-15];可嘗試通過互聯網遠程獲取小車的運行路線、運行環境等數據[16]。在信息安全方面,可以嘗試運用加密算法保證發送的指令不被非法截獲和篡改。
通過雙向通信控制系統實驗項目的制作,使學生了解系統從設計、制作、軟硬件調試到系統優化的全過程,內容涉及中斷控制、ADC采樣轉換、異步串口通信協議、脈沖寬度調制、液晶屏驅動與顯示、直流電機的驅動、舵機的驅動等。學生通過該實驗能夠較好地理解單片機的系統控制功能,并能以此為平臺進行創新項目的制作,實驗教學效果良好。