您的位置首页百科知识

VB与51单片机串口通信

VB与51单片机串口通信

的有关信息介绍如下:

VB与51单片机串口通信

通过一些简单程序,说明VB与51单片机的串口通信

VB 通信口设置:

Public Sub Rs_Port_Set()

On Error GoTo Err:

If (MSCOMM1.PortOpen = True) Then

MSCOMM1.PortOpen = False

End If

MSCOMM1.CommPort = Combo1.Text‘设置通信口

MSCOMM1.Settings = "9600,n,8,1" ‘设置波特率

MSCOMM1.InputLen = 1‘由串口读入字符串长度或字节个数

MSCOMM1.SThreshold = 0 ‘数据传送事件不会产生OnComm事件中的传送事件

MSCOMM1.RThreshold = 1‘设置或返回引发接收事件的字节数

MSCOMM1.InBufferCount = 0‘返回在接收寄传器中的字符数

MSCOMM1.InputMode = comInputModeBinary‘数据以二进制形式取回

MSCOMM1.PortOpen = True‘打开串口

Exit Sub

Err:

End Sub

VB发送函数:

Public Sub SendDataToCom(Num As Byte)

Dim oDt As Variant

Dim Y(0 To 0) As Byte

Y(0) = &H30 + Num

'//Y(1)= &HD ‘附加特定字符,可作协议。

'//Y(2)= &HA

oDt = Y

MSCOMM1.InBufferCount = 0 ‘清空缓冲

If MSCOMM1.PortOpen = True Then MSCOMM1.Output = oDt ‘发送数据

End Sub

VB OnComm事件:

Private Sub MSCOMM1_OnComm()

Dim I, hb As Integer

Static COMBUFF(10) As Byte

Dim Strtemp As String

On Error goto Err

hb = 1

Strtemp = ""

If MSCOMM1.InBufferCount = hb Then

For I = 0 To hb - 1

COMBUFF(I) = MSCOMM1.Input(0) ‘接收字符

Strtemp = Strtemp +Chr(COMBUFF(I))

Next I

End If

Exit Sub

Err:

End Sub

51单片机通信口设置:

void IniCom(void)

{

SCON = 0x50;//串口工作于方式1,充许接收

PCON = 0x00; //波特率不倍增

TMOD=0X20;//定时器计数器1工作于方式2;

TH1=TL1=0xFD;//波特率为9600;

针板 EA=1;

//ET1=1;//不能开截肥陕启定时器中断,否则进入不了串口中断

ES=1;//开串口中断

TR1=1; //开放定时器1,程序要加定时中断函数,否则程序出错.

}

查询方式:

for(;;)

{

while(RI==0);

RI=0;

ComData=SBUF;//接收数据

SBUF=ComData;//把收到数据再发送回去

while(TI==0);

TI=0;

}

发送函数:

//向串口发送一个字符

void SendChar(unsigned char ch)

{

SBUF=ch;

while(TI==0);

TI=0;

}

//向串口发送一个英盆字符串,strlen为该字符串长度

void SendString(unsigned char *str,unsignedint strlen)

{

unsigned int k=0;

do

{

SendChar(*(str + k));

k++;

}while(k < strlen);

}

//串口接收中断函数

void serial () interrupt 4 using 3

{

if (RI)

{

RI=0;

InBuf=SBUF;

}

}