2016 - 2024

感恩一路有你

VB与51单片机串口通信

浏览量:3464 时间:2024-01-22 21:53:17 作者:采采

Vb通信口设置

```

Public Sub Rs_Port_Set()

On Error GoTo Err:

If (MSCOMM1.PortOpen True) Then

MSCOMM1.PortOpen False

End If

Combo1.Text ‘设置通信口

"9600,n,8,1" ‘设置波特率

1 ‘由串口读入字符串长度或字节个数

0 ‘数据传送事件不会产生OnComm事件中的传送事件

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

0 ‘返回在接收寄传器中的字符数

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

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 hb Then

For I 0 To hb - 1

COMBUFF(I) (0) ‘接收字符

Strtemp Strtemp Chr(COMBUFF(I))

Next I

End If

Exit Sub

Err:End Sub

```

51单片机通信口设置

```

void IniCom(void){

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

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

TMOD0X20; //定时器计数器1工作于方式2;

TH1TL10xFD; //波特率为9600;

EA1; //开总中断;

ES1; //开串口中断

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

}

```

查询方式

```

for(;;)

{

while(RI0);

RI0;

ComDataSBUF; //接收数据

SBUFComData; //把收到数据再发送回去

while(TI0);

TI0;

}

```

发送函数

```

//向串口发送一个字符

void SendChar(unsigned char ch) {

SBUF ch;

while(TI0);

TI0;

}

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

void SendString(unsigned char *str,unsigned int strlen){

unsigned int k0;

do

{

SendChar(*(str k));

k ;

}while(k < strlen);

}

```

串口接收中断函数

```

void serial () interrupt 4 using 3 {

if (RI)

{

RI0;

InBuf[0]SBUF;

}

}

```

VB与51单片机串口通信及设置方法详解

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。