请高手入!在下有一个十分棘手的关于labview问题。

2019-07-18 09:37发布

大家好,在下想做一个温度监测系统,使用的是51单片机,DS18B20,以及串口发送。
问题描述:
在做之前先进简单的调试,结果碰见了很让我费解的问题,为了调试方便,我在下位机程序中设定了一个常温值2378(是23.78扩大100倍,准备在labview中再缩小),先用串口调试助手,发现串口调试助手可以接收到01 17 4e(01是一个标志,为了以后可以添加跟多的ds18b20),但是用labview却不能接收到,我用虚拟串口自动发送十六进制01 17 4e,结果labview却可以显示出23.78这个温度,请高手帮帮我,这是怎么回事!
下位机程序如下:
#include <REG52.H>
#include <stdio.h>
void delay(unsigned int i);   
unsigned char MESSAGE[3];
unsigned char a;
unsigned int value=2378;  //这使我模拟的一个温度值23.78度,之后再在labview中缩小

void main (void)
{
    SCON = 0x50;       //REN=1允许串行接受状态,串口工作模式2         
    TMOD|= 0x20;      //定时器工作方式2                       
PCON|= 0x80;      //波特率提高一倍                                                   
    TH1 = 0xF3;  // Baud 4800、数据位8、停止位1、效验位无(12M)
TL1 = 0xF3;
TR1  = 1;        //开启定时器1                                                      
ES   = 1;        //开串口中断                  
EA   = 1;        // 开总中断
while(1)
    {  
  MESSAGE[0]=1;   //赋值1是为了能够程序扩展,代表的是第一个DS18B20
  MESSAGE[1]=value/100;
  MESSAGE[2]=value%100;
  a=0;
     while(a<3)
        {
    SBUF = MESSAGE[a];         //SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器)
          while(!ti);    // 等特数据传送 (TI发送中断标志)
    TI = 0;     // 清除数据传送标志  
       a++;         // 下一个字符
     }
    delay(3000);  
  }
}
void delay(unsigned int i)
{
unsigned char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);
}

labview VI如图: 捕获.PNG
下面是我的下位机及vi程序: 232发送程序.zip (43.07 KB, 下载次数: 27)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。