1. 電腦上RS232跟單片機怎麼連接
電腦通過RS232介面與單片機連接的常用實現如下圖(單片機以51系列為例):
3 RS-232
規定的邏輯電平與(51)單片機的邏輯電平不同(如:RS-232的邏輯「1」是以-3~-15V來表示的,而51單片機的邏輯「1」是以+5V來表示的)。因此,單片機系統與電腦的RS-232介面通信,必須把單片機的信號電平(TTL電平)轉換成計算機的RS-232C電平(或者反過來把計算機的RS-232C電平轉換成單片機的TTL電平),才能成功通訊。本方案使用電平轉換晶元MAX232晶元來實現電平轉換(連接圖中間的晶元)。
4(51)單片機使用RXD和TXD引腳執行串口數據輸入/輸出。
5 RS-232的RXD連接單片機TXD,TXD連接單片機RXD(中間用MAX232晶元轉換電平)。
通過上述步驟即可實現電腦通過RS232介面與單片機(串口)連接並通訊(未考慮軟體設置部分)。
2. 怎麼用RS232寫程序進單片機
首先確定AVR能不能用串口燒錄,也就是有沒有ISP(in system program 在系統編程)功能,說明一下
ISP功能是在ROM的最後1塊空間(一般是512 ~1024byte)里放了1段代碼,在單片機上電的時候進行特定的操作,單片機就不會從00開始執行程序,而是跳到最後那塊空間開始,這塊rom中的代碼的功能是通過串口接收PC發送過來的數據寫到其他的rom中去,這些數據包括命令和編譯好的程序的機器碼。所以即使有ISP功能你還得知道這些命令和數據的格式
3. 單片機RS232串口通信實驗
沒大問題,就是貼過來少了一些空格,
另外 倒數第四行檢測TI後忘記清零TI了,
修改後的代碼如下:
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN:
MOV SP,#60H
MOV TMOD, #20H
MOV TH1, #0FDH
MOV TL1, #0FDH
MOV SCON, #50H
MOV PCON, #00H
SETB TR1
MAINLOOP:
setb p1.7
jb p1.7,MAINLOOP
send$:
MOV SBUF, #41H
JNB TI, $
CLR TI
AJMP MAINLOOP
;
END
運行後如果把接到P1.7和地之間的開關接通讓P1.7為低電平,串口就以9600的波特率不斷發送字元A,如圖所示:
4. 單片機與相位計的RS232串口通信編程問題。 硬體已經沒有問題,c程序存在問題,請幫忙修改一下。
/*************************************************
如果你的相位計只需要在初始的時候發送p0 c0 l0 這三個的話,也就是說後繼的數據都是由相位計發送,
單片機接收的話,初始化部分沒有大問題,但接收數據的部分 ReceStr()有問題,應該是收不到數據吧?
1、串口初始化程序先確定TH1的值和單片機晶振匹配不?0xfd是用於11.0592M晶振的波特率不加倍(smod = 0)方式下的9600bps的
這個可以控制單片機發送,由pc設定9600接收,看單片機串列速率設置是否正確
2、你現在的串口接收函數執行了也收不到數據, 因為單片機串口只有一個位元組的緩沖,所以一般用中斷方式來接收數據,
每次有一個位元組收到後,通過中斷來將收到的位元組放入程序緩沖去。
還有接收變數怎麼會寫成float的?單位元組用char 。
如果是相位計的數據發過來是float類型,那需要你自己程序轉換,串口發送的只會是8bit的hex數據
3、如果程序需要很准確的延遲的話,延遲函數需要調試一下的
串口接收常式:
全局變數:
unsigned char x_Buf[50] = {0};
unsigned char * pX = x_Buf;
//volatile unsigned char posBf = 0;
中斷服務:
void Serial_ISR(void) interrupt 4
{
if(RI)
{
RI = 0;
*pX++ = SBUF;
if(pX == &x_Buf[49]+1) pX = x_Buf;
}
}
*************************************************/
/*------------------------------------------------
串口初始化
------------------------------------------------*/
void InitUART (void)
{
SCON = 0x50;
TMOD |= 0x20;
TH1 = 0xFD;
TR1 = 1;
ES = 1; //串口中斷使能
EA = 1;
}
5. 單片機rs232通訊怎麼用
方法有二:【1】弄個有串口的單片機,例如C8051F300,還有一片MAX232。一頭連接PC機,一頭連接單片機。單片機的GPIO連接x1和x2,例如P1.0 & P1.1,並設為中斷引腳。每次接收到x1 或者x2信號改變,就往PC機發送一段字元。PC機就檢查這個接受的字串,做相應的動作。這里涉及到MSCOMM32 或者 Windows API的CreateFile函數;【2】MAX232直接連接x1 和x2,另一端連接PC機的CTS 和RTS。也用CreateFile函數,不用單片機。Windows(PC機)直接檢查CTS 和RTS,間接有效!MS-COMM32也可以檢查CTS和RTS。