微控制器串列埠通訊原理,微控制器串列埠通訊的原理?

2021-03-04 06:02:00 字數 6860 閱讀 8968

1樓:西門不敗

1、51系列微控制器的串列埠有4個模式,可分別用作串並轉換、並串轉換、非同步序列通訊(2種模式)。非同步序列通訊中,有1+8+1和1+8+1+1兩種幀格式,多機通訊是特殊的通訊方式。

2、基本原理是兩組移位暫存器。將並行通訊轉換成序列通訊模式(傳送部分),或反之(接收部分)。可全雙工執行。

3、速度通過移位脈衝決定。具體一般通過定時器1的自動裝載模式產生的溢位脈衝給出。

4、電平上採用的是cmos邏輯。

5、以上是物理層和資料鏈路層的微控制器串列埠模組的約定,其他層需要軟體人員根據需要自行把握。另外,電平需要根據實際通訊環境做變換,如232、485或紅外等。

2樓:匿名使用者

非同步通訊

固定波特率下傳送0,1訊號

就是在規定的時間間隔內傳送0.1資料

3樓:匿名使用者

同步通訊 非同步通訊

微控制器串列埠通訊的原理?

4樓:匿名使用者

串列埠通訊的概念非常簡單,串列埠按位(bit)傳送和接收位元組。儘管比按位元組(byte)的並行通訊慢,但是串列埠可以在使用一根線傳送資料的同時用另一根線接收資料。它很簡單並且能夠實現遠距離通訊。

比如ieee488定義並行通行狀態時,規定裝置線總長不得超過20公尺,並且任意兩個裝置間的長度不得超過2公尺;而對於串列埠而言,長度可達1200公尺。典型地,串列埠用於ascii碼字元的傳輸。

通訊使用3根線完成:(1)地線,(2)傳送,(3)接收。由於串列埠通訊是非同步的,埠能夠在一根線上傳送資料同時在另一根線上接收資料。

其他線用於握手,但是不是必須的。串列埠通訊最重要的引數是波特率、資料位、停止位和奇偶校驗。對於兩個進行通訊的埠,這些引數必須匹配:

a,波特率:這是乙個衡量通訊速度的引數。它表示每秒鐘傳送的bit的個數。

例如300波特表示每秒鐘傳送300個bit。當我們提到時鐘週期時,我們就是指波特率例如如果協議需要4800波特率,那麼時鐘是4800hz。這意味著串列埠通訊在資料線上的取樣率為4800hz。

通常**線的波特率為14400,28800和36600。波特率可以遠遠大於這些值,但是波特率和距離成反比。高波特率常常用於放置的很近的儀器間的通訊,典型的例子就是gpib裝置的通訊。

b,資料位:這是衡量通訊中實際資料位的引數。當計算機傳送乙個資訊包,實際的資料不會是8位的,標準的值是5、7和8位。

如何設定取決於你想傳送的資訊。比如,標準的ascii碼是0~127(7位)。擴充套件的ascii碼是0~255(8位)。

如果資料使用簡單的文字(標準 ascii碼),那麼每個資料報使用7位資料。每個包是指乙個位元組,包括開始/停止位,資料位和奇偶校驗位。由於實際資料位取決於通訊協議的選取,術語「包」指任何通訊的情況。

c,停止位:用於表示單個包的最後一位。典型的值為1,1.

5和2位。由於資料是在傳輸線上定時的,並且每乙個裝置有其自己的時鐘,很可能在通訊中兩台裝置間出現了小小的不同步。因此停止位不僅僅是表示傳輸的結束,並且提供計算機校正時鐘同步的機會。

適用於停止位的位數越多,不同時鐘同步的容忍程度越大,但是資料傳輸率同時也越慢。

d,奇偶校驗位:在串列埠通訊中一種簡單的檢錯方式。有四種檢錯方式:

