yjtnihao 发表于 2009-2-23 14:03:30

labview读单片机数据问题

先发程序
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,ge,shi,bai,aa;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay(uint z);
void init();
void display(uchar ge,uchar shi,uchar bai);
void main()
{
init();
while(1)
{ display(ge,shi,bai);
   if(aa==20)
   {
   aa=0;
   temp++;
   TR1=1;
   
    if(temp==101)
    {
    temp=0;
    }
   bai=temp/100;
   shi=temp%100/10;
   ge=temp%10;
   }
   
   
   
}
}      
void delay(uint z)
{
      uint x,y;
      for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void display(uchar ge,uchar shi,uchar bai)
{
wela=1;
P0=0xc1;
wela=0;
dula=1;
P0=table;
dula=0;
delay(5);
P0=0X00;
wela=1;
P0=0xc2;
wela=0;
dula=1;
P0=table;
dula=0;
delay(5);
P0=0X00;
wela=1;
P0=0XC4;
wela=0;
dula=1;
P0=table;
dula=0;
delay(5);
P0=0X00;
}
void init()
{
TMOD=0X21;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=0XFD;
TL1=0XFD;
SCON=0X50;
PCON=0X00;
ES=1;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}
void seri() interrupt 4
{
ES=0;
TI=0;
SBUF=temp;
ES=1;
}
这段程序一开始是简单的0-100自加程序
最近学习了labview
就想用labview通过串行通讯做一个简单的上位机监控界面。
这里就想把数码管的值实时显示在labview上面。
红色部份是串行通讯,将uchar temp的值赋值给SBUF,
但是为什么labview显示不出来呢?

cpubbs 发表于 2009-2-23 19:32:36

为什么没有主程序呢?

另外,用51的话建议用CPUVIEW简单点,现在51的全功能版本也是免费的了!好运!

cpubbs 发表于 2009-2-23 19:33:56

还有,您的串口中断程序(CPU的),是当串口收到数据后进行数据发送的,而您的LABVIEW程序,却只有读,所以下位机是不会返回数据的!

yjtnihao 发表于 2009-2-23 20:08:35

恩,问题已经解决了。SBUF起先并没有赋值。在void main()中 对SBUF赋初值就可以进入中断了。
也可以改用查询的方式。已经解决了。
还是要谢谢cpubbs哦

xyhyou 发表于 2009-4-11 17:20:37

请问LABVIEW怎么弄

cpubbs 发表于 2009-4-11 18:25:22

请问LABVIEW怎么弄
xyhyou 发表于 2009-4-11 17:20 http://www.cpubbs.com/bbs/images/common/back.gif

大家好,cpubbs论坛第一,二版本学习套件全套资料免费下载!2008-4-19
http://www.cpubbs.com/bbs/viewthread.php?tid=54941&fromuid=19


看这个吧兄弟!全套都可以下载的,学习很适合!好运!
页: [1]
查看完整版本: labview读单片机数据问题