導航:首頁 > 操作系統 > 單片機串列非同步通信

單片機串列非同步通信

發布時間:2022-05-15 13:49:02

Ⅰ 什麼是串列非同步通信它有哪些特點有哪幾種幀格式

串列非同步通信是主機與外部硬體設備的常用通訊方式。可以雙向傳輸。

特點:通訊過程中無需同步時鍾信號,設備間有時要約定波特率,硬體成本低;非同步通訊中字元幀由發送端逐幀發送,發送端和接收端可以由各自的時鍾來控制數據的發送和接收,這兩個時鍾源彼此獨立,互不同步。

串列非同步通信的典型幀格式是:1位起始位、7位(或8位)數據位、1位奇偶校驗位、2位停止位。

(1)單片機串列非同步通信擴展閱讀:

串列非同步通信常用匯流排類型

1、通用串列匯流排

通用串列匯流排作為一種高速串列匯流排,其極高的傳輸速度可以滿足高速數據傳輸的應用環境要求,且該匯流排還兼有供電簡單、安裝配置便捷、 擴展埠簡易、傳輸方式多樣化,以及兼容良好等優點。該介面被廣泛用於智能手機中、計算機等。

2、RS-232標准介面

是常用的串列通信介面標准之一,是在1970年由美國電子工業協會(EIA)聯合貝爾系統、數據機廠家及計算機終端生產廠家共同制定的用於串列通訊的標准。工業控制的RS-232口一般只使用RXD、TXD、GND三條線。

Ⅱ 基於單片機串列介面的非同步通信

甲機程序:
#include<reg51.h>
#define uchar unsigned char
uchar sec=0,num=0;
uchar ledtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
void t0isr() intgerrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
if(num>=20)
{
num=0;
sec++;
if(sec>9)sec=0;
}
}main()
{
uchar temp;
TMOD=0x21;
SCON=0x50;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=0xfd;
TL1=0xfd;
TR0=1;
ET0=1;
TR1=1;
EA=1;
temp=0;
while(1)
{
if(temp!=sec)
{
temp=sec;
P0=ledtab[9-temp]
SBUF=temp;
while(!TI);
TI=0;
}
}
}
乙機程序:
#include<reg51.h>
#define uchar unsigned char
uchar ledtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
main()
{
uchar temp;
TMOD=0x20;
SCON=0x50;
TH1=0xfd;
TL1=0xfd;
TR1=1;
EA=1;
temp=0;
while(1)
{
if(RI)
{
RI=0;
temp=SBUF;
P0=ledtab9-[temp];
}
}
}

Ⅲ 兩個8051單片機之間用方式2串列通信

串列口是單片機與外界進行信息交換的工具,8051單片機的通信方式有兩種:

並行通信:數據的各位同時發送或接收。

串列通信:數據一位一位次序發送或接收。

串列通信的方式

非同步通信

用一個起始位0表示字元的開始,用停止位1表示字元的結束,中間夾著8個數據位,字元能一個接一個傳送

CPU與外設之間必須有字元格式和波特率兩項規定

字元格式規定能使雙方把0和1串理解成同一種意義,原則上自由制定,通用角度使用標准如ASCII

波特率即數據傳輸速率,每秒傳送的二進制位數,如120字元/s,每個字元10數位,則傳送波特率為1200波特

同步通信

去掉了開始結束標志提高速度,但由於數據塊傳遞開始要用同步字元來指示,同時要求由時鍾來實現發送端與接收端之間的同步,故硬體較復雜。

通信方向

在串列通信中,把通信介面只能發送或接收的單向傳送辦法叫單工傳送;把數據能雙向傳遞稱為雙工傳送。半雙工傳送兩機之間不能同時進行發送和接收,任一時該,只能發或者只能收信息。全雙工傳送是能同時發送接收。

串列介面結構