偶、奇、高和低。當然沒有校驗位也是可以的。對於偶和奇校驗的情況,串列埠會設定校驗位(資料位後面的一位),用乙個值確保傳輸的資料有偶個或者奇個邏輯高位。

例如,如果資料是011,那麼對於偶校驗,校驗位為0,保證邏輯高的位數是偶數個。

如果是奇校驗,校驗位位1,這樣就有3個邏輯高位。高位和低位不真正的檢查資料,簡單置位邏輯高或者邏輯低校驗。這樣使得接收裝置能夠知道乙個位的狀態,有機會判斷是否有雜訊干擾了通訊或者是否傳輸和接收資料是否不同步。

5樓:梁良鹹鳥

1、51系列微控制器的串列埠有4個模式,可分別用作串並轉換、並串轉換、非同步序列通訊(2種模式)。非同步序列通訊中,有1+8+1和1+8+1+1兩種幀格式,多機通訊是特殊的通訊方式。

2、基本原理是兩組移位暫存器。將並行通訊轉換成序列通訊模式(傳送部分),或反之(接收部分)。可全雙工執行。

3、速度通過移位脈衝決定。具體一般通過定時器1的自動裝載模式產生的溢位脈衝給出。

4、電平上採用的是cmos邏輯。

5、以上是物理層和資料鏈路層的微控制器串列埠模組的約定,其他層需要軟體人員根據需要自行把握。另外,電平需要根據實際通訊環境做變換,如232、485或紅外等。

6樓:田炳

你看串列埠通訊的協議吧,還有看微控制器的兩個管腳的時序圖,業餘的回答,呵呵

7樓:匿名使用者

請參考郭天祥十天學會微控制器第七講 串列埠通訊

8樓:上善若水

序列通訊是指資料一位一位地按順序傳送的通訊方式,其突出優點是只需一根傳輸線,可大大降低硬體成本,適合遠距離通訊。其缺點是傳輸速度較低。

微控制器串列埠工作的原理是什麼?

9樓:匿名使用者

串列埠通訊的概念非常簡單,串列埠按位(bit)傳送和接收位元組。儘管比按位元組(byte)的並行通訊慢,但是串列埠可以在使用一根線傳送資料的同時用另一根線接收資料。它很簡單並且能夠實現遠距離通訊。

比如ieee488定義並行通行狀態時,規定裝置線總長不得超過20公尺,並且任意兩個裝置間的長度不得超過2公尺;而對於串列埠而言,長度可達1200公尺。典型地,串列埠用於ascii碼字元的傳輸。

通訊使用3根線完成:(1)地線,(2)傳送,(3)接收。由於串列埠通訊是非同步的,埠能夠在一根線上傳送資料同時在另一根線上接收資料。

其他線用於握手,但是不是必須的。串列埠通訊最重要的引數是波特率、資料位、停止位和奇偶校驗。對於兩個進行通訊的埠,這些引數必須匹配:

a,波特率:這是乙個衡量通訊速度的引數。它表示每秒鐘傳送的bit的個數。

例如300波特表示每秒鐘傳送300個bit。當我們提到時鐘週期時,我們就是指波特率例如如果協議需要4800波特率,那麼時鐘是4800hz。這意味著串列埠通訊在資料線上的取樣率為4800hz。

通常**線的波特率為14400,28800和36600。波特率可以遠遠大於這些值,但是波特率和距離成反比。高波特率常常用於放置的很近的儀器間的通訊,典型的例子就是gpib裝置的通訊。

b,資料位:這是衡量通訊中實際資料位的引數。當計算機傳送乙個資訊包,實際的資料不會是8位的,標準的值是5、7和8位。

如何設定取決於你想傳送的資訊。比如,標準的ascii碼是0~127(7位)。擴充套件的ascii碼是0~255(8位)。

