武曉雪
摘 要:在現(xiàn)在的機(jī)電自動化產(chǎn)品中,控制系統(tǒng)大多是單片機(jī)。對于一些簡單的機(jī)電傳動系統(tǒng)或是機(jī)電一體化設(shè)備,往往采用的是一個(gè)單片機(jī)作為主控板,配合動力元件,如:舵機(jī)、直流電機(jī)、步進(jìn)電機(jī)、伺服電機(jī)等。帶動機(jī)械元件,如:連桿,絲杠,光軸、齒輪、凸輪等運(yùn)動,通過這些機(jī)械元件運(yùn)動的相互配合完成所期望的運(yùn)動。而對于一些復(fù)雜的機(jī)電傳動系統(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)動。采用兩個(gè)以上的單片機(jī)不等不考慮的問題就是單片機(jī)之間的通信。在常規(guī)的方法中往往采用的是雙機(jī)通信協(xié)議或是多機(jī)通訊協(xié)議。但是這些協(xié)議有些復(fù)雜,通過我們組的學(xué)習(xí)與實(shí)踐種提出了一中簡易雙機(jī)通訊的思想,并且在試驗(yàn)和實(shí)踐中得到了驗(yàn)證。
關(guān)鍵詞:簡易的,雙機(jī)通訊
在單片機(jī)之間的通訊方式中的雙機(jī)通訊,他門要遵循一些固定的思維方式。而我門組對于雙機(jī)通訊方式都提出了一種簡單的算法思想。
對于單片機(jī)雙機(jī)通訊,它實(shí)際上是串口通訊,但是其中的關(guān)鍵就是單片機(jī)之間要共地。因?yàn)樵趩纹瑱C(jī)之間在傳遞復(fù)雜信息時(shí),實(shí)際上是機(jī)器碼之間的傳遞,而機(jī)器碼值有0和1。0和1在單片機(jī)之間進(jìn)行通訊時(shí),實(shí)際上是通過電壓等電信號的高低電平來表示,共地實(shí)質(zhì)是讓兩個(gè)單片機(jī)之間共低電平。這樣穿點(diǎn)的高低電平也就是機(jī)器碼中的0和1才會相互識別否則就會出現(xiàn)以通信失敗或是其他的一些問題。這在工程或是項(xiàng)目中是不允許的。對于串口通訊實(shí)際上用的是串口中斷,通常的做法是通過標(biāo)志位來引發(fā)串口中斷。在中斷中進(jìn)行通訊,也就是單片機(jī)之間的交互信息。而單片機(jī)的串口通訊還要保證兩個(gè)單片機(jī)的波特率保持一致。這樣做的目的是為了保證單片機(jī)接收的數(shù)據(jù)和另一個(gè)單片機(jī)發(fā)送的數(shù)據(jù)一致。否則就會出現(xiàn)現(xiàn)接收的數(shù)據(jù)和發(fā)送的數(shù)據(jù)不一致,從而導(dǎo)致通信失敗。對于波特率又要牽涉到定時(shí)器中斷。所以單片機(jī)之間的雙機(jī)通訊牽涉到的內(nèi)容還是很多的。使用時(shí)需要設(shè)置很多的寄存器和特殊功能位的值。
對于單片機(jī)雙機(jī)通訊我們組提出了一個(gè)簡易的思想,不用設(shè)置那么多的寄存器和特殊功能位就可以進(jìn)行單片機(jī)之間的雙機(jī)通訊。當(dāng)然我們的這個(gè)算法思想也是針對一些簡單的工程或是項(xiàng)目。我們的想法是再進(jìn)行單片機(jī)雙機(jī)通訊時(shí),多半是主機(jī)發(fā)送命令,從機(jī)接收命令去執(zhí)行,在執(zhí)行完畢時(shí)向主機(jī)傳遞相關(guān)信息表示該命令已經(jīng)執(zhí)行完畢。(這是簡單工程常用的)。那么只要讓主機(jī)給從機(jī)一個(gè)信號,讓從機(jī)檢測到,并且知道要去執(zhí)行怎洋的動作,當(dāng)從機(jī)執(zhí)行完相關(guān)動作,向主機(jī)發(fā)送一個(gè)信號,告訴主機(jī)命令已經(jīng)執(zhí)行完畢就可以了。這個(gè)信號在電控當(dāng)中一般想到的是電信號。我們組選用的是電壓信號。通過實(shí)驗(yàn)得知,當(dāng)給單片機(jī)I/O口接高電平(5V,且電源與單片機(jī)共地)時(shí),單片機(jī)可以檢測到該值,并且這個(gè)值是1;當(dāng)給單片機(jī)I/O口低電平是(0V,電源與單片機(jī)共地)時(shí),單片機(jī)可以檢測到該值,并檢測到的結(jié)果是0。有了以上的基礎(chǔ),我們的算法思想就誕生了。
我們的簡易雙機(jī)通訊思想是:讓兩個(gè)單片機(jī)共地,兩個(gè)單片機(jī)得所有普通的I/O口初始化的值全部為1,及為高電平。對于命令少或是要求的功能少的項(xiàng)目,我們可通過I/O口的高電平來進(jìn)行信傳遞,主從機(jī)的單個(gè)I/O引腳之間用杜邦線連接。一個(gè)I/O引腳用來傳遞一種命令,一個(gè)I/O引腳用來表示從機(jī)的動作已經(jīng)執(zhí)行完畢。具體的執(zhí)行方式是主機(jī)將其一個(gè)I/O的一位置低電平,與該I/O連接的從機(jī)I/O的相應(yīng)位檢測到低電平,說明從機(jī)已經(jīng)檢測到主機(jī)已經(jīng)向我傳遞了一個(gè)命令,至于這是一個(gè)什么樣的命令可以根據(jù)從機(jī)該位的名稱來識別或是認(rèn)知,并去執(zhí)行相應(yīng)的命令,在動作執(zhí)行完畢的時(shí)候,從機(jī)將其一個(gè)I/O的一位置低電平,與之先連接的主機(jī)的I/O的相應(yīng)位檢測到,表示從機(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種信息。對于一般的工程已經(jīng)足夠使用。倘若還是不能滿足我們的需求,那么我們可以采用多個(gè)I/O來進(jìn)行信息交流。例如采用兩個(gè)I/O來傳遞信息時(shí),理論上可以傳遞256*256種信息,及65536種信息。
當(dāng)然我們這種簡易的雙機(jī)通訊只是適用于一些簡單的要求,對于要求非常嚴(yán)謹(jǐn)?shù)耐ㄐ?,簡易適用常規(guī)的方法。
參考文獻(xiàn):
[1].曾增烽, 劉浩, 李雪. 基于51單片機(jī)的串行通信協(xié)議的實(shí)現(xiàn)[J]. 硅谷, 2009(13):26.
[2].梅小華. 提高51單片機(jī)TCP通信效率的軟件方法[J]. 華僑大學(xué)學(xué)報(bào)(自然版), 2011, 32(2):235-237.
[3].楊永, 杜文龍. 51單片機(jī)接收GPS數(shù)據(jù)的算法與實(shí)現(xiàn)[J]. 現(xiàn)代電子技術(shù), 2008, 31(22):50-52.