51單片機一個可編程的全雙工串列通信介面。可用作非同步通信方式(UART),與串列傳送信息的外部設備相連接。或用於通過同步或非同步標准通信協議進行全雙工的8051多機系統,使用TTL或CMOS移位寄存器來擴充I/O口。

8051單片機通過管腳RXD(P3.0,串列數據接收端)和管腳TXD(P3.1,串列數據發送端)與外界通信。SBUF是串列口緩沖寄存器,包括發送寄存器和接收寄存器。它們有相同名字和地址空間,但不會出現沖突,因為它們兩個一個只能被CPU讀出數據,一個只能被CPU寫入數據。

Ⅳ 若串列非同步通信波特率為100M,相當於每移傳輸多少位元組

摘要 你好,串列非同步通信,也是二進制通信,波特率等於比特率,再換算成位元組速率即可。

Ⅳ 單片機串列通信

串列通信是指 使用一條數據線,將數據一位一位地依次傳輸,每一位數據占據一個固定的時間長度。其只需要少數幾條線就可以在系統間交換信息,特別使用於計算機與計算機、計算機與外設之間的遠距離通信。
而在單片機中,有一個專門的串列口,用於非同步通信方式(UART),與接收串列傳輸信息的外部設備相連,控制這個串列口的是兩個寄存器,分別是狀態寄存器和特殊功能寄存器。

狀態寄存器(scon)
有八位(每位有相應的地址),用於定義串列口的工作方式和接收,發送的控制
工作方式
方式0:八位同步移位寄存器:有允許信號時,寄存器中的存交換數據的八位同時以固定的波特率移動;(較常用)
方式1:10位UART(波特率可變)
方式2:11位UART (波特率固定)
方式3:11位UART(珀特率由定時器T1控制可變)
波特率:串列通信中收發雙方的數據傳輸率(即每秒傳輸多少數據)

特殊功能寄存器(pcon)
為了在51單片機上實現電源控制而附加的,功能有可以定義單片機得復位方式等。

Ⅵ 51單片機非同步串列通信的幀結構由哪些部分組成。

中央處理器、程序存儲器、數據存儲器。
51子系列單片機由CPU、數據存儲器RAM、程序存儲器ROM、特殊功能寄存器、4個I/O口、串列口、定時器/計數器、中斷系統等八個功能部件組成。

Ⅶ 單片機多機串列非同步通信

