① 51單片機與PC機之間的硬體如何串口連接
單片機和微機通信的電氣標准要一致,微機串口一般是RS232電氣標准,所以要加電平轉換晶元,大多用MAX232,一般單片機實驗板上都提供這樣的標准串口。
要隱判或分別編寫上位機和下位機軟體程序,單沖亂片機程序參照常式、教科書進行編寫;上位機微機可採用VB,組態軟體,Labview等軟體編寫,一般若是簡單的通信,上位機程序編寫很簡單,例如VB中學會使用mscomm控制項,有VB最基礎知識的一天就能學會。
大可以沒有單片機,沒有MAX232,沒有串列介面這些硬體就可以實現學習並掌握單片機與微機之間的串口通信。proteus可以模擬單片機,也是主流軟體。
如今的筆記本電腦幾乎都沒灶伍有保留串口,而用USB介面取而代之,不過沒關系,有了虛擬串口和串口調試助手,這些都解決了。你可以搜索一下虛擬串口,真的很不錯的。
② 51單片機怎樣和PC通過RS485進行通信
你已經用USB轉成RS485,再將RS485轉成TTL了,剩下的事就簡單了,就把RS485TTL的RXD接到單片機RXD,把485TTL的TXD接到單片機的TXD上就行了。然後就要寫程序了。電腦的USB轉485線要安驅動程序,虛擬出一個串口來,電腦就可以用串口調試助手與單片機通信了。
③ 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;
}
④ 51單片機與PC進行串口通信,可以燒寫,但是不能通信
首先,別亂試MAX232周圍的那四個電容,根據MAX232的數據說明書里規定這四個電容必須是1uF的,並且最好是帶極性的電解電容(耐壓至少16V以上)。
既然能進行ISP在線編程燒寫程序進去,那說明硬體是沒有問題。你的程序在開發板上實現過,但能確認開發板的串口電路和你現在用的ISP電路是一樣的么?
還有,計算機上的串口接收軟體也沒設置好也收不到數據的!
如果懷疑是串口硬體電路的問題,可以做這樣的實驗,就是讓把單片機拔出來,MAX232留著,PC上的串口發送數據,然後把原本接單片機TXD和RXD的兩個數據引腳短路,看看PC上的接收軟體是否能接收到直接發送並返回的數據,如果能成功,則證明串口硬體電路沒問題。
串口通訊有的時候要求很多,你先實驗一下能不能單片機只給PC發送數據。然後再試把數據從PC發下去,讓單片機返回數據。
還有問題可以發網路HI的信息給我。
⑤ 51單片機與pc通信,波特率是2400倍增的可以准確的發送和收回數據,其他波特率都不能正確的發送和收回數據
串列通信的波特率一般都取2400的整數倍。
PC機上串口的波特率也是按這個取值的。
如下圖,這是超級終端的波特率取值。
而對於單片機,需要串口通信時,晶振頻率通常取11.0592MHz,或者2倍。取這個值的目的就是計算出的串口通信的波特率誤差幾乎為0。而取其它頻率就有誤差。同時,晶振取這個值,波特率也要取2400的整數倍,波特率誤差才幾乎為0。這兩個值有一個不滿足,實際的波特率都會有變誤差。因為,串口通信是兩者的非同步通信,如果兩者的波特率不相同,就無法正確通信的。
這就是串口通信波特率不能任何取值的原因。