VB与51单片机串口通信

 时间:2025-01-07 08:27:28

1、VB 通信口设置:Public Sub Rs_Port_Set()On Error GoTo Err:If (MSCOMM1.PortOpen = True) ThenMSCOMM1.PortOpen = FalseEnd IfMSCOMM1.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 SubErr:End Sub

2、VB发送函数:Public Sub SendDataToCom(Num As Byte)Dim oDt As VariantDim Y(0 To 0) As ByteY(0) = &H30 + Num '//Y(1)= &HD ‘附加特定字符,可作协议。 '//Y(2)= &HAoDt = YMSCOMM1.InBufferCount = 0 ‘清空缓冲If MSCOMM1.PortOpen = True Then MSCOMM1.Output = oDt ‘发送数据End Sub

3、VB OnComm事件:Private Sub MSCOMM1_OnComm()Dim I, hb As IntegerStatic COMBUFF(10) As ByteDim Strtemp As StringOn Error goto Errhb = 1Strtemp = ""If MSCOMM1.InBufferCount = hb ThenFor I = 0 To hb - 1 COMBUFF(I) = MSCOMM1.Input(0) ‘接收字符 Strtemp = Strtemp +Chr(COMBUFF(I))Next IEnd IfExit SubErr:End Sub

4、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,程序要加定时中断函数,否则程序出错.}

5、查询方式:for(;;) { while(RI==0); RI=0; ComData=SBUF;//接收数据 SBUF=ComData;//把收到数据再发送回去 while(TI==0); TI=0; }

6、发送函数://向串口发送一个字符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);}

7、//串口接收中断函数void serial () interrupt 4 using 3{ if (RI) { RI=0; InBuf[0]=SBUF; }}

  • keil怎样生成预编译文件
  • CAT1161看门狗的使用说明
  • 模拟城市湖滨小屋怎么放
  • C#的数据库如何提取数据应用程序
  • bb域名怎样?
  • 热门搜索
    青春手抄报图片 古诗手抄报内容 感恩父母手抄报大图 呵护心灵手抄报内容 有关文明的手抄报 格列佛游记手抄报 红旗渠精神手抄报 读书手抄报的资料 关于读书手抄报资料 手抄报的内容