導航:首頁 > 操作系統 > pc機與單片機通信

pc機與單片機通信

發布時間:2022-11-26 09:40:44

Ⅰ PC機與單片機通信問題

多個單片機與PC機通訊是可以,但是這種方法個人覺得不穩定、不夠完善 如果需要遠距離傳輸的話,可以使用RS485 RS-485最大的通信距離約為1219M,最大傳輸速率為10Mb/S,傳輸速率與傳輸距離成反比,在100Kb/S的傳輸速率下,才可以達到最大的通信距離,如果需傳輸更長的距離,需要加485中繼器。RS-485匯流排一般最大支持32個節點,如果使用特製的485晶元,可以達到128個或者256個節點,最大的可以支持到400個節點。 因RS-485介面具有良好的抗雜訊干擾性,長的傳輸距離和多站能力等上述優點就使其成為首選的串列介面。 因為RS485介面組成的半雙工網路,一般只需二根連線,所以RS485介面均採用屏蔽雙絞線傳輸。 RS485介面連接器採用DB-9的9芯插頭座,與智能終端RS485介面採用DB-9(孔),與鍵盤連接的鍵盤介面RS485採用DB-9(針)。 以上就是RS485的有點,它的應用也多 希望我的回答能帶給樓主一點幫助。

Ⅱ 如何實現PC機與單片機AT89C51的串列通信

首先要看PC機有沒有串口,即是電腦上的COM口,這是RS232口,有的話,就很方便。
單片機的RXD,TXD兩個腳就是串列通信的引腳,用一片MAX232,或MAX202,把RXD,TXD兩腳接到MAX232上,組成一個RS232介面電路,MAX232的RXD,TXD接到DB9頭上,再用一條串口線,連接單片機的DB9頭和電腦上的串口,也是一個DB9頭。
硬體連接好了,在單片機上就要寫串列通信程序了。
這方面的資料,在網路知道里可以搜索到無數個。
如果電腦上沒有串口,就得買一條USB轉串口線了,USB一端插到電腦的USB口上,安裝上驅動程序,這樣,電腦就多出一個虛擬串口了。USB轉串口線另一端就是DB9頭,就插到單片機的DB9頭上,也同樣可以串列通信。

Ⅲ pc機和單片機的串列通信怎樣實現!

pc機是上位機,單片機是下位機,首先確定單片機同pc連接號232
介面的或者usb轉232 視你的單片機類型而定下載個軟體串口調試助手或者windows自帶的超級終端調試,寫好的程序將字元串發送給pc機或者用軟體將字元串寫如單片機通過數碼管或者液晶顯示,其中牽涉通訊協議和串口設置,程序生活如歌如上已經說了,可以借鑒下。是在沒有明了,找些串口調試的資料在單片機開發版裡面,許多都帶了!

Ⅳ 如何實現(電腦)PC機與單片機的串列通信

硬體部分有二種情況
1、電腦帶有原生串口,就是主板上帶有串列口,這個情況就太好辦了。用「串口調試助手」測試一下就可以用VB寫程序了。電腦和單片機用232晶元進行介面轉換。
2、電腦沒有原生串口,就是主板上沒有串列口,這個情況有點麻煩。要用USB轉串口的模塊,裝好驅動後會在「設備管理器」中出現一個串口,直接當原生串口用就行了,而且經過USB轉出來的串口一般都TTL電平的,也就是可以直接接單片機不用232晶元的。不過這也要看你用的是哪種模塊了,具體的要看模塊說明書。
最後要注意的是波特率和單片機晶振的選用,不知道你用的是什麼型號的單片機。

軟體部分,可以用簡單的VB編寫上位機軟體,這方面網上有很多的代碼。單片機部分只要按照普通的串列寫程序就行了,測試時可以用「串口調試助手」這款軟體,調試好後再寫VB程序。
上述是我們做項目和產品的經驗,希望對你有所幫助。

Ⅳ 51單片機與PC機串列通信

