許曉榮, 駱 懿, 黃 怡
(杭州電子科技大學(xué)通信工程學(xué)院,杭州310018)
《微處理器與接口技術(shù)》(或《單片機(jī)與接口技術(shù)》)和《微處理器與接口技術(shù)課程設(shè)計(jì)》(或《單片機(jī)與接口技術(shù)課程設(shè)計(jì)》)是大部分工科院校電子信息與電氣工程類專業(yè)的重要基礎(chǔ)課和配套的實(shí)踐課程。課程目的是讓學(xué)生了解微處理器/微控制器計(jì)算機(jī)應(yīng)用系統(tǒng)的基本組成,以及常見外圍接口電路的設(shè)計(jì)方法[1-2]。近年來,國內(nèi)許多高校電子信息與電氣工程類專業(yè)開設(shè)的《微處理器與接口技術(shù)》課程采用了超低功耗16位RISC結(jié)構(gòu)MSP430系列單片機(jī)[1-3]。
作者所在學(xué)院開設(shè)的《微處理器與接口技術(shù)課程設(shè)計(jì)》硬件平臺采用MSP430F5529 LaunchPad(最小系統(tǒng))核心板[3-4]。并自制了與MSP430F5529LP匹配的接口擴(kuò)展板,包括:MSP430F5529LP主接口擴(kuò)展板、ESP8266 WiFi模塊擴(kuò)展板和包含多個傳感器模塊的不同類型接口擴(kuò)展板。結(jié)合CCSv6軟件開發(fā)環(huán)境和C語言編程,構(gòu)建MSP430F5529單片機(jī)低功耗應(yīng)用的口袋實(shí)驗(yàn)板開發(fā)平臺。
MSP430F5529 LaunchPad核心板由超低功耗16位單片機(jī)MSP430F5529、USB接口、EZ-FET板載仿真器、 外 接 引 腳 排 線、 按 鍵 組 成[3,5-6]。 在MSP430F5529LP核心板基礎(chǔ)上,自制了MSP430F5529LP主接口擴(kuò)展板。該擴(kuò)展板與核心板配合使用,通過核心板外接引腳排線插槽與擴(kuò)展板連接。主接口擴(kuò)展板上包括FG12864A液晶顯示屏、4個按鍵、3個電容式觸摸鍵、ADC、電位器、MicroSD Card插槽、蜂鳴器等。自制了WiFi模塊(ESP8266)擴(kuò)展板和 MSP430F5529LP BoostPack 底板[7],可以實(shí)現(xiàn)MSP430F5529單片機(jī)的LCD中英文與圖片顯示程序設(shè)計(jì)、ADC程序設(shè)計(jì)、按鍵與電容觸摸鍵程序設(shè)計(jì)、SD卡讀寫程序設(shè)計(jì)、WiFi無線遙控收發(fā)器程序設(shè)計(jì)[7]等多個基礎(chǔ)性實(shí)驗(yàn)例程。結(jié)合CCSv6軟件開發(fā)環(huán)境和C語言編程,構(gòu)建基于MSP430F5529單片機(jī)低功耗應(yīng)用的實(shí)驗(yàn)板開發(fā)平臺[8-10]。MSP430F5529LP核心板、接口擴(kuò)展板與BoostPack底板如圖1所示。
CCSv6(Code Composer Studio)具有環(huán)境配置、源文件編輯、程序調(diào)試、跟蹤和分析等功能的集成開發(fā)環(huán)境。它針對MSP430F5xx/6xx系列單片機(jī)進(jìn)行軟件開發(fā)。通過創(chuàng)建工程、編寫C程序、配置工程文件、編譯和調(diào)試工程、通過EZ-FET板載仿真器在開發(fā)板上運(yùn)行程序,實(shí)現(xiàn) MSP430 單片機(jī)軟件開發(fā)[1,3,5]。CCSv6調(diào)試程序界面如圖2所示。
借鑒國內(nèi)針對MSP430F5529 LaunchPad微處理器核心板開發(fā)的綜合電子設(shè)計(jì)實(shí)驗(yàn)平臺[11-12]和MSP430G2553 Launchpad微處理器核心板開發(fā)的接口擴(kuò)展板設(shè)計(jì)經(jīng)驗(yàn)[1,13]。對MSP430系列微處理器與接口技術(shù)課程設(shè)計(jì)實(shí)踐課進(jìn)行了課堂教學(xué)模式改革,進(jìn)一步完善和優(yōu)化MSP430F5529LP主接口擴(kuò)展板和BoostPack底板的設(shè)計(jì)、研制包含ESP8266 WiFi模塊和多個傳感器模塊的不同類型接口擴(kuò)展板[6,14]。借鑒MSP430系列微處理器在通用測控系統(tǒng)[14]、微弱信號檢測[15]等多個領(lǐng)域的低功耗應(yīng)用,將其應(yīng)用于課程設(shè)計(jì)研究與實(shí)踐。
圖1 MSP430F5529LP核心板、接口擴(kuò)展板與BoostPack底板
圖2 CCSv6調(diào)試程序界面
目前,戶外廣告多采用點(diǎn)陣式LCD顯示循環(huán)滾動的漢字/圖片。學(xué)生采用定時(shí)器結(jié)合LCD,在本實(shí)驗(yàn)板開發(fā)平臺上實(shí)現(xiàn)了LCD漢字/圖片的循環(huán)滾動顯示,循環(huán)滾動時(shí)間可由定時(shí)器進(jìn)行設(shè)置。
MSP430F5529LP接口擴(kuò)展板上的FG12864A液晶屏為64×128點(diǎn)陣式LCD。LCD與MSP430F5529采用SPI模式實(shí)現(xiàn)數(shù)據(jù)傳輸,數(shù)據(jù)傳輸為單向,數(shù)據(jù)只允許寫入[3,5-6]。它通過16腳軟性PCB排線與擴(kuò)展板接口線連接。16腳數(shù)據(jù)排線包括:8位數(shù)據(jù)線、LCD電源線、LCD片選信號、命令數(shù)據(jù)切換信號、數(shù)據(jù)傳輸時(shí)鐘信號、LCD復(fù)位、從設(shè)備輸入主設(shè)備輸出信號、地線等。這些信號線主要與MSP430F5529單片機(jī)的GPIO口(P3/P6)和電源線、地線相連接。通過單片機(jī)控制GPIO口輸出電平,設(shè)置點(diǎn)陣像素電平的高低,通過字模工具PCtoLCD2002生成點(diǎn)陣式字符、漢字、圖像對應(yīng)于FG12864A液晶屏顯示的像素,在CCSv6軟件的LCD顯示程序中修改字模顯示頭文件和顯示字符、漢字、圖像子函數(shù),通過編譯、調(diào)試、運(yùn)行主程序,實(shí)現(xiàn)在LCD上顯示設(shè)置的字符、漢字、圖像點(diǎn)陣[5]。
若在 LCD顯示字符和漢字,設(shè)置字模工具PCtoLCD2002“模式”為“字符模式”,“字模選項(xiàng)”中“取模方式”為“列行式”,“取模走向”為“順向(高位在前)”,“輸出數(shù)制”為“十六進(jìn)制數(shù)”。LCD顯示一個字符點(diǎn)陣大小為8×6。LCD每行(8個點(diǎn)陣)可以顯示21個字符,對于字符可以顯示8行,故LCD可顯示的總字符數(shù)為168個。LCD顯示一個漢字點(diǎn)陣大小為16×16。由于一個漢字占用2行(16個點(diǎn)陣)16列,故LCD每2行可以顯示8個漢字,對于漢字可以顯示4行,故LCD可顯示的總漢字?jǐn)?shù)為32個。設(shè)置完成后,在PC端輸入字符或漢字,點(diǎn)擊“生成字?!?,生成可以在LCD上顯示的十六進(jìn)制數(shù)據(jù),并保存為十六進(jìn)制字符矩陣后寫入LCD顯示程序頭文件。圖3為漢字的十六進(jìn)制點(diǎn)陣表示。
圖3 漢字的十六進(jìn)制點(diǎn)陣表示
若在LCD顯示圖片,設(shè)置字模工具PCtoLCD2002“模式”為“圖形模式”,選取位圖(bmp)文件(要求像素大?。?4×128),設(shè)置“輸出數(shù)制”為“十六進(jìn)制數(shù)”。設(shè)置完成后,點(diǎn)擊“生成字?!?,生成可以在LCD上顯示的位圖文件數(shù)據(jù),并保存為十六進(jìn)制字符矩陣后寫入LCD顯示程序頭文件。圖4所示為字模工具顯示圖像時(shí)設(shè)置圖形模式。
將字模工具生成的十六進(jìn)制字符矩陣寫入LCD顯示頭文件。以顯示漢字為例,在LCD漢字顯示頭文件中,一個漢字用32個十六進(jìn)制數(shù)進(jìn)行表示,N個漢字用N×32的二維字符數(shù)組表示。而后,在LCD顯示子程序中,增加LCD漢字顯示頭文件,在子函數(shù)聲明中增加顯示字符子函數(shù)、顯示漢字子函數(shù)和LCD顯示漢字字符串子函數(shù)。在主程序的主函數(shù)中增加LCD_write_chinese_string(0,0,16,8);表示在 LCD 的起始第0行第0列上開始顯示漢字,漢字點(diǎn)陣寬度為16,每2行顯示8個漢字。該函數(shù)形參變量調(diào)用自LCD顯示子程序的子函數(shù) LCD_write_chinese_string,采用LCDprintfChinese子函數(shù)在每行依次寫每個漢字,顯示的漢字內(nèi)容來源于LCD漢字顯示頭文件中定義的十六進(jìn)制二維字符數(shù)組。在LCDprintfChinese子函數(shù)中調(diào)用顯示漢字子函數(shù)。該子函數(shù)通過讀取二維字符數(shù)組中每行32個十六進(jìn)制數(shù)據(jù),首先顯示單個漢字的上半部分(即讀取二維數(shù)組中各行向量的前16個十六進(jìn)制數(shù)顯示上半部分8×16點(diǎn)陣),然后程序中行變量加1,繼續(xù)顯示單個漢字的下半部分(即讀取二維數(shù)組中各行向量的后16個十六進(jìn)制數(shù)顯示下半部分8×16點(diǎn)陣),完成單個漢字的讀取與LCD顯示。在CCSv6中運(yùn)行主程序,調(diào)用LCD顯示子程序中的LCD_write_chinese_string子函數(shù),在 LCD上依次顯示漢字。
圖4 字模工具顯示圖像時(shí)設(shè)置圖形模式
同理,將字模工具生成的位圖數(shù)據(jù)十六進(jìn)制字符數(shù)組寫入LCD顯示頭文件,在主函數(shù)中增加LCD_write_figure(0,31,66,1);表示在LCD 的起始第0 行第31列上開始顯示HDU LOGO位圖,圖像點(diǎn)陣寬度為66,在LCD圖像顯示頭文件中定義的demo_figure為一維字符數(shù)組。該函數(shù)形參變量調(diào)用自LCD顯示子程序的子函數(shù) LCD_write_figure,采用LCDprintffigure子函數(shù)依次讀取位圖數(shù)據(jù)十六進(jìn)制字符數(shù)組數(shù)據(jù),顯示的圖像矩陣來源于LCD圖像顯示頭文件中定義的位圖數(shù)據(jù)十六進(jìn)制字符數(shù)組。在CCSv6中運(yùn)行主程序,調(diào)用LCD顯示子程序中的LCD_write_figure子函數(shù),完成HDU LOGO位圖數(shù)據(jù)的讀取與顯示。
在主程序中設(shè)置定時(shí)器,時(shí)鐘采用ACLK(32.768 kHz),定時(shí)器采用增計(jì)數(shù)模式,定時(shí)器初值設(shè)為3 277(定時(shí) 0.1 s 的 循 環(huán) 滾 動 時(shí) 間)[3,9]。將 LCDprintf Chinese子函數(shù)寫入定時(shí)器中斷子程序中,定時(shí)器控制LCD顯示列變量,讀取LCD顯示頭文件中的漢字/位圖的十六進(jìn)制字符數(shù)組。完成漢字/圖片的循環(huán)滾動顯示。
圖5和圖6分別給出了LCD循環(huán)滾動顯示漢字/圖片的運(yùn)行結(jié)果。
圖5 LCD循環(huán)滾動顯示漢字運(yùn)行結(jié)果
圖6 LCD循環(huán)滾動顯示圖片運(yùn)行結(jié)果
在電子測量中,信號發(fā)生器、頻率計(jì)與信號檢測器是基本的測量儀器。利用MSP430定時(shí)器對信號發(fā)生器的輸入頻率進(jìn)行計(jì)數(shù),可以設(shè)計(jì)具有低功耗高精度的便攜式低頻信號頻率計(jì)。
在本設(shè)計(jì)案例中,利用定時(shí)器A和分頻功能,當(dāng)達(dá)到定時(shí)時(shí)間或滿足捕獲/比較條件時(shí),將可觸發(fā)定時(shí)器A產(chǎn)生中斷,使得每1s產(chǎn)生一個定時(shí)器中斷請求[3,9]。系統(tǒng)時(shí)鐘采用 ACLK(32.768 kHz),通過標(biāo)志位ID_3對主頻進(jìn)行8分頻,則分頻后的系統(tǒng)頻率為4 096 Hz。定時(shí)器采用增計(jì)數(shù)模式,定時(shí)器初值TA0CCR0 設(shè)為 4 096(系統(tǒng)分頻后定時(shí)1 s)[3,9]。當(dāng)大于TA0CCR0值的時(shí)候,定時(shí)器復(fù)位并從0開始重新計(jì)數(shù),并置位中斷標(biāo)志位,進(jìn)入中斷服務(wù)子程序,測出頻率值。
在本設(shè)計(jì)案例中,函數(shù)信號發(fā)生器產(chǎn)生正弦信號輸入開發(fā)板P2.4口作為中斷源,設(shè)置的定時(shí)器增計(jì)數(shù)模式剛好使得1 s內(nèi)產(chǎn)生一個定時(shí)器中斷,則在1 s內(nèi)計(jì)數(shù)器測得的脈沖數(shù)目恰好是信號的頻率值。因此,只要在定時(shí)器產(chǎn)生中斷時(shí)輸出脈沖數(shù)目值,同時(shí)將定時(shí)器計(jì)數(shù)清零即可連續(xù)測出信號發(fā)生器產(chǎn)生的正弦信號頻率值。將開發(fā)板LCD上顯示測出的頻率值,與信號發(fā)生器產(chǎn)生的正弦信號頻率值進(jìn)行對比,可以驗(yàn)證頻率計(jì)測量結(jié)果的正確性。圖7給出了低頻信號頻率計(jì)設(shè)計(jì)主程序流程圖。圖8給出了低頻信號頻率計(jì)測試結(jié)果驗(yàn)證圖。經(jīng)多次測量,并與信號發(fā)生器顯示的正弦信號頻率進(jìn)行對比,所設(shè)計(jì)的頻率計(jì)測得的頻率值與信號發(fā)生器產(chǎn)生的信號頻率值之間的相對誤差非常小,滿足低功耗高精度信號頻率計(jì)的設(shè)計(jì)要求。
基于MSP430系列微處理器設(shè)計(jì)無線遙控智能小車是MSP430系列微處理器在低功耗智能車設(shè)計(jì)中的典型應(yīng)用之一。
圖7 低頻信號頻率計(jì)設(shè)計(jì)主程序流程圖
圖8 低頻信號頻率計(jì)測試結(jié)果驗(yàn)證圖
在本設(shè)計(jì)案例中,無線遙控智能小車發(fā)送端對操縱桿處傳來的X軸與Y軸方向電壓信號進(jìn)行模數(shù)轉(zhuǎn)換和量化,使用MSP430F5529微處理器的ADC12模塊,選擇序列采樣通道為A1和A2,即信號從P6.1和P6.2輸入,X軸的采樣結(jié)果存入ADC12緩沖寄存器ADC12MEM0,Y軸的采樣結(jié)果存入ADC12緩沖寄存器ADC12MEM1,對得到的采樣結(jié)果分別進(jìn)行量化,X軸與Y軸均量化成7個范圍[3]。X軸的7個量化檔位分別表示:左轉(zhuǎn)角度3檔/2檔/1檔、直行、右轉(zhuǎn)角度1檔/2檔/3檔;Y軸的7個量化檔位分別表示:前進(jìn)3檔/2檔/1檔、停止、后退1檔/2檔/3檔。同時(shí)在發(fā)送端的 LCD顯示當(dāng)前小車方向與擋位。將MSP430F5529微處理器的通用串行通信接口USCI配置成UART模式,對量化結(jié)果進(jìn)行8 bit(1 byte)編碼后保存到發(fā)送緩沖寄存器UCA0TXBUF中[3],再經(jīng)由HC-11無線模塊串口透傳模式發(fā)送至接收端[16]。
無線遙控智能小車接收端采用HC-11無線串口模塊接收并譯碼來自發(fā)送端的8 bit控制信號[16]。首先從接收緩沖寄存器UCA0RXBUF中對編碼信號進(jìn)行譯碼,根據(jù)譯碼結(jié)果對MSP430F5529微處理器連接雙路H橋直流電機(jī)驅(qū)動模塊DRV8833的P1.2/P1.3接口以及連接舵機(jī)模塊的P1.4接口輸出PWM占空比分別進(jìn)行配置[17],即MSP430F5529根據(jù)譯碼的控制信號在P1.2/P1.3接口產(chǎn)生兩路不同占空比(占空比在25% ~75%范圍內(nèi))的PWM波,通過DRV8833驅(qū)動智能小車的電機(jī),以控制電機(jī)的轉(zhuǎn)向與不同檔位轉(zhuǎn)速[3,17]。同時(shí),MSP430F5529 根據(jù)譯碼的控制信號在P1.4接口產(chǎn)生占空比在3% ~9%之間的PWM波,以控制舵機(jī)的轉(zhuǎn)向與不同檔位轉(zhuǎn)向角[3]。在程序中建立函數(shù) Forward(inti)、Back(inti)、TurnLeft(inti)、TurnRight(inti),分別表示前進(jìn)函數(shù)、后退函數(shù)、左轉(zhuǎn)函數(shù)、右轉(zhuǎn)函數(shù)。函數(shù)機(jī)理是通過MSP430F5529微處理器的定時(shí)器A(Timer_A)輸出指定的PWM波,配置參考時(shí)鐘為ACLK(32768Hz),設(shè)置輸出PWM波周期,同時(shí)通過配置TA0CCRx來設(shè)定PWM的占空比,配置TA0CCTLx設(shè)定比較輸出模式[3]。在主函數(shù)中,讀取接收緩沖寄存器UCA0RXBUF,通過位運(yùn)算的結(jié)果來對上述函數(shù)進(jìn)行調(diào)用,利用發(fā)送端操縱桿實(shí)現(xiàn)智能小車在7個擋位內(nèi)的變速前進(jìn)/后退和7個擋位內(nèi)不同轉(zhuǎn)向角進(jìn)行左/右轉(zhuǎn)向控制。
圖9和圖10分別給出了基于MSP430F5529LP核心板與主接口擴(kuò)展板設(shè)計(jì)的無線遙控智能小車發(fā)送端與接收端。
圖9 無線遙控智能小車發(fā)送端
圖10 無線遙控智能小車接收端
論文以MSP430F5529微處理器核心板與自制接口擴(kuò)展板為硬件,采用CCSv6軟件開發(fā)環(huán)境,構(gòu)建了基于MSP430系列微處理器的低功耗課程設(shè)計(jì)實(shí)驗(yàn)開發(fā)平臺,介紹了LCD漢字/圖片的循環(huán)滾動顯示、低頻信號頻率計(jì)設(shè)計(jì)、無線遙控智能小車設(shè)計(jì)3個典型的課程設(shè)計(jì)案例。通過該實(shí)驗(yàn)平臺,3年來共計(jì)完成了30余項(xiàng)課程設(shè)計(jì)項(xiàng)目。通過該實(shí)驗(yàn)平臺,學(xué)生可以將創(chuàng)新思維應(yīng)用于實(shí)踐作品設(shè)計(jì)與開發(fā),有效培養(yǎng)了學(xué)生軟硬件綜合開發(fā)能力和團(tuán)隊(duì)合作精神,實(shí)現(xiàn)了基于學(xué)習(xí)產(chǎn)出(OBE)的微處理器與接口技術(shù)課程設(shè)計(jì)工程教育實(shí)踐教學(xué)改革。