怎麼實現51微控制器與電腦串列埠之間的通訊

2021-03-11 04:08:02 字數 8464 閱讀 7734

1樓:匿名使用者

首先,微控制器和微機通訊的電氣標準要一致,微機串列埠一般是rs232電氣標準,所以要加電平轉版換晶片權,大多用max232,一般微控制器實驗板上都提供這樣的標準串列埠。

其次,要分別編寫上位機和下位機軟體程式,微控制器程式參照例程、教科書進行編寫;上位機微機可採用vb,組態軟體,labview等軟體編寫,一般若是簡單的通訊,上位機程式編寫很簡單,例如vb中學會使用ms***m控制元件,有vb最基礎知識的一天就能學會。

最後,大可以沒有微控制器,沒有max232,沒有序列介面這些硬體就可以實現學習並掌握微控制器與微機之間的串列埠通訊。proteus可以**微控制器,也是主流軟體。另外,如今的膝上型電腦幾乎都沒有保留串列埠,而用usb介面取而代之,不過沒關係,有了虛擬串列埠和串列埠除錯助手,這些都解決了。

你可以搜尋一下虛擬串列埠,真的很不錯的。

2樓:匿名使用者

微控制器和電腦之間要加個ttl-rs232電平轉換,一般用max232晶片及外圍電路實現。

然後通過串列埠線,3芯即可,連線與電腦的串列埠連線。

51微控制器與pc機之間的硬體如何串列埠連線?

3樓:匿名使用者

微控制器和微機bai

通訊du的電氣標準zhi要一致,微機串列埠一般是rs232電氣標準dao,所以要加電平轉換晶片,版大多權用max232,一般微控制器實驗板上都提供這樣的標準串列埠。

要分別編寫上位機和下位機軟體程式,微控制器程式參照例程、教科書進行編寫;上位機微機可採用vb,組態軟體,labview等軟體編寫,一般若是簡單的通訊,上位機程式編寫很簡單,例如vb中學會使用ms***m控制元件,有vb最基礎知識的一天就能學會。

大可以沒有微控制器,沒有max232,沒有序列介面這些硬體就可以實現學習並掌握微控制器與微機之間的串列埠通訊。proteus可以**微控制器,也是主流軟體。

如今的膝上型電腦幾乎都沒有保留串列埠,而用usb介面取而代之,不過沒關係,有了虛擬串列埠和串列埠除錯助手,這些都解決了。你可以搜尋一下虛擬串列埠,真的很不錯的。

4樓:

單片抄機通過txd和rxd兩條線 連線max232晶片後襲,轉換電平,連線pc串列埠,一般是2、3腳,5腳是地線。一共三根線。

微控制器的txd接電腦的rxd,微控制器的rxd接電腦的txd。地線接地線。

vb中要用ms***m控制元件,設定相同的波特率,起始、結束位、校驗位,資料位等。

vb的ms***m控制元件設定好埠號,然後portopen= true

就可以接收微控制器資料了。

簡單的就是用查詢的辦法,用一個定時器,不斷的查詢ms***m控制元件的input屬性和inbufferlen屬性。

ms***m控制元件有個接收模式,文字或者二進位制,如果簡單的,建議用文字的,比較好處理。

二進位制的,就用位元組陣列接收。也簡單。

檢測溫度的,直接把溫度轉換成數字字元,傳給電腦就ok了,單工的就ok了。

呵呵,女孩也學微控制器?哈哈,時代不同了。

請問51微控制器與51微控制器之間的串列埠通訊程式怎麼寫?

5樓:匿名使用者

1、查詢方式:

#include

main()

sbuf=dat;//傳送

while(!ti);

ti=0;}}

2、中斷方式:

#include

unsigned char dat;

bit flag;

void uart_isr() interrupt 4if(ti)ti=0;

}main()}}

6樓:走在時間的前頭

就是一個雙機通訊而已嘛,簡單的串列埠通訊,我這裡有一些資料,需要可以來找我。

7樓:做而論道

參考

8樓:匿名使用者

太簡單,找個例程,看看!太多了!一搜一堆

9樓:匿名使用者

給個郵箱,發給你一個**和**,你參考一下

51微控制器與pc機之間的硬體串列埠連線???? 具體的怎樣連線????

10樓:匿名使用者

51微控制器與pc機之間的硬體串列埠連線,

如果 pc 機有 *** 串列埠 用 rs232轉換ttl 與微控制器 rxd txd 連線,

如果 pc 機沒有 *** 串列埠 用 usb轉換ttl 與微控制器 rxd txd 連線,

硬體連線後 就是 微控制器 軟體 與 pc機軟體 vb 的 程式設計問題了,

還有設計一個 微控制器 與 vb 的 通訊協議。

11樓:匿名使用者

微控制器和微機通訊的電氣標準要一致,微機串列埠一般是rs232電氣標準,所以要加電平轉換晶片,大多用max232,一般微控制器實驗板上都提供這樣的標準串列埠。

要分別編寫上位機和下位機軟體程式,微控制器程式參照例程、教科書進行編寫;上位機微機可採用vb,組態軟體,labview等軟體編寫,一般若是簡單的通訊,上位機程式編寫很簡單,例如vb中學會使用ms***m控制元件,有vb最基礎知識的一天就能學會。

