⑴ 單片機與PC通訊有什麼方式
電腦和單片機除了串口,再有就是網路通訊方式。但是需要有網口介面晶元,還要編寫支持TCP/IP協議的程序。可是用傳統的51單片機卻很難實現。你可以用STM32單片機組成支持互聯網通信的系統,就可以達到1Mbps以上。除此,再無其它方法。
⑵ PC與單片機串列通信控制背景和意義
單片機串列通信的實際作用:一般用於和外部設備交換數據的
舉例來說:一、比如和PC的串口機通信,單片機可以採集一些模擬量(溫度,濕度,氣體濃度等),將這些模擬量轉換成數字量後通過串列通信介面傳輸個PC機,PC機上還得編寫一個簡單的應用軟體,可以顯示這些模擬量(溫度,濕度,氣體濃度等)的值,這個簡單的應用軟體應具有串口設置,數據顯示,繪制曲線等功能。還可以通過PC機串口發送數據給單片機,用來控制單片機的工作狀態等等。和PC機通信應該是應用最廣泛的。
二、和其他串口設備通信:單片機一般充當控制器的角色,通過串口發送一定格式的數據來控制與之相連設備的動作,同時設備也會反饋回來一些自己的狀態信息給單片機,供單片機進行判斷,做出相應的控制。
⑶ PC串口如何給單片機供電
PC串口無法給單片機供電的,一方面是串口電源的輸出功率不足,另一方便,RS232口的電壓也不合適供電,不是5V電壓。你用USB口供電到時可以的。
⑷ 單片機通過串口向PC不間斷發送變化的數據,PC接收總是延遲
這個問題很常見了,解決方法:
如果你能更改上位機軟體,將上位機軟體接收數據那塊改為"一旦接收緩沖區有數據,立刻讀出來顯示".
如果你沒辦法更改上位機軟體,那麼你可以間隔發送,比如兩包數據間隔為0.5S,或者找一款可以實時顯示的調試助手,推薦使用ttermpro測試下
⑸ 利用串口實現單片機與PC超級終端通信
標准串口參考程序如下:(來源周立功單片機公司)具有一般參考意義。
#include<reg51.h>
unsigned char UART_RX; //定義串口接收數據變數
unsigned char RX_flag; //定義穿行接收標記
/*********************************************************************************************
函數名:UART串口初始化函數
調 用:UART_init();
參 數:無
返回值:無
結 果:啟動UART串口接收中斷,允許串口接收,啟動T/C1產生波特率(佔用)
備 註:振盪晶體為12MHz,PC串口端設置 [ 4800,8,無,1,無 ]
/**********************************************************************************************/
void UART_init (void){
EA = 1; //允許總中斷(如不使用中斷,可用//屏蔽)
ES = 1; //允許UART串口的中斷
TMOD = 0x20; //定時器T/C1工作方式2
SCON = 0x50; //串口工作方式1,允許串口接收(SCON = 0x40 時禁止串口接收)
TH1 = 0xF3; //定時器初值高8位設置
TL1 = 0xF3; //定時器初值低8位設置
PCON = 0x80; //波特率倍頻(屏蔽本句波特率為2400)
TR1 = 1; //定時器啟動
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:UART串口接收中斷處理函數
調 用:[SBUF收到數據後中斷處理]
參 數:無
返回值:無
結 果:UART串口接收到數據時產生中斷,用戶對數據進行處理(並發送回去)
備 註:過長的處理程序會影響後面數據的接收
/**********************************************************************************************/
void UART_R (void) interrupt 4 using 1{ //切換寄存器組到1
RI = 0; //令接收中斷標志位為0(軟體清零)
UART_RX = SBUF; //將接收到的數據送入變數 UART_data
RX_flag=1; //標記接收
//用戶函數內容(用戶可使用UART_data做數據處理)
//SBUF = UART_data; //將接收的數據發送回去(刪除//即生效)
//while(TI == 0); //檢查發送中斷標志位
//TI = 0; //令發送中斷標志位為0(軟體清零)
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:UART串口發送函數
調 用:UART_T (?);
參 數:需要UART串口發送的數據(8位/1位元組)
返回值:無
結 果:將參數中的數據發送給UART串口,確認發送完成後退出,採用非中斷方式
備 註:
/**********************************************************************************************/
void UART_T (unsigned char UART_data){ //定義串口發送數據變數
ES=0; //禁止穿行中斷
SBUF = UART_data; //將接收的數據發送回去
while(TI == 0); //檢查發送中斷標志位
TI = 0; //令發送中斷標志位為0(軟體清零)
ES=1; //打開穿行中斷
}
/*********************************************************************************************
函數名:UART串口發送字元串函數
調 用:UART_S (?);
參 數:需要UART串口發送的數據(8位/1位元組)
返回值:無
結 果:將參數中的數據發送給UART串口,確認發送完成後退出,採用非中斷方式
備 註:
/**********************************************************************************************/
void UART_S(unsigned char *str)
{
while(1)
{
if(*str=='\0') break;
UART_T(*str++);
}
}
/*********************************************************************************************
函數名:主函數
調 用:main();
參 數:
返回值:無
結 果:
備 註:
/**********************************************************************************************/
void main()
{
unsigned char Buf_data[]={" welcome to MCU world. \n\r"};
UART_init();
UART_S(Buf_data);
while(1){
if(RX_flag==1)
{
UART_T(UART_RX);
RX_flag=0;
}
}
}
///////////////////////////////////////////////////////////////////
個人認為普通單片機在通信頻率上及不上AVR單片機,更可能使用USB轉串口工具進行開發,所以串口波特率不能過高,最好是2400或4800。過高只會導致亂碼或丟失。而樓主的中斷服務程序也不正確,設計缺乏經驗,所以需要繼續努力。
⑹ 兩個單片機之間串口通信,PC如何監聽通信數據
PC要監聽通信數據,三者必須採用RS485匯流排,而PC需要安一個RS232轉RS485的轉換器才行,並且電腦只能處於接收狀態,兩個單片機用485匯流排互相通信。電腦端可以用串口調試助手軟體就行。
⑺ 51單片機與PC機之間的硬體如何串口連接
單片機和微機通信的電氣標准要一致,微機串口一般是RS232電氣標准,所以要加電平轉換晶元,大多用MAX232,一般單片機實驗板上都提供這樣的標准串口。
要分別編寫上位機和下位機軟體程序,單片機程序參照常式、教科書進行編寫;上位機微機可採用VB,組態軟體,Labview等軟體編寫,一般若是簡單的通信,上位機程序編寫很簡單,例如VB中學會使用mscomm控制項,有VB最基礎知識的一天就能學會。
大可以沒有單片機,沒有MAX232,沒有串列介面這些硬體就可以實現學習並掌握單片機與微機之間的串口通信。proteus可以模擬單片機,也是主流軟體。
如今的筆記本電腦幾乎都沒有保留串口,而用USB介面取而代之,不過沒關系,有了虛擬串口和串口調試助手,這些都解決了。你可以搜索一下虛擬串口,真的很不錯的。
⑻ 單片機與PC之間的串口通信需要什麼條件
好像不需要其它條件吧
單片機與PC通信一般就是用串口,當然也有用並口的
用串口通信,距離在10米內用RS232,超過了就用RS485或是RS422
單片機是硬體,由時鍾控制向PC發送數據,或是接收數據
在PC端,編程也是用底層時鍾控制,不斷的接收或是發送數據
要看你用何種程序寫了,一般的VB、C都有串口連接控制項,直接調用它就可以與單片機通信
⑼ 51單片機用串口跟pc通信進行收發數據
//代碼來自單片機小精靈v1.3
//波特率960011.0592晶振方式2
#include<reg51.h>
voidInitUART(void)
{
TMOD=0x20;
SCON=0x50;
TH1=0xFD;
TL1=TH1;
PCON=0x00;
EA=1;
ES=1;
TR1=1;
}
voidSendOneByte(unsignedcharc)
{
SBUF=c;
while(!TI);
TI=0;
}
voidmain(void)
{
InitUART();
}
voidUARTInterrupt(void)interrupt4
{
if(RI)
{
RI=0;
//addyourcodehere!
}
else
TI=0;
}