//===================================================================== // 多機通訊從機1程序 //cong1.c //writer:穀雨 2008年3月22日於EDA實驗室 //註: //===================================================================== #include<reg52.h> #define addr 0x31 //從機1地址 unsigned char receive; unsigned char xx[ ]={"1234567890"}; void Uart_Init(void) { TMOD = 0x20; //定時器T1使用工作方式2 TH1 = 0XF3; TL1 = 0XF3; PCON = 0x00; //SMOD=1; SCON = 0xf0; //工作方式3,9位數據位,波特率9600bit/s,允許接收 TR1 = 1; //開始計時 EA = 1; //中斷允許 ES = 1; //串列中斷允許 } void Serial_INT() interrupt 4 { if(!RI) return; RI=0; if(RB8==1) { if(SBUF==addr) SM2=0; else SM2=1; } if(RB8==0) receive=SBUF; } void SendOneByte(unsigned char c) { TB8=0; SBUF = c; while(!TI); TI = 0; } void SendListChar(unsigned char *DData,unsigned char Ef) { unsigned char L=0; if(Ef!=0) { for( ;L<Ef;L++) //顯示有效長度 SendOneByte(DData[L]); //發送單個字元 }else while (DData[L]!='\0') //發送至字串結束 { SendOneByte(DData[L]); //發送單個字元 L++; //下一個字元 } } void main() { Uart_Init(); while(1) { switch(receive) { case 0xff: break; case 0x01: //在此可以寫入要完成的動作,最多可完成256個動作 SendListChar(xx,0); break; case 0x02: break; case 0x33: P1=!P1; //為方便其間,賦值給P1口,測P1口電平來檢測該程序 break; default: break; } receive=0xff; } } //===================================================================== // 多機通訊主機程序 //zhuji.c //writer:穀雨 2008年3月22日於EDA實驗室 //註:主機先發送地址,接收到應答後,再發送數據 //===================================================================== #include<reg52.h> #define addr1 0x31 //從機1地址 #define addr2 0x32 //從機2地址 unsigned char xx[10]; unsigned char p = 0; void delay_1ms(unsigned int i) { unsigned char j; while ((i--)!=0) {for (j=0;j<125;j++);} } void Uart_Init(void) { TMOD = 0x20; //定時器T1使用工作方式2 TH1 = 0XF3; TL1 = 0XF3; PCON = 0x00; //SMOD=1; SCON = 0xf0; //工作方式3,9位數據位,波特率9600bit/s,允許接收 SM2 = 0; TR1 = 1; //開始計時 EA = 1; //中斷允許 ES = 1; //串列中斷允許 } void Serial_INT() interrupt 4 { if(!RI) return; ES = 0; RI = 0; xx[p] = SBUF; p++; ES = 1; } void send_addr(unsigned char addr) //發送地址 { p = 0; TB8 = 1; //發送地址幀 SBUF=addr; //發送地址 while(!TI); //等待發送完畢 TI=0; //軟體復位TI } void send_data(unsigned char ddata) //發送數據 { TB8=0; //發送數據幀 SBUF=ddata; //發送數據 while(!TI); TI=0; //軟體復位TI } void main() { Uart_Init(); delay_1ms(2000); while(1) { send_addr(addr1); //向從機1發地址 send_data(0x33); send_data(0x01); delay_1ms(500); if(xx[9]=='0') P1=0xaa; delay_1ms(500); send_addr(addr2); //向從機2發地址 send_data(0x33); send_data(0x01); delay_1ms(500); if(xx[9]=='9') P1=0x55; delay_1ms(500); } // while(1); }

Ⅷ 什麼事串列非同步通信,它有什麼作用80c51單片機

什麼事串列非同步通信,它有什麼作用?80c51單片機
行非同步通信:串列通信的數據或字元是一幀一幀地傳送,在非同步通信中,一幀數據先用一個起始位「0」表示字元的開始,然後是5~8位數據,即該字元的代碼,規定低位在前、高位在後,接下來是奇偶校驗碼,最後一個停止位「1」表示字元結束。特點:成本低,硬體方便,適合遠距離通信,傳輸速度低。51的UART可以與電腦或其他單片機通信

綠竹別其三分景 紅梅正報萬家春 春回大地

Ⅸ 51單片機工作在串列非同步通信方式,波特率為4800,每秒可以傳送多少位元組

假設每幀8位數據位,加上起始位和停止位,每幀就是10位。
每秒最多可以傳輸4800÷10 = 480位元組

閱讀全文

與單片機串列非同步通信相關的資料

熱點內容
雲伺服器20性能 瀏覽:986
android強制系統橫屏 瀏覽:280
怎麼提前看未播出的電視劇app 瀏覽:666
cad轉pdf圖層 瀏覽:600
程序員接私活初級 瀏覽:433
全無油潤滑壓縮機 瀏覽:185
代碼加密常用方法 瀏覽:953
安卓手機如何解除已禁用 瀏覽:396
演算法的隨機性 瀏覽:486
高中解壓體育游戲 瀏覽:533
androidstudior丟失 瀏覽:345
命令行筆記 瀏覽:738
360目標文件夾訪問拒絕 瀏覽:519
3b編程加工指令 瀏覽:790
c8051f系列單片機選型手冊 瀏覽:773
南昌php程序員 瀏覽:513
bcs命令 瀏覽:447
如何在伺服器指向域名 瀏覽:417
車床編程可以做刀嗎 瀏覽:519
ln命令源碼 瀏覽:793