基于雙單片機(jī)的信號(hào)處理系統(tǒng)設(shè)計(jì)
CY7C132允許兩個(gè)CPU同時(shí)讀取任何存儲(chǔ)單元(包括同時(shí)讀同一地址單元),但不允許同時(shí)寫或一讀一寫同一地址單元。雙端口RAM中引入了仲裁邏輯(忙邏輯)電路來解決這個(gè)問題:當(dāng)左右兩端處理器同時(shí)寫入或一讀一寫同一地址單元時(shí),先穩(wěn)定的地址端口通過仲裁邏輯電路優(yōu)先讀寫,同時(shí)內(nèi)部電路使另一個(gè)端口的BUSY信號(hào)有效,并在內(nèi)部禁止對(duì)方訪問,直到本端口操作結(jié)束。BUSY信號(hào)可以作為中斷源指明本次操作非法。需要注意的是:這種方法當(dāng)CPU發(fā)生插入等待時(shí),可能會(huì)降低程序效率,不可應(yīng)用于頻繁產(chǎn)生插入中斷的場(chǎng)合。
該系統(tǒng)設(shè)計(jì)采用存取時(shí)間為55 ns的CY7C132,從單片機(jī)工作速度在μs級(jí),主單片機(jī)工作速度在ms級(jí),雙方同時(shí)讀取雙口RAM的概率較小,上述沖突解決方案可以滿足實(shí)際需求。在主從單片機(jī)啟動(dòng)工作后,為了防止主單片機(jī)的空讀,即從單片機(jī)的首次寫入時(shí)間晚于主單片機(jī)的首次讀入時(shí)間,將存儲(chǔ)器的首地址設(shè)置為起始標(biāo)志位,通過主單片機(jī)讀寫該為狀態(tài)決定是否將讀取下一位的存儲(chǔ)位。
2 具體電路設(shè)計(jì)
根據(jù)上述系統(tǒng)總體結(jié)構(gòu)框圖和功能設(shè)計(jì),繪制信號(hào)處理系統(tǒng)的電路原理圖,如圖2所示。
單片機(jī)的控制或檢測(cè)工作是通過I/O引腳實(shí)現(xiàn)的。單片機(jī)1(U1)中,PO和P2引腳以及P3.6與P3.7引腳用來與外部數(shù)據(jù)存儲(chǔ)器CY7C132交換數(shù)據(jù);P1.0、P1.1和P3.4引腳是與A/D轉(zhuǎn)換器ADC0832連接,控制A/D轉(zhuǎn)換操作以及讀取轉(zhuǎn)換結(jié)果:P3.2(外部中斷0)引腳與單片機(jī)2(V2)的引腳P1.0相互通信。單片機(jī)2的I/O引腳的使用情況與單片機(jī)1類似。其中特別需要指出的是:?jiǎn)纹瑱C(jī)2的P1.2引腳連接至CY7C132的BUSY引腳;而P3.0與P3.1是串口通信引腳,連接至MAX232。
CY7C132是雙口RAM,但是其任意一端的地址線、數(shù)據(jù)線以及控制線的連接方法與一般RAM幾乎沒有區(qū)別,2片單片機(jī)與CY7C132的地址線和數(shù)據(jù)線采用相同的連接方法。以單片機(jī)1為例進(jìn)行說明,CY7C132的內(nèi)部存儲(chǔ)空間為2KB,因此,其地址空間為0000H~07FFH。單片機(jī)的I/O口要提供11根地址線,除去P0口還需占用P2.0、P2.1、P2.2端。該系統(tǒng)設(shè)計(jì)僅使用單片機(jī)AT89S51的外部RAM,因此不存在片選問題。這里采用線選法,P2.3直接與CY7C132的CS相連。
另外,基于以下原因,單片機(jī)1與單片機(jī)2使用了不同頻率的外部晶振:1)單片機(jī)AT89S51支持的頻率有限,被選擇的晶振頻率必須符合要求;2)由于AT89S51使用機(jī)器周期作為其工作基準(zhǔn),在使用外部振蕩電路的情況下,該單片機(jī)是以晶振頻率除以12得到的數(shù)值作為機(jī)器周期,所以在單片機(jī)1需要定時(shí)器的情況下,晶振頻率要便于定時(shí)器的設(shè)置;3)單片機(jī)2需要和計(jì)算機(jī)進(jìn)行串口通信,晶振頻率要便于串口通信中波特率的設(shè)置。因此,單片機(jī)1與單片機(jī)2的晶振頻率分別選擇了12 MHz和11.059 2 MHz。
3 系統(tǒng)軟件設(shè)計(jì)
該系統(tǒng)軟件設(shè)計(jì)使用的是匯編語言。匯編語言的優(yōu)點(diǎn)是:編寫的程序存儲(chǔ)空間小,運(yùn)行速度快,程序效率高。另外,匯編語言編寫的程序能直接管理和控制硬件設(shè)備。匯編語言編寫的程序并不能直接為單片機(jī)所使用,必須使用編譯器編譯。本系統(tǒng)使用Keil C5l V7.09評(píng)估版。
3.1 單片機(jī)主程序
單片機(jī)1使用內(nèi)部RAM的20H.1作為A/D轉(zhuǎn)換標(biāo)志位,當(dāng)標(biāo)志位被置1時(shí),主程序中的A/D轉(zhuǎn)換子程序不會(huì)運(yùn)行;當(dāng)該標(biāo)志位被置0時(shí),A/D轉(zhuǎn)換子程序才可以執(zhí)行。單片機(jī)1的主程序執(zhí)行過程,見圖3(a)。單片機(jī)2用內(nèi)部RAM的20H.1作為程序啟動(dòng)標(biāo)志位,當(dāng)標(biāo)志位被置1時(shí),主程序不會(huì)運(yùn)行;當(dāng)該標(biāo)志位被置0時(shí),主程序才可以執(zhí)行。在主程序開始運(yùn)行后,從外部數(shù)據(jù)寄存器中讀入數(shù)據(jù),然后關(guān)閉串口中斷,通過查詢方式向串口寫入數(shù)據(jù),然后再打開串口中斷。單片機(jī)2的主程序執(zhí)行過程,見圖3(b)。本文引用地址:http://www.ex-cimer.com/article/173059.htm
3.2 數(shù)字濾波子程序
算術(shù)平均值濾波的原理是對(duì)于連續(xù)采樣的n個(gè)數(shù)據(jù),尋找一個(gè)數(shù)值y(k),使該值與采樣值之間誤差的平方和最?。?
式中,y(k)是第k次采樣時(shí),N個(gè)采樣值的平均值,X(i)是第i次采樣值。
算術(shù)平均值濾波適用于被測(cè)信號(hào)在某一數(shù)字范圍附近作上下波動(dòng)的場(chǎng)合。該方法將干擾的影響平攤到每個(gè)測(cè)量值。采樣數(shù)n決定了抗干擾的能力,n越大,抗干擾性能越好,但是,n值過大,系統(tǒng)的靈敏度會(huì)降低。算術(shù)平均值濾波對(duì)周期性干擾有較好的抑制作用,但對(duì)脈沖性干擾作用不大。
中值濾波算法是對(duì)某一被測(cè)參數(shù)連續(xù)采樣n次(一般n取奇數(shù))。n次采樣值按照大小排列,取中間值作為本次采樣值。中值濾波算法能有效克服因偶然因素引起的波動(dòng)干擾。對(duì)于溫度、液體表面等變化緩慢的被測(cè)參數(shù),能收到良好的濾波效果。中值濾波子程序和算術(shù)平均值濾波子程序流程見圖4。
4 實(shí)驗(yàn)數(shù)據(jù)
在實(shí)驗(yàn)過程中,測(cè)試平臺(tái)的輔助工具包括,可提供±5 V輸出的WJ7103型直流穩(wěn)壓電源,美國(guó)Tektronic公司的AFG3021型函數(shù)發(fā)生器。首先,信號(hào)函數(shù)發(fā)生器產(chǎn)生直流信號(hào)通過信號(hào)處理單元電路板被傳輸?shù)焦た貦C(jī);其次,被測(cè)數(shù)據(jù)通過串口助手顯示并以文本格式(txt)存儲(chǔ)在工控機(jī)中;最后,被測(cè)數(shù)據(jù)通過MATLAB軟件以分別以圖像的形式顯示和十進(jìn)制數(shù)的格式記錄。
在0 V信號(hào)輸入的條件下,信號(hào)處理單元的采樣結(jié)果(隨機(jī)取樣1 000次)見圖5。圖中的(1)(2)(3)分別表示單片機(jī)1在沒有使用數(shù)字濾波算法,采用中值濾波算法和算術(shù)平均值濾波算法的條件下得到的輸出結(jié)果。在理想情況下,采樣值應(yīng)該是0,而記錄的采樣結(jié)果與理想值存在誤差。
評(píng)論