大可以沒有微控制器,沒有max232,沒有序列介面這些硬體就可以實現學習並掌握微控制器與微機之間的串列埠通訊。proteus可以**微控制器,也是主流軟體。

如今的膝上型電腦幾乎都沒有保留串列埠,而用usb介面取而代之,不過沒關係,有了虛擬串列埠和串列埠除錯助手,這些都解決了。你可以搜尋一下虛擬串列埠,真的很不錯的。

12樓:

微控制器通過txd和rxd兩條線 連線max232晶片後,轉換電平,連線pc串列埠,一般是2、3腳,5腳是地線。一共三根線。

微控制器的txd接電腦的rxd,微控制器的rxd接電腦的txd。地線接地線。

vb中要用ms***m控制元件,設定相同的波特率,起始、結束位、校驗位,資料位等。

vb的ms***m控制元件設定好埠號,然後portopen= true

就可以接收微控制器資料了。

簡單的就是用查詢的辦法,用一個定時器,不斷的查詢ms***m控制元件的input屬性和inbufferlen屬性。

ms***m控制元件有個接收模式,文字或者二進位制,如果簡單的,建議用文字的,比較好處理。

二進位制的,就用位元組陣列接收。也簡單。

檢測溫度的,直接把溫度轉換成數字字元,傳給電腦就ok了,單工的就ok了。

呵呵,女孩也學微控制器?哈哈,時代不同了。

13樓:匿名使用者

微控制器一般是3.3v或5v的電平,電腦串列埠要高點,大概是十幾伏,具體數值記不清楚了,所以要連線到電腦,就要進行電平轉換,用rs232系列的晶片就可以。

14樓:匿名使用者

可以通過pc的串列埠和usb口與微控制器連線,之間都需要電平轉換處理

利用串列埠,51微控制器與電腦間的通訊怎麼做?

15樓:匿名使用者

用uart非同步序列通訊方

bai式

51序列口有

du4種工作zhi方式,在序列口的dao4種工作方式中,方版式0主要用於擴權展並行i/o口,方式1、2、3則主要用於序列通訊。

pc機的序列介面為rs232形式的介面,其高低電平的規定與微控制器所規定的ttl電平不同,所以微控制器上也必須有232介面,可直接選用232介面晶片例如max232,還要準備"串列埠除錯助手"這一軟體。

max232是一個電平轉換晶片。微控制器的txd端接max232的11腳,rxd端接max232的12腳。電腦上rs232的2腳接max232的14腳,3腳接max232的13腳,rs232的5腳接地。

16樓:靳溪黎

串列埠的電平和微控制器的電平不一樣,一般要做一個電平轉換器.另在51裡編一程式,就可把51裡的相關資料傳送給電腦了.

51微控制器用串列埠跟pc通訊進行收發資料

17樓:匿名使用者

//**來

來自 微控制器

自小精靈v1.3

//波特率9600  11.0592晶振  方式2#include

void inituart(void)

void sendonebyte(unsigned char c)void main(void)

void uartinterrupt(void) interrupt 4

else

ti = 0;}

18樓:匿名使用者

程式中是19200.

通訊不上有很多原因,你的電路不對、甚至是連線不對,也會導致通訊不上內.

你可以試試跟蹤你的容程式,看看可否正確地接收到pc發過去的資料,先把接收程式調好,然後再調傳送部分,這樣才有目標.

19樓:windy_諾

樓主試試只傳送一個字元,1或者2,不要12一起傳送。如果硬體,連線沒有問題應該是傳送什麼pc就接收到什麼。

20樓:音悅

我提下問題,你看下是不是:

1、***口對不對

2、波特率在燒錄程式的時候有的,你看下是否相同

51微控制器就一個串列埠,如何與兩個模組之間實現通訊?

21樓:紅楓

在微控制器的接收端,串兩個二極體到模組的發射端,不然微控制器接收資料

會有問題。兩專個模組要是同屬時傳送資料的話,那肯定不行的。模組的接收端可以直接接在微控制器的發射端上。

傳輸的協議資料沒有什麼影響的話,兩個模組不同時傳送資料,就可以正常使用

如何實現2個51微控制器之間通過串列埠通訊的源程式

22樓:匿名使用者

彙編編寫的模擬串列埠通訊程式

t2作為波特率控制

uart_rxd 是硬中斷0或1口,如果能進入中斷,說明該線有一個起始位產生,進入中斷後調

用下面的接收程式。退出硬中斷之前還需要將硬中斷標誌重新復位。

uart_txd 是任何其它io即可。

uart_send:

push ie

push dph

push dpl

push psw

push 00h

push acc

clr ea

setb uart_txd ;start bit

mov r0,a

clr tr2 ;tr2置1,計數器2啟動,時間計數啟動。

mov a,rcap2l;計數器2重新裝載值

mov tl2,a ;置計數器2初值 ;t2需要重新裝載

mov a,dph

mov a,rcap2h

mov th2,a

mov a,r0

setb tr2 ;tr2置1,計數器