如果資料使用簡單的文字(標準 ascii碼),那麼每個資料報使用7位資料。每個包是指乙個位元組,包括開始/停止位,資料位和奇偶校驗位。由於實際資料位取決於通訊協議的選取,術語「包」指任何通訊的情況。

c,停止位:用於表示單個包的最後一位。典型的值為1,1.

5和2位。由於資料是在傳輸線上定時的,並且每乙個裝置有其自己的時鐘,很可能在通訊中兩台裝置間出現了小小的不同步。因此停止位不僅僅是表示傳輸的結束,並且提供計算機校正時鐘同步的機會。

適用於停止位的位數越多,不同時鐘同步的容忍程度越大,但是資料傳輸率同時也越慢。

d,奇偶校驗位:在串列埠通訊中一種簡單的檢錯方式。有四種檢錯方式:

偶、奇、高和低。當然沒有校驗位也是可以的。對於偶和奇校驗的情況,串列埠會設定校驗位(資料位後面的一位),用乙個值確保傳輸的資料有偶個或者奇個邏輯高位。

例如,如果資料是011,那麼對於偶校驗,校驗位為0,保證邏輯高的位數是偶數個。

如果是奇校驗,校驗位位1,這樣就有3個邏輯高位。高位和低位不真正的檢查資料,簡單置位邏輯高或者邏輯低校驗。這樣使得接收裝置能夠知道乙個位的狀態,有機會判斷是否有雜訊干擾了通訊或者是否傳輸和接收資料是否不同步。

微控制器串列埠通訊原理

10樓:匿名使用者

1、51系列微控制器的串列埠有4個模式,可分別用作串並轉換、並串轉換、非同步序列通訊(2種模式)。非同步序列通訊中,有1+8+1和1+8+1+1兩種幀格式,多機通訊是特殊的通訊方式。

2、基本原理是兩組移位暫存器。將並行通訊轉換成序列通訊模式(傳送部分),或反之(接收部分)。可全雙工執行。

3、速度通過移位脈衝決定。具體一般通過定時器1的自動裝載模式產生的溢位脈衝給出。

4、電平上採用的是cmos邏輯。

5、以上是物理層和資料鏈路層的微控制器串列埠模組的約定,其他層需要軟體人員根據需要自行把握。另外,電平需要根據實際通訊環境做變換,如232、485或紅外等。

11樓:可以叫我表哥

序列通訊的基本原理:

串列埠的本質功能是作為cpu和序列裝置間的編碼轉換器。當資料從 cpu經過串列埠傳送出去時,位元組資料轉換為序列的位。在接收資料時,序列的位被轉換為位元組資料。

在windows環境(windows nt、win98、windows2000)下,串列埠是系統資源的一部分。

應用程式要使用串列埠進行通訊,必須在使用之前向作業系統提出資源申請要求(開啟串列埠),通訊完成後必須釋放資源(關閉串列埠)。

12樓:匿名使用者

將乙個或多個位元組一位一位地通過序列匯流排按照一定的頻率(波特率)傳送出去就是串列埠通訊,接收方和傳送方要有相同的物理設定(如波特率)和協議設定

51微控制器串列埠通訊

13樓:匿名使用者

#include

#include

unsigned char ch;

bit read_flag= 0 ;

void init_serial***( void ) //串列埠通訊初始設定

//向串列埠傳送乙個字元

void send_char_***( unsigned char ch)

//串列埠接收中斷函式

void serial () interrupt 4 using 3}main()}}

14樓:

// 微控制器序列口傳送/接收

程式,每接收到位元組即傳送出去

// 和微機相接後鍵入的字元回顯示在螢幕上// 可用此程式測試

//#include

#define xtal 11059200 // cup 晶振頻率

#define baudrate 9600 // 通訊波特率void main(void)}

15樓:匿名使用者

//e51pro.c

//easy 51pro程式設計器主程式,負責通訊,管理程式設計操作

#include

byte ***buf[18];//串列埠通訊資料快取,傳送和接收都使用

