请教一个非常基础的labview串口通信程序,真的很基础,希望大家帮忙!!好的加分!!急!!

小弟初学乍到 就是想简单的做到 如果输入字符串为2则数码管亮 否则二极管亮 就是这样 但是实际运行时不能实现 感觉应该有不少问题 希望大家帮我实现!!(用的开发板 二极管 数码管引脚没连错)

单片机程序

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
void main()
{
uchar i;
TMOD=0x20;
TH1=250; //波特率 9600 (单片机晶振频率以设为11.0592)
TL1=250;
TR1=1;
PCON=0x80;
SCON=0x50;
EA=0;
while (!RI)
i=SBUF; RI=0;SBUF=0;
if(i==2)
{
wela=1;//11101010 数码管亮 随便亮的
P0=0xea;
wela=0;
dula=1;
P0=0x06;
dula=0;
} else P1=0x06; //二极管亮 随便亮的

}

vi程序图片
希望能帮忙修改下单片机程序 感激不尽 成功必加分 对高手来说应该是小菜吧,谢啦

以下是程序,手头没有编译软件,还没有编译,有可能存在小问题,先编译一下。还有,建议你在写LabVIEW程序之前,先把硬件问题调试好,串口通信可以借助串口助手来调试,都调试好后,再写LabVIEW程序。
#include <reg52.h>
#include <absacc.h>

#define unit unsigned int
#define uchar unsigned char

sbit dula=P2^6;
sbit wela=P2^7;

uchar date;
uchar recFlag;//接收数据标识,0 未接收数据 1 接收数据

void init_serial();
void send();
void receive();

void main()
{
init_serial();
IE=0; //屏蔽中断
uchar i;
while(1)
{
i=receive();
send();
if(i==2)
{
wela=1;//11101010 数码管亮 随便亮的
P0=0xea;
wela=0;
dula=1;
P0=0x06;
dula=0;
}
else
P1=0x06; //二极管亮 随便亮的
}
}

void init_serial() //初始化串口
{
TMOD=0x20; //定时器T1使用工作方式2
TH1=250; //设置初值
TH0=250;
TR1=1; //开始计时
PCON=0x80; //SMOD=1;
SCON=0x50; //工作方式1,波特率9600bit/s,允许接收
TI=1;
}
void send()
{
if(TI==1) //检测输出是否READY
{
if(recFlag==1) //是否接收过数据
{
SBUF=date; //发送数据
recFlag=0;
TI=0;
}
}
}

void receive()
{
if(RI==1) //检测是否有数据接收
{
date=SBUF; //接收数据
recFlag=1; //设置接收标识符
RI=0;
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-02-21
首先建议你不用急于编写程序(虽然很简单)。先去Max里查看一下硬件是否连接,连接是否正常。在Max里也有简单的测试程序(VISA Test Panel)应该可以完成你所提到的功能。
程序的话建议你放过循环,你现在的框图恐怕一运行就停止了,运行的只能是运行之前写入控件上的值,不会给你时间写其他值了。