SERIALS:
; 加上關總中斷
MOV A,#55H ;給PC機發送字元55H
MOV SBUF,A
JNB TI,$
CLR TI
; 這里加上,等待RI=1的語句
MOV A,SBUF ; 等待PC機發送字元AAH,接到AA後,給PC機發送字元K
CJNE A,#0AAH,$ ;這一句要換掉,不然,你接收的不是0aaH,你就死在這了
MOV A,#'K' ; 匯編中表示字元是這樣嗎?#'K' 請查證後再寫
MOV SBUF,A
;為什麼不加上等待發送結束?
CLR RI
reti
END

加上的:

1,為什麼要加上關總中斷?
答:就怕在中斷程序中又觸發其它優先順序更高的中斷。

2,CJNE A,#0AAH,$ ;這一句要換掉,不然,你接收的不是0aaH,你就死在這了 這我也不明白,為什麼會死掉?要換的話換成什麼?看我改過的程序,換成那樣行不?
答:CJNE A,#0AAH,$ 判斷A里,如果不是你要的值0aaH 那程序就一直在原處,並且,程序是不會響應串口再次發送的數據,換成你寫的這樣,就可以:一直到上位機發AAH,才往下執行。可以的。

3,MOV A,#'K' 這句話沒問題的,就是把K的ASCII碼發到A上
我按照你的意思,把程序改了下。不過調試的時候還是不行,麻煩你再看看

另外,我多嘴一句,你這個程序很容易就死在中斷程序里,匯編我不常用,看看是可以。
做雙方通信,你要確定以下內容:
1、電路是否正常工作
2、波特率、起始位、停止位是否一致
3、用上位機小軟體時,是否選擇是字元發送接收還是十六進制數發送接收。

串口中斷程序中,不要加入太多程序,建議:
串口中斷程序中,寫,判斷是接收中斷還是發送中斷,是發送中斷,執行空語句,是接收中斷,接收到什麼置相應標志位,然後主程序中判斷標志位,作相應的處理,可以理解嗎?

Ⅵ pc機與單片機通信

1、不知道你用什麼單片機,無論什麼單片機,串口通信都是標準的RS232,你在單片機中開串口通信,設置好數據位數和波特率,發送數據即可。

2、串口調試只是一個簡單的上位機小軟體,你網上隨便搜索一下,一大堆。這種類似的軟體可以接收外部傳輸給電腦的串口數據,當然,電腦也可以通過此軟體將數據傳輸給外部設備,在這里就是指你的單片機,它們的協議是RS232。

3、PL2303網上有很多資料的,你要學會自己先搜索資料,嘗試自己解決問題,不要一遇到問題就先去問人,實在自己解決不了再去求助,否則會阻礙你的進步。當然,不是說你不會進步,只是進步得會慢很多很多。

自已解決問題,也是一種能力的體現。

PL2303的圖,我給你一份吧,我一直用著的,保證是可以實現的,請放心使用。就在文件裡面有,你找一下PL2303那個模塊電路就可以找到了。

有問題互相交流,大家一起進步!

Ⅶ 怎麼實現單片機和PC機進行SPI通訊

實現單片機和PC機進行SPI通訊方法:
1:電路設計
設計的電路,利用兩片AT89C52晶元,一片做為發送模塊,一片做為接收模塊。分別編寫發送和接收程序,實現數據的發送和接受。通過LED顯示接收到的數據。通過示波器觀察輸出的波形。
2:編寫程序
根據設計好的電路及題目要求分別編寫數據發送程序和數據接收程序。 ①:數據發送程序 #define
uchar unsigned char
#define uint unsigned int

#define ulong unsigned long
//--------------------------- #include <REG52.H>
#include<STDIO.H>
//--------------------------- sbit SPICLK = P1^0; //時鍾信號 sbit MOSI = P1^1; //主器件數據輸出,從器件數據輸入 sbit MISO = P1^2; //主器件數據輸入,從器件數據輸出
sbit SS = P1^3; //從器件使能信號
void Dat_Transmit(uchar dat) //發送數據程序
{ uchar i,datbuf;
datbuf=dat;
SS=1; while(SS){;} for(i=0;i<8;i++) {
while(SPICLK){;} if(datbuf&0x80) MISO=1; else
MISO=0;
datbuf=(datbuf<<1); while(~SPICLK){;}
}
}
void main(void)
{ uchar i; while(1) {
for(i=0;i<10;i++) {
Dat_Transmit(i);
}
}
}
②:數據接收程序 #define uchar unsigned char
#define uint unsigned int #define ulong
unsigned long
//--------------------------- #include <REG52.H>
#include<STDIO.H>
//--------------------------- sbit SPICLK = P1^0; //時鍾信號 sbit MOSI = P1^1; //主器件數據輸出,從器件數據輸入 sbit MISO = P1^2; //主器件數據輸入,從器件數據輸出 sbit SS = P1^3; //從器件使能信號

