❶ 51單片機串口通信是全雙工的,但是為什麼又說它的發送和接受不可以同時進行呢
51單片機串口通信是全雙工的,發送和接受可以同時進行。不可以同時進行的是半雙工。
全雙工方式分別由兩根不同的傳輸線傳送數據時,通信雙方都能在同一時刻進行發送和接收操作,通信系統的每一端都設置了發送器和接收器,因此,能控制數據同時在發送和接受兩個方向上傳送。
半雙工使用同一根傳輸線既作接收又作發送,雖然數據可以在兩個方向上傳送,但通信雙方不能同時收發數據。採用半雙工方式時,通信系統每一端的發送器和接收器,通過收/發開關轉接到通信線上,進行方向的切換,因此,會產生時間延遲。收/發開關實際上是由軟體控制的電子開關。
(1)通信類單片機擴展閱讀:
全雙工方式在發送設備的發送方和接收設備的接收方之間採取點到點的連接,這意味著在全雙工的傳送方式下,可以得到更高的數據傳輸速度。
全雙工方式無需進行方向的切換,因此,沒有切換操作所產生的時間延遲,這對那些不能有時間延誤的互動式應用(例如遠程監測和控制系統)十分有利。這種方式要求通訊雙方均有發送器和接收器,同時,需要2根數據線傳送數據信號。
❷ 51單片機通信 的一個簡單問題
這需要說明一下單片機串列接收的處理過程:串列通訊內部有一個9位的移位寄存器。單片機中的非同步通訊有模式1、模式2、模式3,傳輸的分別是8位、9位、9位信息,再加上起始位和停止位,其實信息流是10位、11位、11位。RXD線正常情況下是高電平,也就是1,當發生1到0的跳變時說明起始位到來,通訊接收開始啟動(以模式1、10位信息為例)。
1、檢測到跳變,單片機將會把9位移位寄存器全部置1,也就是1FF;
2、在起始位信息中間的時刻,9位移位寄存器移位左移,將起始位(0)移入最低位;
3、繼續采樣RXD上的狀態,每次采樣接收後左移9位移位寄存器同時將得到狀態移入最低位;
4、由於初始是整個寄存器各位全部為1,當停止位來臨時,9位移位寄存器的最高位為0,此時單片機就認為通訊將結束,觸發最後一次移位,這樣9位移位寄存器的高8位就是實際的數據,而最低位起始就是停止位信息。
5、移位完成後,單片機開始做最後一件事:將9位移位寄存器的高8位寫入SBUF,將最低位寫入RB8,然後置RI請求中斷。
其中第5步並不是說停止位接收完成後就自然會發生的,需要同時滿足兩個條件,否則接收到的數據會丟失:
a、RI=0:如果RI=1說明上次中斷未處理完,此時不會執行5
b、SM2=0,或者接收到的停止位=1,二者滿足其一即可
明白了整個接收過程和觸發機制,回過頭再看你的問題:
「若SM2=1,則只有接收到有效停止位時,RI才置一」:此時就是上面的條件b的後一種情況,由於是方式1,第10位也就是停止位就是1,所以只要此時RI=0,就會引發RI置1的操作。
「若SM2=0,則RB8是接收到到的停止位」:此時就是上面的條件b的前一種情況,因為此時的9位移位寄存器中的最低位正好是剛移入的停止位,所以將其送到了RB8中。
至於為什麼要設定這種條件,需要全面深入的了解4種工作模式後才會有合理的答案,我一下子也不知道該如何去解釋,還是你自己先看看書吧。
51單片機的串列通訊介面功能還是很豐富的,比如SM2在多機通訊中的應用就很巧妙,比如模式0的同步移位寄存器功能,等等。只是現在很少有人搞得這么深了。
❸ 單片機與單片機之間的通信
在單片機與單片機之間的通信中,可以採用串列匯流排的方式,具體來說,可以選擇485或者CAN(控制器區域網)協議。485協議能夠以大約1200波特率運行,適用於大多數常見應用,而CAN協議則可以達到更高的速度,大約4800波特率,滿足了更多高性能需求。
在實際應用中,當數據傳輸速率需求超過1500波特率時,建議考慮使用中繼器來延長通信距離,或是選擇無線通信技術,以確保穩定和高效的數據傳輸。中繼器可以有效擴展通信范圍,而無線通信技術則提供了更大的靈活性,能夠實現遠距離傳輸。
選擇合適的通信方式對於保證單片機之間的有效通信至關重要。485協議因其成本效益高、可靠性好而被廣泛採用,尤其適合小型網路和低速應用。而CAN協議則因其強大的抗干擾能力和高可靠性,在汽車電子、工業控制等領域得到了廣泛應用。
無論是485還是CAN,都需要根據具體的應用場景來選擇。例如,在需要高傳輸速率、高可靠性且通信距離較近的應用中,CAN協議將是更好的選擇。而在需要低成本、長距離通信的應用場景中,485協議則更為合適。此外,如果應用場景對傳輸距離有較高要求,或是需要在復雜的電磁環境中工作,那麼無線通信技術將是最佳方案。
總之,單片機之間的通信方式多種多樣,選擇適合的技術方案將直接影響到系統的性能和可靠性。在進行設計時,需要綜合考慮應用需求、成本、可靠性等因素,以確保通信系統的最佳性能。
❹ 單片機多機通信
單片機之間的多機通信方式1是通過雙機串列連接,當SM0、SM1配置為01時,串口進入方式1,利用TXD和RXD腳進行數據傳輸。這種方式支持10位幀,包括1位起始位、8位數據位和1位停止位,數據按最低位先發送或接收。
波特率可通過公式確定,其中SMOD位影響頻率。發送時,先寫入數據到SBUF,然後串口以方式1發送,數據通過TXD輸出,每發送完一幀,中斷標志TI置位。接收時,串口接收RXD的數據,起始位的負跳變觸發接收,使用RX時鍾和采樣脈沖檢測數據,確保數據的可靠性。
為確保同步,所有通信雙方的波特率必須一致。在T1定時器方式2下,通過調整初值X,可以精確控制波特率,考慮到誤差,通常選擇時鍾頻率為11.0592MHz。例如,當使用11.0592MHz時鍾,選擇2400bit/s波特率,初值X為244,即F4H。
多機通信時,通過設置SM2位的不同來實現主機選擇特定從機通信。主機先發送地址信息,設置TB8位,從機根據接收到的地址和自身的地址匹配決定是否接收數據,TB8為0表示數據幀,僅SM2為0的從機能接收。
在實際應用中,如圖所示的主從結構中,通過串口連接多個單片機進行通信。設計串列通信介面時,需考慮速率、距離、介面標准、通信線選擇等因素,以確保通信的穩定性和有效性。