一種三MCU系統(tǒng)的硬件實(shí)現(xiàn)
摘 要: 介紹以?xún)善?0C196KC為主處理MCU、一片89C51進(jìn)行動(dòng)態(tài)LED顯示的三MCU系統(tǒng)。兩80C196KC之間通過(guò)互訪(fǎng)數(shù)據(jù)存儲(chǔ)器進(jìn)行數(shù)據(jù)交換,80C196KC與89C51的通訊使用串行口。
關(guān)鍵詞: 單片機(jī) 多處理器 總線(xiàn)控制 存儲(chǔ)器共享
MCS96系列單片機(jī)是16位單片機(jī)。運(yùn)算速度高、I/0資源豐富、具有10位A/D轉(zhuǎn)換器,特別適合于實(shí)時(shí)處理、實(shí)時(shí)控制的各類(lèi)自動(dòng)控制系統(tǒng),如工業(yè)過(guò)程控制系統(tǒng)、伺服系統(tǒng)、分布式控制系統(tǒng)、變頻調(diào)速電機(jī)控制系統(tǒng)等。在國(guó)內(nèi)有成熟的開(kāi)發(fā)系統(tǒng)和穩(wěn)定的供貨來(lái)源,相關(guān)資料也非常豐富,開(kāi)發(fā)非常方便。
本文介紹的三MCU系統(tǒng),使用兩片80C196KC作數(shù)據(jù)處理及控制,一片89C51進(jìn)行顯示。應(yīng)用于液壓缸活塞桿的位移檢測(cè)控制[1]。
1 系統(tǒng)的總體結(jié)構(gòu)
系統(tǒng)的總體結(jié)構(gòu)如圖1所示。為了提高系統(tǒng)數(shù)據(jù)處理能力,使用兩片80C196KC作為主處理芯片。兩片80C196KC各自擴(kuò)展了程序存儲(chǔ)器ROM和數(shù)據(jù)存儲(chǔ)器RAM。不需要交換數(shù)據(jù)時(shí),兩片80C196KC獨(dú)立工作;當(dāng)需要交換數(shù)據(jù)時(shí),首先征求對(duì)方同意,在對(duì)方允許的情況下,通過(guò)雙向總線(xiàn)開(kāi)關(guān)訪(fǎng)問(wèn)對(duì)方的數(shù)據(jù)存儲(chǔ)器。
傳感器的信號(hào)接到80C196KC的A/D轉(zhuǎn)換器輸入端。
系統(tǒng)有兩種輸出:模擬量輸出和PWM輸出。這兩種輸出都通過(guò)80C196KC的PWM功能實(shí)現(xiàn)。
串行口是一個(gè)雙向數(shù)據(jù)通道,可接收其他設(shè)備或上位機(jī)來(lái)的數(shù)字信號(hào),也可將測(cè)量結(jié)果和液壓缸本身的一些狀態(tài)信息傳送給其他設(shè)備或上位機(jī)。
系統(tǒng)測(cè)量結(jié)果的顯示使用LED數(shù)碼管,顯示數(shù)據(jù)由80C196KC通過(guò)串行口傳送。顯示使用動(dòng)態(tài)方式,控制芯片使用89C51單片機(jī)。89C51單片機(jī)把80C196KC送來(lái)的數(shù)據(jù)先進(jìn)行運(yùn)算,轉(zhuǎn)化為顯示用字型碼,一路通過(guò)I/O口送到顯示譯碼驅(qū)動(dòng)器,另一路完成位選通控制。
2 80C196KC之間相互訪(fǎng)問(wèn)數(shù)據(jù)存儲(chǔ)器的硬件實(shí)現(xiàn)方法
2.1 80C196KC提供的總線(xiàn)控制信號(hào)
80C196KC提供了一組總線(xiàn)控制信號(hào)和。它們支持總線(xiàn)交換協(xié)議,可用于共享存儲(chǔ)器的多處理器系統(tǒng)或DMA傳輸。
是總線(xiàn)占用信號(hào),80C196KC的輸入信號(hào)由外部設(shè)備或其他單片機(jī)、微處理器發(fā)出。有效,表示外設(shè)要求占用系統(tǒng)總線(xiàn)。
為總線(xiàn)占用應(yīng)答信號(hào)由80C196KC發(fā)出。當(dāng)80C196KC檢測(cè)到有效后,就釋放總線(xiàn)和有關(guān)的控制信號(hào),并向?qū)Ψ桨l(fā)出有效作為應(yīng)答信號(hào),表示已經(jīng)放棄了對(duì)總線(xiàn)的控制權(quán)。
外設(shè)訪(fǎng)問(wèn)80C196KC的存儲(chǔ)器結(jié)束后,使無(wú)效,并交還對(duì)系統(tǒng)總線(xiàn)的控制權(quán)。80C196KC撤去應(yīng)答信號(hào)(使之無(wú)效),重新獲得對(duì)總線(xiàn)的控制權(quán)。
在系統(tǒng)總線(xiàn)占用期間,80C196KC仍可以繼續(xù)執(zhí)行內(nèi)部ROM/EPROM中的程序。這時(shí)若產(chǎn)生了外部操作,CPU就會(huì)把該外部總線(xiàn)懸掛起來(lái),并發(fā)出(總線(xiàn)請(qǐng)求)有效信號(hào)。在撤消有效信號(hào)的同時(shí),80C196KC也撤消了信號(hào)。
當(dāng)80C196KC應(yīng)答了總線(xiàn)占用請(qǐng)求時(shí),地址/數(shù)據(jù)總線(xiàn)、和INST的三態(tài)輸出緩沖器被置為高阻態(tài),完全放棄了對(duì)總線(xiàn)的占用和控制。
2.2 80C196KC互訪(fǎng)數(shù)據(jù)存儲(chǔ)器的方法
由于使用外部程序存儲(chǔ)器,當(dāng)一片80C196KC的總線(xiàn)應(yīng)答信號(hào)有效、此片CPU放棄總線(xiàn)控制權(quán)的第二個(gè)機(jī)器周期,總線(xiàn)請(qǐng)求信號(hào)有效出現(xiàn)。為了不讓此信號(hào)干擾另一片CPU對(duì)總線(xiàn)的使用,使本片CPU的P1.0與對(duì)方的相或,如圖2所示。在申請(qǐng)總線(xiàn)占用前,先對(duì)本CPU的P1.0置1,屏蔽對(duì)方的信號(hào)。直到本CPU使用總線(xiàn)完畢,再使本CPU的P1.0置0,釋放對(duì)方的信號(hào)。
總線(xiàn)應(yīng)答信號(hào)由P1.2檢測(cè)。
總線(xiàn)開(kāi)關(guān)使用雙向總線(xiàn)驅(qū)動(dòng)器74LS245,每片可驅(qū)動(dòng)8路信號(hào),共使用3片。由于三片74LS245屬于同一個(gè)開(kāi)關(guān)的3個(gè)部分,所以三片74LS245的使能端E連在一起,控制端DIR也連在一起。
74LS245只有在總線(xiàn)應(yīng)答信號(hào)有效后才能起作用,所以將兩片80C196KC的相與后接在74LS245的使能端這樣,當(dāng)任何一片80C196KC的有效時(shí),74LS245就進(jìn)入使能狀態(tài)。
74LS245控制數(shù)據(jù)方向的DIR端接在80C196KC(1)的端。當(dāng)80C196KC(1)的有效時(shí),80C196KC(1)的數(shù)據(jù)訪(fǎng)問(wèn)指向80C196KC(2)的數(shù)據(jù)存儲(chǔ)器;當(dāng)80C196KC(2)的有效時(shí),80C196KC(2)的數(shù)據(jù)訪(fǎng)問(wèn)指向80C196KC(1)的數(shù)據(jù)存儲(chǔ)器。
在訪(fǎng)問(wèn)對(duì)方的數(shù)據(jù)存儲(chǔ)器時(shí),必須保證仍在訪(fǎng)問(wèn)本方的程序存儲(chǔ)器,否則程序?qū)o(wú)法正常進(jìn)行。為了實(shí)現(xiàn)這一點(diǎn),采用圖3的連接方法。地址線(xiàn)最高位P4.7(AD15)不直接連在程序存儲(chǔ)器28256的片選端,而是與的反向信號(hào)相或后再接在28256的片選端。這樣,當(dāng)本方CPU應(yīng)答對(duì)方占用總線(xiàn)信號(hào)后,本方信號(hào)有效,經(jīng)過(guò)非門(mén)后變成高電平,28256的片選端也為高電平,使本方程序存儲(chǔ)器28256無(wú)法選中,只能選中本方數(shù)據(jù)存儲(chǔ)器。從而實(shí)現(xiàn)在程序運(yùn)行正常的情況下訪(fǎng)問(wèn)對(duì)方的數(shù)據(jù)存儲(chǔ)器。
與程序存儲(chǔ)器相同,數(shù)據(jù)存儲(chǔ)器也面臨著同樣的問(wèn)題:在需要訪(fǎng)問(wèn)對(duì)方的數(shù)據(jù)存儲(chǔ)器時(shí),要使本方的數(shù)據(jù)存儲(chǔ)器無(wú)效。數(shù)據(jù)存儲(chǔ)器6264有兩個(gè)使能端:CS1和CS2。CS1作為控制端已經(jīng)與80C196KC的地址最高位通過(guò)非門(mén)相連,可以使用CS2完成這個(gè)功能,具體連接方法如圖4所示。每一片80C196KC的數(shù)據(jù)存儲(chǔ)器的CS2都與對(duì)方的相連。這樣,當(dāng)本方CPU出讓總線(xiàn)控制權(quán)時(shí),有效,使對(duì)方數(shù)據(jù)存儲(chǔ)器6264的CS2端為低電平,進(jìn)入非使能狀態(tài)。對(duì)方CPU在訪(fǎng)問(wèn)數(shù)據(jù)存儲(chǔ)器時(shí),訪(fǎng)問(wèn)的就是本方的數(shù)據(jù)存儲(chǔ)器。
3 PWM和模擬量輸出
在數(shù)字系統(tǒng)中,模擬量輸出一般是使用D/A轉(zhuǎn)換器,但80C196KC具有PWM輸出功能,可通過(guò)此功能獲得模擬量輸出。通過(guò)PWM獲得模擬量輸出的原理圖如圖5所示。由于內(nèi)部脈寬調(diào)制器輸出的是TTL電平的調(diào)制脈沖,為了獲得高精度的模擬量輸出,需要進(jìn)行緩沖,使PWM信號(hào)的電平擺幅變?yōu)?~5V。緩沖選用帶有TTL電平到CMOS電平轉(zhuǎn)換功能的CMOS型反向緩沖器CD4049,緩沖之后進(jìn)行濾波。
4 LED顯示
LED顯示部分由兩排LED組成:第一排6位數(shù)字,1位符號(hào)位;第二排5位數(shù)字,1位符號(hào)位。顯示部分的LED位數(shù)較多,為了簡(jiǎn)化電路,減少能量消耗,用動(dòng)態(tài)顯示方式。由于動(dòng)態(tài)顯示方式比較消耗CPU資源,用一片89C51專(zhuān)門(mén)負(fù)責(zé)顯示之前的數(shù)據(jù)變換和LED的動(dòng)態(tài)掃描。這一片89C51與一片80C196KC通過(guò)串行口進(jìn)行數(shù)據(jù)傳遞。這樣,顯示就不再占用兩片80C196KC的資源,系統(tǒng)的編程也非常方便。
本文介紹的三MCU處理系統(tǒng)的兩片80C196KC的存儲(chǔ)器擴(kuò)展使用獨(dú)立編址方式,所以?xún)善?0C196KC的地址空間全部可用,非常適合于程序和數(shù)據(jù)量比較大的場(chǎng)合。每片80C196KC都具有一個(gè)A/D轉(zhuǎn)換器,可同時(shí)進(jìn)行兩路轉(zhuǎn)換和處理,大大增加了處理速度。本系統(tǒng)應(yīng)用于液壓缸活塞桿的位移檢測(cè),取得了比較好的效果。
參考文獻(xiàn)
1 潘 峰,丁 凡.基于超松弛法的行程傳感液壓缸磁路結(jié)構(gòu)的研究.動(dòng)力工程,2001;10
2 陳隆道,許 昌,周箭. 智能儀器的雙CPU技術(shù). 電測(cè)與儀表,1998;35(1)
3 孫涵芳. Intel 16位單片機(jī).北京:北京航空航天大學(xué)出版社,1995.11
4 何立民.MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì).系統(tǒng)配置與接口技術(shù).北京:北京航空航天大學(xué)出版社,1993.7
5 余永權(quán).ATMEL89系列Flash單片機(jī)原理及應(yīng)用.北京:電子工業(yè)出版社,1997.10