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