昝鷺鷥 張晗 冀向陽 何敬武
摘 要:在現(xiàn)在的機(jī)電自動(dòng)化產(chǎn)品中,控制系統(tǒng)大多是單片機(jī)。對(duì)于一些簡(jiǎn)單的機(jī)電傳動(dòng)系統(tǒng)或是機(jī)電一體化設(shè)備,往往采用的是一個(gè)單片機(jī)作為主控板,配合動(dòng)力元件,如:舵機(jī)、直流電機(jī)、步進(jìn)電機(jī)、伺服電機(jī)等。帶動(dòng)機(jī)械元件,如:連桿,絲杠,光軸、齒輪、凸輪等運(yùn)動(dòng),通過這些機(jī)械元件運(yùn)動(dòng)的相互配合完成所期望的運(yùn)動(dòng)。而對(duì)于一些復(fù)雜的機(jī)電傳動(dòng)系統(tǒng)或是機(jī)電一體化設(shè)備,單一的單片機(jī)已經(jīng)不能滿足我們的需求,因?yàn)橐粋€(gè)單片機(jī)上的資源,如I\O口,定時(shí)器,中斷源的數(shù)目有限。那么就要采用兩個(gè)或是多個(gè)單片機(jī)組成控制系統(tǒng)進(jìn)行控制機(jī)械進(jìn)行運(yùn)動(dòng)。采用兩個(gè)以上的單片機(jī)不等不考慮的問題就是單片機(jī)之間的通信。在常規(guī)的方法中往往采用的是雙機(jī)通信協(xié)議或是多機(jī)通訊協(xié)議。但是這些協(xié)議有些復(fù)雜,通過我們組的學(xué)習(xí)與實(shí)踐種提出了一中簡(jiǎn)易雙機(jī)通訊的思想,并且在試驗(yàn)和實(shí)踐中得到了驗(yàn)證。
關(guān)鍵詞:簡(jiǎn)易的;雙機(jī)通訊;
在單片機(jī)之間的通訊方式中的雙機(jī)通訊,他門要遵循一些固定的思維方式。而我門組對(duì)于雙機(jī)通訊方式都提出了一種簡(jiǎn)單的算法思想。
對(duì)于單片機(jī)雙機(jī)通訊,它實(shí)際上是串口通訊,但是其中的關(guān)鍵就是單片機(jī)之間要共地。因?yàn)樵趩纹瑱C(jī)之間在傳遞復(fù)雜信息時(shí),實(shí)際上是機(jī)器碼之間的傳遞,而機(jī)器碼值有0和1。0和1在單片機(jī)之間進(jìn)行通訊時(shí),實(shí)際上是通過電壓等電信號(hào)的高低電平來表示,共地實(shí)質(zhì)是讓兩個(gè)單片機(jī)之間共低電平。這樣穿點(diǎn)的高低電平也就是機(jī)器碼中的0和1才會(huì)相互識(shí)別否則就會(huì)出現(xiàn)以通信失敗或是其他的一些問題。這在工程或是項(xiàng)目中是不允許的。對(duì)于串口通訊實(shí)際上用的是串口中斷,通常的做法是通過標(biāo)志位來引發(fā)串口中斷。在中斷中進(jìn)行通訊,也就是單片機(jī)之間的交互信息。而單片機(jī)的串口通訊還要保證兩個(gè)單片機(jī)的波特率保持一致。這樣做的目的是為了保證單片機(jī)接收的數(shù)據(jù)和另一個(gè)單片機(jī)發(fā)送的數(shù)據(jù)一致。否則就會(huì)出現(xiàn)現(xiàn)接收的數(shù)據(jù)和發(fā)送的數(shù)據(jù)不一致,從而導(dǎo)致通信失敗。對(duì)于波特率又要牽涉到定時(shí)器中斷。所以單片機(jī)之間的雙機(jī)通訊牽涉到的內(nèi)容還是很多的。使用時(shí)需要設(shè)置很多的寄存器和特殊功能位的值。
對(duì)于單片機(jī)雙機(jī)通訊我們組提出了一個(gè)簡(jiǎn)易的思想,不用設(shè)置那么多的寄存器和特殊功能位就可以進(jìn)行單片機(jī)之間的雙機(jī)通訊。當(dāng)然我們的這個(gè)算法思想也是針對(duì)一些簡(jiǎn)單的工程或是項(xiàng)目。我們的想法是再進(jìn)行單片機(jī)雙機(jī)通訊時(shí),多半是主機(jī)發(fā)送命令,從機(jī)接收命令去執(zhí)行,在執(zhí)行完畢時(shí)向主機(jī)傳遞相關(guān)信息表示該命令已經(jīng)執(zhí)行完畢。(這是簡(jiǎn)單工程常用的)。那么只要讓主機(jī)給從機(jī)一個(gè)信號(hào),讓從機(jī)檢測(cè)到,并且知道要去執(zhí)行怎洋的動(dòng)作,當(dāng)從機(jī)執(zhí)行完相關(guān)動(dòng)作,向主機(jī)發(fā)送一個(gè)信號(hào),告訴主機(jī)命令已經(jīng)執(zhí)行完畢就可以了。這個(gè)信號(hào)在電控當(dāng)中一般想到的是電信號(hào)。我們組選用的是電壓信號(hào)。通過實(shí)驗(yàn)得知,當(dāng)給單片機(jī)I/O口接高電平(5V,且電源與單片機(jī)共地)時(shí),單片機(jī)可以檢測(cè)到該值,并且這個(gè)值是1;當(dāng)給單片機(jī)I/O口低電平是(0V,電源與單片機(jī)共地)時(shí),單片機(jī)可以檢測(cè)到該值,并檢測(cè)到的結(jié)果是0。有了以上的基礎(chǔ),我們的算法思想就誕生了。
我們的簡(jiǎn)易雙機(jī)通訊思想是:讓兩個(gè)單片機(jī)共地,兩個(gè)單片機(jī)得所有普通的I/O口初始化的值全部為1,及為高電平。對(duì)于命令少或是要求的功能少的項(xiàng)目,我們可通過I/O口的高電平來進(jìn)行信傳遞,主從機(jī)的單個(gè)I/O引腳之間用杜邦線連接。一個(gè)I/O引腳用來傳遞一種命令,一個(gè)I/O引腳用來表示從機(jī)的動(dòng)作已經(jīng)執(zhí)行完畢。具體的執(zhí)行方式是主機(jī)將其一個(gè)I/O的一位置低電平,與該I/O連接的從機(jī)I/O的相應(yīng)位檢測(cè)到低電平,說明從機(jī)已經(jīng)檢測(cè)到主機(jī)已經(jīng)向我傳遞了一個(gè)命令,至于這是一個(gè)什么樣的命令可以根據(jù)從機(jī)該位的名稱來識(shí)別或是認(rèn)知,并去執(zhí)行相應(yīng)的命令,在動(dòng)作執(zhí)行完畢的時(shí)候,從機(jī)將其一個(gè)I/O的一位置低電平,與之先連接的主機(jī)的I/O的相應(yīng)位檢測(cè)到,表示從機(jī)已經(jīng)執(zhí)行完一個(gè)命令,之后主機(jī)可以通過相同的方式向從機(jī)繼續(xù)發(fā)送命令。當(dāng)需要執(zhí)行的命令很多的時(shí)候,由于單片機(jī)的位的數(shù)目是有限的,有可能不滿足我們的需求,我們可以通過使用一個(gè)完整的I/O來進(jìn)行單片機(jī)之間的信息交互。一個(gè)完整的I/O一共有八位,其值可以從00000000到11111111之間進(jìn)行變化,共有256種可能,及可以傳遞256中信息。如果這個(gè)I/O是用來發(fā)送指令的,那么理論上可以傳遞256種命令。若是該I/O是用來向主機(jī)傳遞信息時(shí),理論上可以向主機(jī)主機(jī)傳遞256種信息。對(duì)于一般的工程已經(jīng)足夠使用。倘若還是不能滿足我們的需求,那么我們可以采用多個(gè)I/O來進(jìn)行信息交流。例如采用兩個(gè)I/O來傳遞信息時(shí),理論上可以傳遞256*256種信息,及65536種信息。
當(dāng)然我們這種簡(jiǎn)易的雙機(jī)通訊只是適用于一些簡(jiǎn)單的要求,對(duì)于要求非常嚴(yán)謹(jǐn)?shù)耐ㄐ?,?jiǎn)易適用常規(guī)的方法。
參考文獻(xiàn):
[1]溫偉強(qiáng), 梁浩源, 周敬泉. 實(shí)現(xiàn)PC機(jī)與多臺(tái)單片機(jī)實(shí)時(shí)通訊的新方法[J]. 計(jì)算機(jī)應(yīng)用, 1997(1):39-41.
[2]韓淑玲, 魯昆生. 從機(jī)可主呼的MCS—51單片機(jī)多機(jī)通信[J]. 工業(yè)和信息化教育, 1994(1):50-52.
[3]韓淑玲, 魯昆生. 增強(qiáng)MCS-51單片機(jī)多機(jī)通信的功能[J]. 電子技術(shù)應(yīng)用, 1993(3):21-23.
作者簡(jiǎn)介:
昝鷺鷥,1995年11月18日,男,漢族,天津市人;職稱:學(xué)生;單位:鄭州大學(xué);研究方向:車輛方向
張晗,1997年6月27號(hào),女,漢族,河南省人;職稱:學(xué)生;單位:鄭州大學(xué);研究方向:車輛方向
冀向陽,1996年6月7日,男,漢族,河南省人;職稱:學(xué)生;單位:鄭州大學(xué);研究方向:車輛方向
何敬武,1996年10月10日,男,漢族,河南省人;職稱:學(xué)生;單位:鄭州大學(xué);研究方向:車輛方向