【正文】
畢業(yè)設(shè)計(論文) 單片機(jī)多機(jī)通信實現(xiàn) 單片機(jī)多機(jī)通信實現(xiàn) 摘要:目前,單片機(jī)在多機(jī)通信領(lǐng)域應(yīng)用很廣。但研究最多的是上位機(jī)與下位機(jī)的通信及多單片機(jī)構(gòu)成的主從式多機(jī)通信系統(tǒng)。本文重點(diǎn)研究了多單片機(jī)的平權(quán)式多機(jī)通信,使各單片機(jī)有相同的權(quán)限。 本文從平權(quán)式多機(jī)通信協(xié)議入手,首先設(shè)計了具體平權(quán)式多機(jī)通信協(xié)議 。主機(jī)通信用按鍵控制,模擬實際應(yīng)用中的觸發(fā)信號輸入。對于 1 號單片機(jī),還可通過液晶實時顯示工作狀態(tài),初始為主機(jī)。在不需置其他單片機(jī)為主機(jī)的情形下,本多機(jī)通信系統(tǒng)可 以作為主從式多機(jī)通信系統(tǒng)。從機(jī)通信模式通過串口中斷觸發(fā)啟動,通信結(jié)束即恢復(fù)之前的從機(jī)狀態(tài)。通信過程中,主機(jī)先發(fā)送尋址的從機(jī)號,待從機(jī)響應(yīng)后開始通信。通信結(jié)束后,主機(jī)發(fā)送自己的主機(jī)號,告知從機(jī)。然后從機(jī)發(fā)給主機(jī)校驗字節(jié)數(shù)據(jù),主機(jī)檢驗錯誤,檢驗無誤后,作出響應(yīng), 1 號單片機(jī)液晶會顯示, 2 號和 3 號單片機(jī)收發(fā)數(shù)據(jù)無誤后會使 LED 指示燈亮起。其外,本文研究了可切換雙向接口的實現(xiàn)方法。通過用單片機(jī)的一個引腳控制單片機(jī)的串口的連接方式,使其工作在主機(jī)模式或從機(jī)模式。 本研究已經(jīng)仿真通過,真實可行。具有一定的檢錯能力,串行通 信的比特率是 9600bit/s,通信速度較快,且可靠性高。本研究通過硬件電路解決了通信過程中多單片機(jī)爭用主機(jī)權(quán)的問題。 關(guān)鍵詞:單片機(jī);多機(jī)通信;平權(quán); AT89S52 Realization of many SCM munication Abstract: At present, the single chip multimachine munication in a wide field of applications. However, the most studied is the host puter and lower puter munications and multichip microprocessor masterslave multimachine munication system. This paper focuses on a number of single chip multimachine munication affirmative, so that the MCU has the same permissions. The paper machine from the multilevel munication protocol of the right to start with, first, the specific munication protocol. Host Communication button control, the practical application of simulation in the trigger signal input. For the No. 1 microcontroller, but also through the LCD display working status, the initial for the host. No other single chip set in the case of the host, the multimachine munication system can be used as masterslave multimachine munication system. Communication mode from the machine through the serial port interrupt triggering, munication before the end of the recovery from the machine state. Communication process, the host sends the address number from the machine until the response from the plane after munications. After munication, the host sends its own host number, informed from the machines. And then distributed to the host from the machine check bytes of data, the host test error, test and proved correct response, 1 single chip LCD displays, 2 and 3, after the MCU will send and receive data correct LED light is on. Besides, this paper, bidirectional switch implementation of the interface methods. Through the use of microputer control of a microcontroller pin serial port connection, to work in master mode or slave mode. This study has been simulated by the real feasible. Have some error detection capability, the bit rate of serial munication 9600bit / s, munication speed, and reliability. In this study, the hardware circuit through the munication process to resolve the contention over the host microcontroller over the issue. Key words:: SCM; Multimachine munication 它用于定義串行口的工作方式及實施接收和發(fā)送控制。字節(jié)地址為 98H,其各位定義如表 表 2- 2 串行口工作方式選擇位定義 SM0、 SM1 工作方式 功能描述 波特率 0 0 方式 0 8 位移位寄存器 Fosc/12 0 1 方式 1 10 位 UART 可變 1 0 方式 2 11 位 UART Fosc/64 或 fosc/32 1 1 方式 3 11 位 UART 可變 其中 fosc 為晶振頻率 SM2:多機(jī)通訊控制位。在方式 0 時, SM2 一定要等于 0。在方式 1 中,當(dāng)SM2 1 則只有接收到有效停止位時, RI 才置 1。在方式 2 或方式 3 當(dāng) SM2 1 且接收到的第九位數(shù)據(jù) RB8 時, RI 才置 1。 REN:接收允許控制位。由軟件置位以允許接收,又由軟件清 0 來禁止接收。 TB8: 是要發(fā)送數(shù)據(jù)的第 9 位。在方式 2 或方式 3 中,要發(fā)送的第 9 位數(shù)據(jù) ,根據(jù)需要由軟件置 1 或清 0。 RB8:接收到的數(shù)據(jù)的第 9 位。在方式 0 中不使用 RB8。在方式 1 中,若 SM2 0, RB8 為接收到的停止位。在方式 2 或方式 3 中, RB8 為接收到的第 9 位數(shù)據(jù)。 TI:發(fā)送中斷標(biāo)志。在方式 0 中,第 8 位發(fā)送結(jié)束時,由硬件置位。在其它方式的發(fā)送停止位前,由硬件置位。 TI 置位既表示一幀信息發(fā)送結(jié)束,同時也是申請中斷,可根據(jù)需要,用軟件查詢的方法獲得數(shù)據(jù)已發(fā)送完畢的信息,或用中斷的方式來發(fā)送下一個數(shù)據(jù)。 TI 必須用軟件清 0。 RI:接收中斷標(biāo)志位。在方式 0,當(dāng)接收完第 8 位數(shù)據(jù)后,由硬件置位。在其 它方式中,在接收到停止位的中間時刻由硬件置位(例外情況見于 SM2 的說明)。 RI 置位表示一幀數(shù)據(jù)接收完畢,可用查詢的方法獲知或者用中斷的方法獲知。 RI 也必須用軟件清 0。 圖 2- 1 AT89S52 的引腳結(jié)構(gòu) 單片機(jī) AT89S52 的引腳說明 : VCC:電源 GND:地 P0 口: P0 口是一個 8 位漏極開路的雙向 I/O 口。作為輸出口,每位能驅(qū)動 8 個 TTL 邏輯電平。對 P0 端口寫“ 1”時,引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲器時, P0 口也被作為低 8 位地址 /數(shù)據(jù)復(fù)用。在這種模式下 , P0 具有內(nèi)部上拉電阻。 在 flash 編程時, P0 口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。 P1 口是一個具有內(nèi)部上拉電阻的 8 位雙向 I/O 口, p1 輸出緩沖器能驅(qū)動 4 個 TTL 邏輯電平。對 P1 端口寫“ 1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流( IIL)。 此外, 和 分別作定時器 /計數(shù)器 2 的外部計數(shù)輸入( )和時器 /計數(shù)器 2 的觸發(fā)輸入( ),具體如下表所示。 P2 口是一個具有內(nèi)部上拉電阻的 8 位雙向 I/O 口, P2 輸出緩沖器能驅(qū)動 4 個 TTL 邏輯電平。對 P2 端口寫“ 1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流( IIL)。在訪問外部程序存儲器或用 16 位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行 MOVX @DPTR)時, P2 口送出高八位地址。在這種應(yīng)用中, P2 口使用很強(qiáng)的內(nèi)部上拉發(fā)送 1。在使用 8 位地址(如 MOVX @RI)訪問外部數(shù)據(jù)存儲器時, P2 口輸出 P2鎖存器的內(nèi)容。 在 flash 編程和校驗時, P2 口也接收高 8 位地址字節(jié)和一些控制信號。 P3 口是一個具有內(nèi)部上拉電阻的 8 位雙向 I/O 口 2 輸出緩沖器能驅(qū)動 4 個 TTL 邏輯電平。對 P3 端口寫“ 1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流( IIL)。 P3 口亦作為 AT89S52 特殊功能(第二功能)使用,如下表所示。 :地址鎖存控制信號( ALE)是訪問外部程序存儲器時,鎖存低 8 位地址的輸出脈沖。在 flash 編 程時,此引腳( PROG)也用作編程輸入脈沖。在一般情況下, ALE 以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時器或時鐘使用。然而,特別強(qiáng)調(diào),在每次訪問外部數(shù)據(jù)存儲器時, ALE 脈沖將會跳過。如果需要,通過將地址為 8EH 的 SFR 的第 0 位置“ 1”, ALE 操作將無效。這一位置“ 1”, ALE 僅在執(zhí)行 MOVX 或 MOVC 指令時有效。否則, ALE 將被微弱拉高。這個 ALE 使能標(biāo)志位(地址為 8EH 的 SFR 的第 0 位)的設(shè)置對微控制器處于外部執(zhí)行模式下無效。 :外部程序存儲器選通信號( PSEN)是外部程序存儲器選通信號。 當(dāng) AT89S52 從外部程序存儲器執(zhí)行外部代碼時, PSEN 在每個機(jī)器周期被激活兩次,而在訪問外部數(shù)據(jù)存儲器時, PSEN 將不被激活。 訪問外部程序存儲器控制信號。為使能從 0000H 到 FFFFH 的外部程序存儲器讀取指令, EA 必須接 GND。 為了執(zhí)行內(nèi)部程序指令, EA 應(yīng)該接 VCC。 在 flash 編程期間, EA 也接收 12 伏 VPP 電壓。 并不是所有的地址都被定義了片上沒有定義的地址是不能用的。讀這些地址,一般將得到一個隨機(jī)數(shù)據(jù);寫入的數(shù)據(jù)將會無效 。用戶不應(yīng)該給這些未定義的地址寫入數(shù)據(jù)“ 1”。由于這些寄存器在將來可能被賦予新的功能,復(fù)位后,這些位都為“ 0”。 定時器 2 寄存器:寄存器 T2CON 和 T2MOD 包含定時器 2 的控制位和狀態(tài)位(如表 2 和表 3 所示)寄存器對 RCAP2H 和 RCAP2L 是定時器 2 的捕捉 /自動重載寄存器。 中斷寄存器:各中斷允許位在 IE 寄存器中,六個中斷源的兩個優(yōu)先級也可在 IE 中設(shè)置。 T2CON 地址為 0C8H 復(fù)位值: 0000 0000B 位可尋址 TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2 D7 D6 D5 D4 D3 D2 D1 D0 TF2:定時器 2 溢出標(biāo)志位。必須軟件清“ 0”。 RCLK 1 或 TCLK 1 時,TF2 不用置位。 EXF2:定時器 2 外部標(biāo)志位。 EXEN2 1 時, T2EX 上的負(fù)跳變而出現(xiàn)捕捉或重載時, EXF2 會被硬件置位。定時器 2 打開, EXF2 1 時,將引導(dǎo) CPU 執(zhí)行定時器 2 中斷程序。 EXF2 必須如見清“ 0”。在向下 /向上技術(shù)模式( DCEN 1)下 EXF2 不能引起中斷。 RCLK:串行口接收數(shù)據(jù)時鐘標(biāo)志 位。若 RCLK 1,串行口將使用定時器 2 溢出脈沖作為串行口工作模式 1 和 3 的串口接收時鐘; RCLK= 0,將使用定 時器 1 計數(shù)溢出作為串口接收時鐘。 TCLK:串行口發(fā)送數(shù)據(jù)時鐘標(biāo)志位。若 TCLK 1,串行口將使用定時器 2 溢出脈沖作為串行口工作模式 1 和 3