STC89C52单片机程序问题,将采集到的温度数据发送给上位机的VB程序,下面的程序为什么发送不了数据?
while(!RI){GetTemperture1();//采集温度Temp1Conv();//温度转换GetTemperture2();//采集温度Temp2Conv(...
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,就发送温度数据 展开
{
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,就发送温度数据 展开
2个回答
展开全部
上位机收到数据了吗?如果没收到是串口设置或硬件电路有问题,如果收到数据不正确,再检查程序问题 ,如temp是什麼类型,若是浮点型,则下面的发送高8位和低8位的语句应该是错的,uart_send_byte(temp>>8); uart_send_byte(temp);
若是整型,则temp=((temp_data[1]&0x07)*256+temp_data[0])*0.0625*10可能会出错
另外串口初始化设置定时器了吗?
上位机串口接收程序自发自收正常吗?
若是整型,则temp=((temp_data[1]&0x07)*256+temp_data[0])*0.0625*10可能会出错
另外串口初始化设置定时器了吗?
上位机串口接收程序自发自收正常吗?
追问
温度值有两个,这个不能发,另外一个温度值的就能发,代码只是数字1和2的区别,例如GetTemperture1和GetTemperture2
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询