STC89C52单片机程序问题,将采集到的温度数据发送给上位机的VB程序,下面的程序为什么发送不了数据?

while(!RI)
{
GetTemperture1();//采集温度
Temp1Conv();//温度转换
GetTemperture2();//采集温度
Temp2Conv();//温度转换
lcd_init();//显示屏清屏
TempDisp();显示当前温度
}
receive=SBUF;
RI=0;
uart_init();串口初始化
if(receive=='m')
{
GetTemperture2();//采集温度
Temp2Conv();
TempDisp();
temp=((temp_data[1]&0x07)*256+temp_data[0])*0.0625*10;计算温度值
uart_send_byte(temp>>8);发送高八位
uart_send_byte(temp);发送低八位
}

单片机接收到字符判断如果是m,就发送温度数据

上位机收到数据了吗?如果没收到是串口设置或硬件电路有问题,如果收到数据不正确,再检查程序问题 ,如temp是什麼类型,若是浮点型,则下面的发送高8位和低8位的语句应该是错的,uart_send_byte(temp>>8); uart_send_byte(temp);
若是整型,则temp=((temp_data[1]&0x07)*256+temp_data[0])*0.0625*10可能会出错
另外串口初始化设置定时器了吗?
上位机串口接收程序自发自收正常吗?追问

温度值有两个,这个不能发,另外一个温度值的就能发,代码只是数字1和2的区别,例如GetTemperture1和GetTemperture2

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-08-17
你好!
检查波特率和其他设置追问

其他设置检查很多次了,没问题

追答

私信联系,我代码发一下,帮你看看

求助,STC89C516RD+单片机程序烧不进去
STC的ISP下载失败有很多种可能原因,比如:上位机软件设置的单片机型号与实际使用的单片机型号不符。注意设置的单片机型号必须与实际使用的单片机型号完全相同!哪怕是用STC89C52RC给设置成了STC89C52没有RC,都无法下载程序。检查串口号是否正确,确保单片机串口两个引脚没有与其它外设相连。检查单片机的晶振是否...

上位机控制单片机上的步进电机问题。
4、在伺服系统中,上位机还要能读取各轴的位移信号(数据),掌撑各轴即时位置.

ov7670 连接单片机 上位机显示问题
应该可以的,ov7670的sccb接口可以接到单片机上,单片机对sccb接口编程采集其数据,然后通过串口将数据送到上位机显示.

怎么把用Keil4编好的C8051F020程序的16进制代码怎么下载到单片机中
stc单片机可以用串口下载,232连接串口0,然后用上位机软件下载就可以了。上位机软件叫做stc-isp.自己做一个最小板加下载板不到一个小时就能做成,应用简单。atmel的单片机必须用isp下载工具,比如usb下载器,很麻烦,花费大,自己不能diy。你可以去百度文库收一下stc89c52rc中文资料,上面有详细描述。

什么引起串口中断
SBUF中的数据发送完毕,TI传送结束标志置1,如果设置了ES=1(串口中断是允许的),就进入串口中断服务程序。解决方法如下:1、首先打开Cube工程,在Pinout页使能需要使用的串口。2、切换到“Configuration”页,找到并点击需要使用的串口,比如之前选择的USART2。3、在弹出的“xxx Configuration”对话框中选择...

如何在液晶上显示汉字,单片机用的ATmega16,液晶是1602,求详细代码
1、此款采用并口ISP下载线,配AT89S52单片机,可以很方便的下载程序到单片机。下载后不用插拔线缆, 下载好后自动直接运行程序。2、USB供电系统,直接插接到电脑USB口即可提供电源,不需另接直流电源。 3、8位数码管(可做数码管的静态扫描以及动态扫描显示实验 不如 0-999 计数器实验 18B20温度检测实验 遥控解码实验等...

怎么把用Keil4编好的C8051F020程序的16进制代码怎么下载到单片机中
stc单片机可以用串口下载,232连接串口0,然后用上位机软件下载就可以了。上位机软件叫做stc-isp.自己做一个最小板加下载板不到一个小时就能做成,应用简单。atmel的单片机必须用isp下载工具,比如usb下载器,很麻烦,花费大,自己不能diy。你可以去百度文库收一下stc89c52rc中文资料,上面有详细描述。

相似回答