//--------------------------- void Nop(void)
{ ;
}
void Delay(uchar t) { while(t--){;}
}

uchar Data_Receive(void) //數據接收程序
{ uchar i,dat=0,temp; bit
bt;

SPICLK=1; MISO=1; SS=0;
//選中器件
Nop(); Nop();
for(i=0;i<8;i++) { SPICLK=1;
Nop()
Nop(); Nop(); SPICLK=0; Nop(); Nop();
bt=MISO; if(bt)
temp=0x01;
else
temp=0x00;
dat=(dat<<1);

dat=(dat|temp);
}
SS=1; SPICLK=1;
return dat;

}
void main(void)
{ uchar exdat; uchar i=0;

uchar code
table[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F,0x6F}; P2=0;
while(1) { exdat=Data_Receive(); P0=table[exdat];
for(i=0;i<200;i++)
Delay(200);
}
}
3:電路模擬
將數據發送程序生成的HEX文件載入到發送數據的模塊,將數據接收程序生成的HEX文件載入到接收數據的模塊。在輸出埠連接LED燈等到輸出信息,利用示波器觀察輸出波形。
4:SPI匯流排簡介
SPI ( Serial Peripheral Interface ——串列外設介面) 匯流排是Motorola公司推出的一種同步串列介面技術。SPI匯流排系統是一種同步串列外設介面,允許MCU(微控制器)與各種外圍設備以串列方式進行通信、數據交換。外圍設備包括FLASHRAM、A/ D 轉換器、網路控制器、MCU 等。SPI,是一種高速的,全雙工,同步的通信匯流排,並且在晶元的管腳上只佔用四根線,節約了晶元的管腳,同時為PCB的布局上節省空間,提供方便,正是出於這種簡單易用的特性,現在越來越多的晶元集成了這種通信協議。其工作模式有兩種:主模式和從模式。SPI是一種允許一個主設備啟動一個從設備的同步通訊的協議,從而完成數據的交換。也就是SPI是一種規定好的通訊方式。這種通信方式的優點是佔用埠較少,一般4根就夠基本通訊了(不算電源線)。同時傳輸速度也很高。一般來說要求主設備要有SPI控制器(也可用模擬方式),就可以與基於SPI的晶元通訊了。
利用SPI匯流排可在軟體的控制下構成各種系統。如1個主MCU和幾個從MCU、幾個從MCU相互連接構成多主機系統(分布式系統)、1個主MCU和1個或幾個從I/O設備所構成的各種系統等。在大多數應用場合,可使用1個MCU作為主控機來控制數據,並向1個或幾個從外圍器件傳送該數據。從器件只有在主機發命令時才能接收或發送數據。其數據的傳輸格式是高位(MSB)在前,低位(LSB)在後。
當一個主控機通過SPI與幾種不同的串列I/O晶元相連時,必須使用每片的允許控制端,這可通過MCU的I/O埠輸出線來實現。但應特別注意這些串列I/O晶元的輸入輸出特性:首先是輸入晶元的串列數據輸出是否有三態控制端。平時未選中晶元時,輸出端應處於高阻態。
若沒有三態控制端,則應外加三態門。否則MCU的MISO端只能連接1個輸入晶元。其次是輸出晶元的串列數據輸入是否有允許控制端。因為只有在此晶元允許時,SCK脈沖才把串列數據移入該晶元;在禁止時,SCK對晶元無影響。若沒有允許控制端,則應在外圍用門電路對SCK進行控制,然後再加到晶元的時鍾輸入端;當然,也可以只在SPI匯流排上連接1個晶元,而不再連接其它輸入或輸出晶元。
SPI介面是在CPU和外圍低速器件之間進行同步串列數據傳輸,在主器件的移位脈沖下,數據按位傳輸,高位在前,低位在後,為全雙工通信,數據傳輸速度總體來說比I2C匯流排要快,速度可達到幾Mbps。
5:SPI匯流排工作原理
SPI匯流排系統是一種同步串列外設介面,它可以使MCU與各種外圍設備以串列方式進行通信以交換信息。SPI有三個寄存器分別為:控制寄存器SPCR,狀態寄存器SPSR,數據寄存器。外圍設備、網路控制器、LCD顯示驅動器、A/D轉換器和MCU等。
介麵包括以下四種信號:
(1)MOSI – 主器件數據輸出,從器件數據輸入;

