您好,登錄后才能下訂單哦!
通訊依照根本類型可以分為并行通訊和串行通訊。并行通訊時數據的各個位同時傳送,可以完成字節為單元通訊,然則通訊線多占用資本多,本錢高。比方我們前邊用到的 P0 = 0xFE;一次給 P0 的 8 個 IO 口辨別賦值,同時停止旌旗燈號輸入,相似于有 8 個車道同時可以過來 8 輛車一樣,這種方式就是并行的,我們習氣上還稱 P0、P1、P2 和 P3 為 51 單片機的 4 組并行總線。
而串行通訊,就好像一條車道,一次只能一輛車過來,假如一個 0xFE 如許一個字節的數據要傳輸過來的話,假設低位在前高位在后的話,那發送方法就是 0-1-1-1-1-1-1-1-1,一位一位的發送出去的,要發送 8 次才干發送完一個字節。
STC89C52 有兩個引腳是專門用來做 UART 串行通訊的,一個是 P3.0 一個是 P3.1,它們還辨別有別的的名字叫做 RXD 和 TXD,由它們構成的通訊接口就叫做串行接口,簡稱串口。用兩個單片機停止 UART 串口通訊,根本的演示圖如圖 11-1 所示。
圖 11-1 單片機之間 UART 通訊表示圖
圖中,GND 表現單片機零碎電源的參考地,TXD 是串行發送引腳,RXD 是串行接納引腳。兩個單片機之間要通訊,起首電源基準得一樣,所以我們要把兩個單片機的 GND 互相銜接起來,然后單片機 1 的 TXD 引腳接到單片機 2 的 RXD 引腳上,即此路為單片機 1 發送而單片機 2 接納的通道,單片機 1 的 RXD 引腳接到單片機 2 的 TXD 引腳上,即此路為單片機 2 發送而單片機 1 接納的通道。這個表示圖就表現了兩個單片機互相收發信息的進程。
當單片機 1 想給單片機 2 發送數據時,比方發送一個 0xE4 這個數據,用二進制方式表現就是 0b11100100,在 UART 通訊進程中,是低位先發,高位后發的準繩,那么就讓 TXD起首拉低電平,繼續一段工夫,發送一位 0,然后持續拉低,再繼續一段工夫,又發送了一位 0,然后拉高電平,繼續一段工夫,發了一位 1不斷到把 8 位二進制數字 0b11100100全體發送終了。這里就觸及到了一個成績,就是繼續的這“一段工夫”究竟是多久?由此便引入了通訊中的一個主要概念——波特率,也叫做比特率。
波特率就是發送二進制數據位的速度,習氣上用 baud 表現,即我們發送一位二進制數據的繼續工夫=1/baud。在通訊之前,單片機 1 和單片機 2 起首都要明白的商定好它們之間的通訊波特率,必需堅持分歧,收發單方才干正常完成通訊,這一點人人必定要記清晰。
商定好速度后,我們還要思索第二個成績,數據什么時分是肇端,什么時分是完畢呢?
不論是提早接納照樣延遲接納,數據都邑接納毛病。在 UART 通訊的時分,一個字節是 8 位,規則當沒有通訊旌旗燈號發作時,通訊線路堅持高電平,當要發送數據之前,先發一位 0 表現肇端位,然后發送 8 位數據位,數據位是先低后高的次序,數據位發完后再發一位 1 表現中止位。如許原本要發送一個字節的 8 位數據,而實踐上我們一共發送了 10 位,多出來的兩位個中一位肇端位,一位中止位。而接納方呢,本來不斷堅持的高電平,一旦檢測到了一位低電平,那就曉得了要開端預備接納數據了,接納到 8 位數據位后,然后檢測到中止位,再預備下一個數據的接納。我們圖示看一下,如圖 11-2 所示。
圖 11-2 串口數據發送表示圖
圖 11-2 串口數據發送表示圖,實踐上是一個時域表示圖,就是旌旗燈號跟著工夫變更的對應關系。比方在單片機的發送引腳上,右邊的是先發作的,左邊的是后發作的,數據位的切換工夫就是波特率分之一秒,假如可以了解時域的概念,后邊許多通訊的時序圖就很輕易了解了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。