jnb tf2,$

clr tf2

jnb tf2,$

clr tf2

clr uart_txd ;start bit

jnb tf2,$

clr tf2

jnb tf2,$

clr tf2

mov r0,#08h

uart_send_loop:

rrc a

mov uart_txd,c ;8 bit

jnb tf2,$

clr tf2

jnb tf2,$

clr tf2

djnz r0,uart_send_loop

setb uart_txd ;end bit

jnb tf2,$

clr tf2

jnb tf2,$

clr tf2

pop acc

pop 00h

pop psw

pop dpl

pop dph

pop ie

ret;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

uart_rec:

push ie

push dph

push dpl

clr ea

clr tr2 ;tr2置1,計數器2啟動,時間計數啟動。

mov a,rcap2l;計數器2重新裝載值

mov tl2,a ;置計數器2初值 ;t2需要重新裝載

mov a,dph

mov a,rcap2h

mov th2,a

jb uart_rxd,$ ;rec

setb tr2 ;tr2置1,計數器2啟動,時間計數啟動。

jnb tf2,$

clr tf2 ;0.5 bit

jnb tf2,$

clr tf2 ;1 bit

jnb tf2,$

clr tf2 ;1.5 bit

mov c,uart_rxd

mov acc.0,c

jnb tf2,$

clr tf2

jnb tf2,$

clr tf2 ;2.5

mov c,uart_rxd

mov acc.1,c

jnb tf2,$

clr tf2

jnb tf2,$

clr tf2 ;3.5

mov c,uart_rxd

mov acc.2,c

jnb tf2,$

clr tf2

jnb tf2,$

clr tf2 ;4.5

mov c,uart_rxd

mov acc.3,c

jnb tf2,$

clr tf2

jnb tf2,$

clr tf2 ;5.5

mov c,uart_rxd

mov acc.4,c

jnb tf2,$

clr tf2

jnb tf2,$

clr tf2 ;6.5

mov c,uart_rxd

mov acc.5,c

jnb tf2,$

clr tf2

jnb tf2,$

clr tf2 ;7.5

mov c,uart_rxd

mov acc.6,c

jnb tf2,$

clr tf2

jnb tf2,$

clr tf2 ;8.5

mov c,uart_rxd

mov acc.7,c

jnb tf2,$

clr tf2 ;9.5

jnb uart_rxd,$ ;等待停止位,並重新復位計數器

setb uart_rxd

pop dpl

pop dph

pop ie

ret補充回答:

串列埠除錯

1. 傳送:向匯流排上發命令

2. 接收:從匯流排接收命令,並分析是地址還是資料。

3. 定時傳送:從記憶體中取數並向主機傳送.

經過除錯,以上功能基本實現,可以通過上位機對微控制器進行實時控制。

程式如下:

//這是一個微控制器c51串列埠接收(中斷)和傳送例程,可以用來測試51微控制器的中斷接收

//和查詢傳送,傳送沒有必要用中斷,因為程式的開銷是一樣的

#include

#include

#include

#define inbuf_len 4 //資料長度

unsigned char inbuf1[inbuf_len];

unsigned char checksum,count3 , flag,temp,ch;

bit read_flag=0;

sbit cp=p1^1;

sbit dir=p1^2;

int i;

unsigned int xdata *ramdata; /*定義ram地址指標*/

unsigned char a[6] = ;

void init_serial***m(void)

void serial () interrupt 4 using 3 }}

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

void timer0() interrupt 1 using 3

}//主程式

main()

while(1)

}除錯需要注意的問題:

1. 傳送過程:在傳送時必須保證ti=1:

即傳送緩衝器為空,否則將導致資料發不出去,如果想強制傳送可以用:ti=1.具體傳送資料:

利用printf(「abcd」);函式直接傳送即可。

2. 接收過程:在接收時多選用中斷方式,這樣可以節約cpu的時間,提高效率,

51微控制器串列埠傳送資料,51微控制器串列埠同時傳送文字和資料

程式採用了查詢copy式傳送,for i 0 i 6 i 共發bai送了6個字元。再去查詢收到否du。這種方法zhi,就是有問題的,發 dao送6個字元時,就可能收到了好幾個字元,而沒有及時儲存,完全可能丟失資訊。應該採用中斷方式接收 傳送,也可以用查詢,也可以用中斷。方法弄清楚了,程式就容易編寫 ...

51微控制器與vb通過串列埠通訊,微控制器為什麼只能傳送0至

傳送大數,你只能多次傳送,一次只能傳送一幀,而串列埠傳送的一幀可能是7 8 9位,由你設定而定。51微控制器是8位的,一次只能處理8位資料,也就是一個位元組,一個位元組只能表示0 255的大小的資料。一個位元組確實只能是0 255,但你可以連續發兩個位元組然後在vb裡面組成一個大於255的數。比如發...

51微控制器串列埠通訊問題

c51微控制器的程式 1 初始化程式 tmod 0x20 th1 0xfd tl1 0xfd 0 0 1 1 ren 1 tr1 1 ea 1 es 1 2 傳送程式 void data send 串列埠傳送資料3 接收資料 void data receive interrupt 4 include...