① 單片機的幾種傳輸方式的總結
學習了51單片機以及STM32後總結下單片機與外設或者上位機通訊的幾種傳輸方式
串口、COM口是指的物理介面形式(硬體)。而TTL、RS-232、RS-485是指的電平標准(電信號)
串列通信:指數據一位一位順序傳送
串列介面:簡稱串口(COM口)
並行通信:一組數據的各數據位在多線上同時被傳輸
並行介面:一種介面,各數據位同時被傳輸,傳輸速度快,效率高,一般用於MCU
串列通信分為:
單工:數據單項傳送
半雙工:數據能雙向傳送但不能同時
全雙工:數據能同時雙向傳送
通用的、及支持同步也支持非同步的接收、發送「模塊」,在晶元內部,與SPI、I2C一起構成單片機的匯流排「枝幹」,對於串口,串口通信指串口按位(bit)發送和接收位元組,盡管比按位元組(byte)的並行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。
串列通信技術標准EIA-232/485也就是以前所稱的RS-232/485。
232是PC機與通信工業中應用最廣泛的一種串列介面,RS232單端通信,傳輸距離可達15米,最高速率20Kbps。
RS485傳輸速率為10Mbps,最大傳輸距離1219米,,採用二線制時可實現真正的多點雙向通信,而采
用四線連接時只能實現點對多點通信,無論四線還是二線連接方式匯流排上可接多達 32 個設備。
串列通信傳輸速率用於說明傳輸的快慢。在串列通信中,數據是按位進
行傳送的,因此傳輸速率用每秒鍾傳送格式位的數目來表示,稱之波特率
(band rate)。每秒傳送一個格式位就是 1 波特。常用的波特率有:4800、
9600、19200、115200 波特。
串口三個腳:TX、RX、GND
IIC匯流排是一種兩線式串列匯流排,支持多主控,其中任何能夠進行發送和接收的設備都可以成為主匯流排,一個主控能夠控制信號的傳輸和時鍾頻率,當然在任何時間點上只能有一個主控。IIC匯流排是由數據線SDA和時鍾SCl構成的串列匯流排,可發送和接收數據,在CPU與被控IC之間,IC與IC之間進行雙向傳送,最高傳送速率100Kbps,各種被控制電路均並聯在這條匯流排上,每個設備模塊都有唯一的地址,IIC匯流排上的每一個設備模塊既是主控器或被控器,又是發送器或接收器,這取決於你要實現的功能是怎樣的。
CPU發出的控制信號分為地址碼和控制量兩部分
IIC匯流排傳輸過程中有三種信號:起始信號,終止信號,應答信號。
起始信號:SCL 為高電平時,SDA 由高電平向低電平跳變,開始傳送數據;
終止信號:SCL 為低電平時,SDA 由低電平向高電平跳變,結束傳送數據;
應答信號:接收數據的 IC 在接收到 8bit 數據後,向發送數據的 IC 發出
特定的低電平脈沖,表示已收到數據。CPU 向受控單元發出一個信號後,
等待受控單元發出一個應答信號,CPU 接收到應答信號後,根據實際情
況作出是否繼續傳遞信號的判斷。若未收到應答信號,由判斷為受控單
元出現故障。
SPI允許單片機和外圍設備或者單片機之間高速同步數據傳輸,SPI可以有主機和從機模式之選,通信的主從機之間通過移位寄存器同時交換數據。目前自己用的以主機模式居多。SPI需要四線:SS,MISO,MOSI,SCK。
通信過程:在設置好SPI的工作模式:包括SCK頻率(數據傳輸速率),工作速度,主從模式,以及數據接收發送對應的時鍾極性。在主模式下,將SS拉低表示通信的開始,然後通過向SPI數據寄存器中寫入一位元組的數據後自動啟動時鍾SCK開始進行一次通信,通信完成後會產生相應的中斷標志,標志一個位元組數據的傳送完成。通信完成後將SS腳拉高,表示通信過程已經結束。
注意SS引腳的設置:當設置為從機模式時,SS引腳應設置為輸入,拉低的時候SPI才能起作用,拉高的話是消極的SPI模式;在主機模式下,SS引腳可以設置,一般應設置為輸出,如果設置為輸入的話應保持為高,否則將不能進行正常的主機模式操作。
單片機通訊方式
② 單片機的通信方式有那些
單片機是一種集成在電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計時器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的計算機系統。
51 單片機內部有一個全雙工串列介面。什麼叫全雙工串口呢?一般來說,只能接受或只能發送的稱為單工串列;既可接收又可發送,但不能同時進行的稱為半雙工;能同時接收和發送的串列口稱為全雙工串列口。串列通信是指數據一位一位地按順序傳送的通信方式,其突出優點是只需一根傳輸線,可大大降低硬體成本,適合遠距離通信。其缺點是傳輸速度較低。
③ 單片機通信方式有幾種
要看你用的是那個單片機
常用的有UART,SPI,I2C等
也可並行通訊,也可以自定義協議
完全取決於你的應用
④ 單片機的數據通信有哪兩種
單片機的數據通信主要有兩種方式:並行通信和串列通信。
並行通信是一種同時進行數據傳輸的方式,多個數據位可以在同一時刻從發送端傳輸到接收端。這種方式通常用於單片機之間的近距離通信,例如在同一台計算機上的多個單片機。
另一方面,串列通信是一種逐位傳輸數據的方式,即一位接著一位地傳輸數據。這種方式通常用於單片機與計算機或其他設備的遠程通信,例如通過USB或串口進行數據傳輸。這種通信方式通常使用數據線,需要較少的物理空間,因此在攜帶型設備中得到廣泛應用。
在實際應用中,這兩種通信方式各有優缺點。並行通信的傳輸速度較快,但需要更多的物理連接線;而串列通信的物理連接線較少,但傳輸速度較慢。因此,選擇哪種通信方式取決於具體的應用場景和需求。
⑤ 老師好,請問一塊單片機如何調用另一塊單片機的埠電機的程序各輸哪些頭文件和代碼呢
在單片機之間進行通信和控制,通常需要使用一些通信協議,如I2C、SPI、UART等。以下是一個基本的示例,展示了如何在一個單片機(Master)上編寫代碼,通過I2C協議控制另一個單片機(Slave)的埠。
// Master 單片機
#include <Wire.h>
void setup() {
Wire.begin(); // 初始化 I2C 通信
}
void loop() {
Wire.beginTransmission(8); // 開始向地址為 8 的設備發送數據
Wire.write("1"); // 發送字元 '1'
Wire.endTransmission(); // 結束傳輸
delay(500); // 等待 500 毫秒
}
----------------------------------------------------
// Slave 單片機
#include <Wire.h>
void setup() {
Wire.begin(8); // 加入 I2C 匯流排,地址為 8
Wire.onReceive(receiveEvent); // 注冊接收數據事件
pinMode(13, OUTPUT); // 設置 13 號引腳為輸出模式
}
void loop() {
delay(100);
}
// 當接收到數據時調用此函數
void receiveEvent(int howMany) {
while (Wire.available()) { // 循環,直到讀取完所有數據
char c = Wire.read(); // 讀取一個字元
if (c == '1') { // 如果字元為 '1'
digitalWrite(13, HIGH); // 將 13 號引腳設置為高電平
} else {
digitalWrite(13, LOW); // 否則,將 13 號引腳設置為低電平
}
}
}
以上代碼僅供參考,具體的代碼可能會根據您的硬體和需求有所不同。在編寫代碼時,您需要考慮到您的單片機的具體型號、通信協議、埠號等因素。
..................................................
在兩個80C51單片機之間進行通信和控制,你可以使用I2C協議。以下是一個基本的示例,展示了如何在一個單片機(Master)上編寫代碼,通過I2C協議控制另一個單片機(Slave)的埠。
首先,我們需要在Master單片機上編寫代碼來發送I2C命令。這里是一個簡單的示例:
#include <reg51.h>
#include "I2C.h" // I2C通信庫
#define SLAVE_ADDRESS 0x50 // Slave單片機的I2C地址
void main() {
unsigned char command = 0x01; // 要發送的命令
I2C_Init(); // 初始化I2C
I2C_Start(); // 開始I2C通信
I2C_Write(SLAVE_ADDRESS); // 寫入Slave單片機的地址
I2C_Write(command); // 寫入命令
I2C_Stop(); // 停止I2C通信
while(1); // 無限循環,保持程序運行
}
然後,在Slave單片機上編寫代碼來接收I2C命令,並根據接收到的命令來控制埠。這里是一個簡單的示例:
#include <reg51.h>
#include "I2C.h" // I2C通信庫
#define SLAVE_ADDRESS 0x50 // Slave單片機的I2C地址
void main() {
unsigned char command;
I2C_Init(); // 初始化I2C
while(1) {
if (I2C_Read(SLAVE_ADDRESS, &command)) { // 如果接收到I2C命令
switch (command) {
case 0x01:
P1 = 0xFF; // 將P1埠設置為高電平
break;
// 其他命令...
}
}
}
}
請注意,這只是一個基本的示例,你可能需要根據你的具體需求來修改這些代碼。例如,你可能需要使用不同的命令來控制不同的埠,或者使用不同的命令來控制埠的不同狀態(如高電平、低電平等)。此外,你還需要確保你的單片機已經正確地連接了I2C匯流排,並且已經正確地設置了I2C地址。
希望這個信息對你有所幫助!
⑥ 單片機串口通訊有哪幾種方式
89系列單片機的串列通信有4種工作方式:
1、正旦漏方式0是同步移位寄存器方式,幀格式8位,波特率固定為fosc/12。
2、方式1是8位非同步通信方式,幀格式10位,波特率可變:T溢出率/n(n= :32或16)。
3、方式2是9位非同步通信方式,幀格式11位,波特率固定: fosc/n(n=32 或16)。
4、方式3是9位非同步通信方式,幀格式11位,波特率可變:T溢出率(m=32或16)。
方式1、2、3的區別主要表現在幀格式及波特率兩個方面。
單片機應用范圍:
單片機滲透到我們生活的各個領域。導彈的導航裝置,飛機上各種儀表的控制,計算機的網路通訊與數據傳輸,工業自動化過程的實時控制和數據處理,遲蔽廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統,錄像機、攝像機、全自動洗衣機的控制等等。
還有自動控制領域的機器人、智能儀表、醫療器械以及各種智能機械。因此,單舉爛片機的學習、開發與應用將造就一批計算機應用與智能化控制的科學家、工程師。