基于MC9S12XS128的單片機開發(fā)板的設(shè)計
0 引言
“飛思卡爾”杯全國大學(xué)生智能車競賽是以迅速發(fā)展的汽車電子為背景,涵蓋控制、模式識別、傳感技術(shù)、電子、電氣、計算機、機械等多個交叉學(xué)科的科技創(chuàng)意性比賽,該項目由大賽組委會統(tǒng)一提供車模,利用指定的微控制器作為核心控制單元,各參賽隊伍在此基礎(chǔ)上自主進行系統(tǒng)設(shè)計,完成智能車的制作,使其能夠在專門設(shè)計的跑道上自動識別道路,并以最高速度行駛。此項賽事旨在加強大學(xué)生的創(chuàng)新意識、團隊合作精神和培養(yǎng)學(xué)生的創(chuàng)新能力。本文設(shè)計了基于MC9S12XS128(飛思卡爾指定芯片)的單片機開發(fā)系統(tǒng),為即將參加此項競賽的同學(xué)提供學(xué)習(xí)平臺。實際應(yīng)用結(jié)果表明,此項開發(fā)板的應(yīng)用大大提高了大學(xué)生制作智能車的開發(fā)效率。
1 系統(tǒng)硬件設(shè)計
MC9S12XS128單片機開發(fā)板由MC9S12XS128單片機最小系統(tǒng)、電源模塊、CAN/LIN總線接口、USB轉(zhuǎn)串口、標(biāo)準(zhǔn)異步串行接口、MAX 485通信接口、4×4矩陣鍵盤鍵號的識別與顯示電路(包括數(shù)碼管和液晶顯示接口)和電機驅(qū)動接口組成,系統(tǒng)框圖如圖1所示。
1.1 電源模塊設(shè)計
此開發(fā)板上提供2種輸出電壓,分別為5 V和12 V,輸出的12 V電壓可以通過LIN總線接口外接,同時提供2種電壓輸入方式,通過公用一個電源插頭給此開發(fā)板送入5 V或12 V電壓,當(dāng)輸入5 V電壓時,開關(guān)s,需打到5 V檔上,板內(nèi)芯片ST662將5 V的電壓轉(zhuǎn)換為12 V電壓,給需要12 V電壓的模塊供電。當(dāng)選擇使用輸入12 V電壓給開發(fā)板供電時,開關(guān)S1需打到12 V檔上。此供電系統(tǒng)的原理圖如圖2所示。
1.2 CAN總線與LIN總線設(shè)計
TJA1041高速CAN收發(fā)器通過接頭與MC9S12XS128的CAN總線引腳相連。考慮到CAN總線的不常使用,和功耗比較大,所以系統(tǒng)不但設(shè)計了這2種總線接口,為了方便又設(shè)計了J-CAN-SELECT接頭和J-LIN-Selector接頭。當(dāng)使用CAN總線時,用跳線帽把J-CAN-SELECT接頭選通,當(dāng)使用LIN總線時,用跳線帽把J-LIN-SELECT接頭選通。CAN總線原理圖(LIN總線原理圖略)如圖3所示。
1.3 通信接口設(shè)計
文中采用單片機與PC機之間的異步通信模式,將單片機看成另外一個PC機,只需3根線:發(fā)送線,接收線和固定公地線。由于MC9S12XS 128內(nèi)部集成有2個串口控制器,可以選用其中一個作為RS 232串口使用,另外一個作為485總線的控制器。單片機內(nèi)部TTL電平與RS 232信號電平之間的電平轉(zhuǎn)換選用MAXIM公司的MAX 232芯片。串口和485接口原理圖如圖4所示。
其中PS1為對應(yīng)的單片機上串行控制接口0的發(fā)送端,PS0為接口0的接收端。另外為了方便應(yīng)用,設(shè)計了USB轉(zhuǎn)串口電路,原理圖如圖5所示。由于MC9S12XS128內(nèi)部只集成有2個SCI控制器,所以USB轉(zhuǎn)串口,串口,LIN,485四種通信接口需要公用2個SCI控制模塊:串口與USB轉(zhuǎn)串口公用SCI0,485與LIN公用SCI1。USB協(xié)議轉(zhuǎn)換成串口通信協(xié)議選用PL2303芯片。
1.4 直流電機驅(qū)動電路
直流電機驅(qū)動電路采用組委會推薦的專用電機驅(qū)動芯片MC33886,驅(qū)動電路如圖6所示。其中,V1+接電池正極;VCC接系統(tǒng)+5 V;OUT+和OUT2-接直流電機;IN1和IN2控制MC33886輸出不同的值。
1.5 矩陣鍵盤按鍵識別
在MC9S12XS128單片機的I/O口設(shè)計4×4行列式鍵盤,采用程序掃描識別鍵號,當(dāng)有按鍵按下時,其鍵號顯示在共陰極LED數(shù)碼管上。其電路如圖7所示。在鍵盤的按鍵識別中通常采用“行掃描法”(逐行或列)掃描查詢法。判斷鍵盤中有無鍵按下時,將列線PT0~PT3置為輸出,將其中一條線置低電平其余3條線輸出高電平,然后檢測行線的狀態(tài)。只要有一行的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵為被拉低的低電平行線與4根列線中低電平線相交叉的對應(yīng)按鍵。若判斷所有行線均為高電平,則鍵盤中無鍵按下(具體可用查表的方法)。
但是此種方法單片機需要通過不停的掃描查詢,方可準(zhǔn)確的檢測到按鍵值。考慮到PP口有中斷功能所以可將這4個口設(shè)置成中斷的模式來獲得按鍵值,本設(shè)計中是將拉高的4位通過一個與門接到單片機的帶中斷的引腳上,這樣當(dāng)任意鍵按下時就會產(chǎn)生低電平發(fā)生中斷,這時單片機再進行按鍵判斷,從而無需一直查詢,減少了MCU的負(fù)荷量。
數(shù)碼管顯示電路采用共陰極使用兩個鎖存器74HC573分別接到PORTA口和PORTB口來實現(xiàn)。也可應(yīng)用液晶顯示接口:1602和12864接口顯示。
2 系統(tǒng)軟件設(shè)計
系統(tǒng)軟件采用C語言編寫,由于存在鍵盤陣列、數(shù)碼管顯示和液晶顯示,它可以完成較多的常規(guī)實驗項目。如LED流水燈實驗、基于PWM控制的蜂鳴器實驗、數(shù)碼管驅(qū)動、鍵盤驅(qū)動、1602液晶驅(qū)動、ATD轉(zhuǎn)換等多個實驗;還可以進行目前工業(yè)控制所常用的通信試驗,如串口,IIC,CAN,LIN,485總線實驗,基本具備單片機開發(fā)工業(yè)控制系統(tǒng)的能力。下面以電子鐘為例來介紹其軟件設(shè)計思想。
在電子鐘設(shè)計中對于時間的產(chǎn)生,選擇PIT0,即對周期中斷定時器0做初始化,使其每隔1 ms產(chǎn)生1次中斷,定義4個變量分別為:毫秒,秒,分,時,然后在中斷服務(wù)程序中根據(jù)這4個變量在實際中的關(guān)系更新這4個變量。在主程序中判斷鍵盤按鍵值和進行時間顯示,這里定義3個鍵值:1,2,3。軟件程序流程圖如圖8所示。
3 結(jié)語
本套單片機開發(fā)板為即將參加“飛思卡爾”競賽的學(xué)生提供了一個靈活高效的學(xué)習(xí)平臺,同時可為大學(xué)本科學(xué)生學(xué)習(xí)嵌入式開發(fā)系統(tǒng)以及為汽車電子行業(yè)工程師提供良好的開發(fā)平臺,具有較高的實用性和推廣價值。