大家帮我看看这个简单的基于89c51单片机与labview的温度检测系统为什么不能运行。

下面是我的具体的单片机C程序与labview程序图,其中单片机程序与labview程序单独运行都是没问题的,但是连接起来就不能运行了。盼望高手们的指点,提出能够使它真正运... 下面是我的具体的单片机C程序与labview程序图,其中单片机程序与labview程序单独运行都是没问题的
,但是连接起来就不能运行了。盼望高手们的指点,提出能够使它真正运行起来!(希望您能够亲自运行
一下,我自己是在单片机开发板上实验的)
#include<reg52.h>#include <stdio.h>#include <stdlib.h>#define uchar unsigned char#define uint unsigned int sbit DQ=P3^7;//51单片机的P3^7与18B20的数据输入端口相连接uchar temp1,temp2;uchar i;bit Flag;
uint ReData,SenData;//延时void delay(uint m){ while(m--);}
//复位程序void ow_rest(void){ uchar feedback=0; DQ=1; delay(8); DQ=0; delay(80); DQ=1; delay(14); feedback=DQ; delay(20);}//从单总线上读字节uchar read_byte(void){ uchar value=0; for(i=0;i<8;i++) { DQ=0; value>>=1; DQ=1; if(DQ) { value|=0x80; } delay(4); } return(value);}//详单总线上写字节void write_byte(uchar val){ for(i=0;i<8;i++) { DQ=0; DQ=val&0x01; //val>>=1; delay(5); DQ=1; val>>=1; }}//读取温度void read_temperature(void){ ow_rest(); write_byte(0xcc); write_byte(0x44); delay(10); ow_rest(); write_byte(0xcc); write_byte(0xbe); temp1=read_byte(); temp2=read_byte();}//主程序void main(){ uint temp; bit flag; SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1 TMOD|= 0x20; //定时器工作方式2 PCON|= 0x80; //TH1 = 0xFD; //baud*2 /* reload value 19200、数据位8、停止位1。效验位无 (11.0592) TH1 = 0xF3; // //baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (12M) TL1 = 0xF3; TR1 = 1; ES = 1; //开串口中断 EA = 1; // 开总中断
while(1) { read_temperature(); temp=temp2*256+temp1; if(temp2>0xf8) { flag=1; temp=~temp+1; } temp=temp*0.0625; SenData=temp; if (Flag==1) { SBUF=SenData; //SUBF接受/发送缓冲器 while(TI==0); TI=0; Flag=0; } } }
/**************************************************** 串口中断程序******************************************************/void ser_int (void) interrupt 4 using 1{ if(RI == 1) //RI接受中断标志 { RI = 0; //清除RI接受中断标志 ReData = SBUF; //SUBF接受/发送缓冲器 Flag=1; }}
展开
 我来答
百度网友e32d17aca
2012-08-25
知道答主
回答量:2
采纳率:0%
帮助的人:2.8万
展开全部
你好,是不是波特率的问题啊!!!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式