(2)MISO – 主器件數據輸入,從器件數據輸出;

(3)SCLK – 時鍾信號,由主器件產生;
(4) SS –從器件使能信號,由主器件控制,有的IC會標注為CS(Chip select)。 在點對點的通信中,SPI介面不需要進行定址操作,且為全雙工通信,顯得簡單高效。

Ⅷ 單片機跟PC機通信 PC機發送數據,單片機收到後將數據在數碼管顯示,同時將數據返回給PC機,求程序

單片機與PC機串口通信,單片機的串口收發程序很簡單,網上也非常多,對串口初始後,設置好波特率,開串口中斷,就可以等待接收PC的數據了,如果PC發單位元組數據,收到後原樣發送即可。

Ⅸ 單片機和pc機通過rs232進行串口通信

這個簡單,俺就送你一個串口發送反饋的程序吧


利用電腦上的串口助手,向單片機發送數據,單片機原封不動的再反饋回來


若滿意,請記得採納,謝謝



/***************************************************************************/

//串口波特率 9600 ,單片機晶振 11.0592

#include <REG52.h> //通用89C52頭文件

char aa,fe=0;

/***************************************************************************/

void MScomm(void)//串口初始化

{

TMOD=0x20; //定時器1工作方式2,8位,,定時器0工作方式1,16位

PCON=0x00; //SMOD=0,不加倍

SCON=0x50; //串口工作方式1,允許接收

IE=0x92; //啟用串口中斷與定時器0中斷,並開啟總中斷

TH1=0xfd; //定時器1設置初值,波特率9600bit/s,

TL1=0xff; //晶振頻率 11.0592

TR1=1; //啟動定時器T1

}

/***************************************************************************/

void main(void)//主函數

{

MScomm(); //串口初始化

while(1) //主循環

{

if(fe==1) //如果接收過數據

{

SBUF=aa; //把接收到的字元發送出去

while(!TI);//等待發送完成

TI=0; //清空發送標志位

fe=0; //設置標識符

}

}

}

/***************************************************************************/

void ser() interrupt 4//串口接收,中斷方式

{

if(fe==0) //如果沒接收過數據

{

aa=SBUF; //接收一個字元

while(!RI); //等待接收完成

RI=0; //清空接收標志位

fe=1; //設置標識符

}

}

/***************************************************************************/

閱讀全文

與pc機與單片機通信相關的資料

熱點內容
法國電影love 瀏覽:40
泰國電影女拳 瀏覽:386
風月by狸貓免費閱讀 瀏覽:697
msp430編程教程 瀏覽:856
神鼠全集 瀏覽:50
破案電影全部 瀏覽:934
中文字幕在線觀看網站網址 瀏覽:183
獸人電影有多少部 瀏覽:514
女同超人 瀏覽:923
電影大象生殖器 瀏覽:741
英語視聽說伺服器地址輸錯了怎麼辦 瀏覽:109
重生楊過收穆念慈,洗澡 瀏覽:836
工商總局app在哪裡下載 瀏覽:246
免費成人影院網站是多少 瀏覽:156
hp伺服器閃紅燈什麼意思 瀏覽:244
php加入購物車代碼 瀏覽:921
奇跡男孩電影完整版免費播放 瀏覽:663
羅曼史生孩子在那一段在幾分鍾 瀏覽:953
成龍40部經典電影 瀏覽:795
程序員連出兩次線上事故 瀏覽:427