uint naddress;//rom中位址計數

uint ntimeout;//超時計數

prowork pw;//程式設計器一般操作

void delay_us(byte nus)//微秒級延時<255us

***buf[n]=sbuf;

ri=0;

}return 1;

}bool waitresp()//等待上位機回應,1位元組,有超時限制

}ri=0;

***buf[0]=sbuf;

return 1;

}bool waitdata()//寫器件時等待上位機資料,18位元組,有超時限制

}ri=0;

***buf[n]=sbuf;

}return 1;

}void senddata()//傳送資料或回應操作完成,18位元組

ti=0;}}

void sendresp()//回應上位機1個位元組,在寫器件函式中使用

ti=0;

}void setvpp5v()//設定vpp為5v

void setvpp0v()//設定vpp為0v

void setvpp12v()//設定vpp為12v

void rstpro()//程式設計器復位

void readsign()//讀特徵字

void erase()//擦除器件

void write()//寫器件

naddress++;//下乙個單元

}***buf[0]=1;//回應上位機乙個位元組,表示資料塊順利完成,請求繼續

sendresp();

}else if(***buf[0]==0x00)//寫器件結束

break;

else//可能是通訊出錯了

}else//等待資料失敗

}pw.fpproover();//程式設計結束後的工作

delay_ms(50);//延時等待上位機寫執行緒結束

***buf[0]=0;//通知上位機程式設計器進入就緒狀態

senddata();

}void read()//讀器件

else if(***buf[0]==0xff)//0xff表示重發

for(n=2;n<=17;n++)//***buf[2~17]儲存讀出的資料塊

***buf[0]=6;//向上位機傳送讀出的資料塊

senddata();

}else

break;//等待回應失敗

}pw.fpproover();//操作結束設定為執行狀態

***buf[0]=0;//通知上位機程式設計器進入就緒狀態

senddata();

}void lock()//寫鎖定位

//所支援的fid,請在這裡繼續新增

extern void preparepro00();//fid=00:at89c51程式設計器

extern void preparepro01();//fid=01:at89c2051程式設計器

extern void preparepro02();//fid=02:at89s51程式設計器

void main()

switch(***buf[1])//根據fid設定(prowork)pw中的函式指標

switch(***buf[0])//根據操作id跳到不同的操作函式}}

arm微控制器串列埠通訊接收不到,arm 微控制器串列埠通訊 接收不到

微控制器和arm這兩樣的板子都是你自己的,就從這兩個塊子查起嗎,這樣問別人也不好說是什麼原因,也沒看到你的板子。要搞清幾個問題 1,微控制器與串列埠除錯助手能通訊成功,是雙向的,即微控制器是與電腦通訊吧,電腦能收 發,還是單向的,微控制器只收嗎。2 同樣,串列埠除錯助手與arm也能通訊成功,也是雙向...

pc機與微控制器串列埠通訊問題利用串列埠通訊助手將字串發給微控制器微控制器返回字串到串列埠通訊助手

問題出在你傳送時關掉中斷,因為丟掉了資料造成的,解決的辦法是 延時一段時間等待接收完畢後再傳送,比如檢測到有接收資料後,延時10毫秒,之後再傳送回pc。給你指出幾處明顯的錯誤。1.resv沒有最大值的限定,這樣你的程式在執行的時候ch resv 會指向不明位址,因為ch最大為10個位元組。2.某種程...

微控制器通過串列埠傳送的是什麼微控制器通過串列埠傳送的是什麼?

一般來說,發什麼的資料是取決於傳送端的,比如0x30,你說這個數怎麼顯示?如果是bcd碼,就顯示30,如果是asii碼就顯示0,如果是一般的十六進位製數顯示就顯示0x30,如果需要轉換換成十進位制就是48。如果你不知道人家發的是什麼,怎麼解碼?微控制器,每次,通過串列埠傳送的是8位二進位製數,即乙個...