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