單片機的數(shù)字量輸入與輸出方法總結(jié)
1.數(shù)字量輸入方法
由于數(shù)字量輸入過程中干擾的作用時間較短,因此在采集數(shù)字信號時,可多次重復(fù)采集,直到若干次采樣結(jié)果一致時,才認為其有效。例如通過A/D轉(zhuǎn)換器測量各種模擬量時,如果有干擾作用于模擬信號上,就會使A/D轉(zhuǎn)換結(jié)果偏離真實值。這時如果只采樣一次A/D轉(zhuǎn)換結(jié)果,就無法知道其是否真實可靠,而必須進行多次采樣,得到一個A/D轉(zhuǎn)換結(jié)果的數(shù)據(jù)系列,對這些數(shù)據(jù)系列進行各種數(shù)字濾波處理,最后才能得到一個可信度較高的結(jié)果值。如果對于同一個數(shù)據(jù)點,經(jīng)多次采樣后得到的信號值變化不定,說明此時的干擾特別嚴重,已經(jīng)超出允許的范圍,應(yīng)該立即停止采樣并給出報警信號。如果數(shù)字信號屬于開關(guān)量信號,如限位開關(guān)、操作按鈕等,則不能用多次采樣取平均值的方法,而必須保證每次采樣結(jié)果絕對一致才行。這時可按圖9.11編寫一個采樣子程序,程序中設(shè)置有采樣成功和采樣失敗標志。如果對同一開關(guān)量信號進行若干次采樣,其采樣結(jié)果完全一致,則成功標志置位,否則失敗標志置位。后續(xù)程序可通過判別這些標志來決定程序的流向。
2.數(shù)字量輸出方法
單片機系統(tǒng)的輸出中,有很多是數(shù)字量,如各種顯示器、步進電機或電磁閥的驅(qū)動信號等。即使是以模擬量輸出,也是經(jīng)過D/A轉(zhuǎn)換而獲得的。單片機給出了一個正確的數(shù)據(jù)后,由于外部干擾的作用有可能使輸出系統(tǒng)得到一個錯誤的數(shù)據(jù),從而使輸出系統(tǒng)發(fā)生誤動作。對于數(shù)字量輸出軟件抗干擾最有效的方法是重復(fù)輸出同一個數(shù)據(jù),重復(fù)周期應(yīng)盡量短。這樣輸出系統(tǒng)在得到一個被干擾的錯誤信號后,還來不及反應(yīng),一個正確的信號又來到了,從而可防止誤動作的產(chǎn)生。
在程序結(jié)構(gòu)上,可將輸出過程安排在監(jiān)控循環(huán)中,循環(huán)周期取得盡可能短,就能有效地防止輸出設(shè)備的錯誤動作。需要注意的是,經(jīng)過這種安排后,輸出功能是作為一個完整的模塊來執(zhí)行的。與這種重復(fù)輸出措施相對應(yīng),軟件設(shè)計中,還必須為各個外部輸出設(shè)備建立一個輸出暫存單元。每次將應(yīng)輸出的結(jié)果存入暫存單元中,然后再調(diào)用輸出功能模塊,將暫存單元的數(shù)據(jù)輸出,不管該數(shù)據(jù)是剛送來的,還是以前就有的。這樣可以讓每個外部設(shè)備不斷得到控制數(shù)據(jù),從而使干擾造成的錯誤狀態(tài)不能得以維持。在執(zhí)行輸出功能模塊時,應(yīng)將有關(guān)輸出接口芯片初始狀態(tài)也一并重新設(shè)置。因為干擾的作用可能使這些芯片的工作方式控制字發(fā)生變化,而不能實現(xiàn)正確的輸出功能,重新設(shè)置控制字就能避免這種錯誤,確保輸出功能的正確實現(xiàn)。
有些輸出設(shè)備具有增量控制特性,如自帶環(huán)型分配器和功率驅(qū)動器的步進電機組件,單片機只需輸出方向控制信號和步進脈沖信號。這時,方向控制信號就可以重復(fù)輸出,而步進脈沖信號是不能重復(fù)輸出的。每重復(fù)一次就要前進一步。因其對于這種情況,如果有位置控制功能(如光柵、磁尺等定位信號),便可實現(xiàn)閉環(huán)控制,本身有足夠的抗干擾性能,不用重復(fù)輸出。如果沒有檢測手段(即開環(huán)控制系統(tǒng)),建議采用軟件算法來實現(xiàn)環(huán)型分配器的功能,單片機直接輸出各相繞組的電位控制信號,經(jīng)光電隔離后傳送給功率驅(qū)動放大器,這時仍可采用重復(fù)輸出的方式來防止步進電機失步。只是這時的重復(fù)周期與步進電機的轉(zhuǎn)速之間要有嚴格的關(guān)系,如每個換相周期內(nèi)重復(fù)輸出兩三次。在步進電機以最高速度運轉(zhuǎn)時,CPU最好以主要機時來完成電機的控制。在作進給運動時,由于速度較慢,可以很容易地實現(xiàn)重復(fù)功能,減少失步,并有充足的時間來完成各種控制算法。
對于D/A轉(zhuǎn)換方式實現(xiàn)的輸出,因本質(zhì)上仍為數(shù)字量,同樣可以通過重復(fù)輸出的方式來提高輸出通道的抗干擾性能,在不影響反應(yīng)速度的前提下,在模擬輸出端接一適當?shù)腞C濾波電路(起到增加慣性的效果),配合重復(fù)輸出措施便能基本消除模擬輸出通道上的干擾信號。