袁國立
【摘 要】當前我國的電子技術得到了較快的發展,在當今復雜測控系統相關問題的解決當中,以PC機組成部分,多微處理器MCU為代表的主從分布式測控系統已然成為了當今重要的解決方案。
【關鍵詞】單機片軟件 串行口 擴展設計 51系列
中圖分類號:G4 文獻標識碼:A DOI:10.3969/j.issn.1672-0407.2017.22.006
51系列所提供的全雙工串行通信接口只有一個,這與當今相對復雜且實時性要求較高系統的需求不適應,因此需要對此開展串行口擴展,本文將介紹51系列單片機軟件在串行口擴展設計過程中所應用的方法和技術,并且介紹相應的源程序。
在電子技術發展的過程中,51系列單機片因為具備了比較獨特的串口通信功能,也增加了不同設備傳輸數據的便利性,但是因為該系列的單機片所提供的全雙工串行通信接口數量只有一個,所以與當前相對復雜的系統需求不太符合[1]。以我們當前所設計的智能密集架測控系統來看,一般需要兩個通信接口,一個需要和上位機配合接受通信,另一個則是需要進行條形碼掃描儀通信。本次設計的主要目的就是實現51系列單片機軟件串行口擴展的相關設計,解決其使用范圍受到較大限制的問題。
一、單機片相關工作原理闡釋
在多串口通信問題具體解決的過程中,其實本質上是對串口通信接收相關問題的解決,這主要是因為在設備發送信息的過程中,程序會控制設備發送信息的時間。串行數據接收的過程主要以下列內容為基礎:
首先采樣RXD線,速度為波特率16被,然后再將數據時間分為16份,在劃分時需要借助于4位二進制,檢測器一般需要選擇和采樣3個數值。位數據的確定需要從3個樣本當中選擇2個,為了減少產生的干擾,本次研究過程中所設計的模擬串口也是以遵循上述的相關過程。圖1為串行數據發送的具體過程。
我們在使用設備發送相應的數據時,第一個輸出的是“0”,然后數據線會經歷從高向低電平轉換的過程。外部發生中斷,0受到觸發之后也會發生中斷現象。單機片在對中斷進行響應之后,會對定時器為0的定時時間進行更改,設置為1位數據時間,為1.5倍。此時定時器0中斷被允許,而且外部中斷會關閉,中斷程序此時正式退出。在接到了中斷申請之后,計數器0的計數時間則會發生中斷,程序相應中斷之后會讀取此時的狀態,并且將這個狀態及所有相關的數據進行保存。在數據時間發生一定程度的改變之后,也就是在(3)時刻時,定時器又會申請中斷,在得到了程序的相應之后,會保存期狀態,經過多次的循環,程序就會將整個從D0到D7的數據全都接收到。
根據上述串行數據發送和接受的過程來看,想要使串行數據的接收功能得到發揮,就必須要將定時器0與外部中斷0之間進行有效的整合,而且這兩個要件的整合還不需要提供相應的硬件設備來作為支撐。
二、51系列單機片串行數據發送過程
在設備發送數據的過程中所有的行為都是主動行為,所以在經過了電路的合適切換之后,借助于單機片內部串行數據發送可以達到多路發送的目的[2]。圖2為具體多串行數據的發送示意圖:
根據圖2所顯示出的電路圖來看,串行數據流向必然會進行專門的控制,在本次設計的電路當中用來控制串行數據流向的正是P1.0和P1.1。P1.0和P1.1所處的狀態導致數據的流向也會發生相應的變化。如果P1.0位于高電平的條件下,那么串行數據必然會到TXD1方向,反之如果P1.1處于高電平的條件下,TXD2為數據流向的出口。
三、51系列單片機軟件的串行口擴展設計具體步驟分析
(一)串行口擴展設計所需要注意的內容
1.在串行口擴展設計的過程中,定時器是擴展串口的基礎,所以在具體設計的過程當中必須要盡可能的簡潔,如果條件允許盡量使用匯編語言來進行編程。
2.在接受完相應的字節后需要設置標志,而且在處理字節時要將其放在主程序當中進行處理,采用這樣的方式主要是為了避免在程序時間當中中斷程序所占較大,對相應其他中斷程序產生不良影響[3]。
3.硬件自己完成串口數據接受是標準的接收方式。在完成字節接受之后會申請自動中斷,其他的相關中斷程序也必須要足夠的簡單。
(二)51系列單機片串口擴展硬件具體設計方法
單機片的外設串行通信或者是PC機的外設通信所采用的總線標準接口常見類型為RS485或者RS422等。為了提高通信的可信性和可靠性,在選擇接口時需要考慮到多種因素,比如自身所具備的抗干擾能力、具體的通信距離、通信速率以及通信方式等。本次設計主要是對51系列單機片,即MCS51系列單機片,選擇其中比較具有代表性的單機片型號8751單機片為研究對象開展相應的串口擴展設計。所謂串口擴展設計就是需要在該芯片的基礎上要擴展新的獨立串口。在具體設計過程中一點對多點分時串口通信目標的實現需要借助于多路切換器CD4067來實現,而單機片和其他類型不同的接口之間的串口通信則需要借助于另外的電平轉換器,比如MAX488或者是MAX485等類型。
(三)51系列各功能模塊程序設計
在本次程序設計當中,對于51系列各功能模塊程序設計是以高級語言為基礎。
1.初始化程序設計。假設本次設計的數據格式為10位,包含起始和停止位以及其他的八個數據位,晶振頻率假設為18.5MHz。
2.終端接受程序具體設計:
3.第二串口接受程序(定時器與外部中斷0結合)具體設計步驟。
隨著電子技術的不斷發展,相應的電子系統也變得更加復雜多變。單機片作為被廣泛應用在各種系統當中的通信方式其重要性不言而喻。傳統的51系列單機片雖然為數據傳輸帶來了不少便利,但是全雙工串行通信接口只有一個,其越來越無法滿足多樣化和復雜化的系統需求。這就需要對51系列的單片機進行多串口擴展。本次設計研究當中所采用的單機片型號主要是8751單機片,對其工作原理,硬件和軟件程序等方面進行設計研究。通過研究發現擴展后的單機片更能滿足系統的需求,運行可靠穩定。
參考文獻
[1]侯進旺,楊曉晴.基于AT89S2051單片機串行通信接口的I/O擴展技術研究[J].現代電子技術,2015,38(07):160-162.
[2]周燕.基于S08單片機的工業控制板的設計[D].安徽大學,2012.
[3]何永泰.基于單片機ATmega128的嵌入式工業控制器設計[D].昆明理工大學,2005.endprint