使用51单片机与PC进行串口通信时,怎么将一个温度值(带两位小数)发送到VB编写的上位机界面上显示? 5
使用51单片机与PC进行串口通信时,怎么将一个温度值(带两位小数)发送到VB编写的上位机界面上显示?SBUF是8位的,是不是要分两次发,一次发整数部分,一次发小数部分呢?...
使用51单片机与PC进行串口通信时,怎么将一个温度值(带两位小数)发送到VB编写的上位机界面上显示? SBUF是8位的 ,是不是要分两次发,一次发整数部分, 一次发小数部分呢?
展开
5个回答
展开全部
使用51单片机与PC进行串口通信时,需将一个温度值(带两位小数)按通信协议规范组成的数据帧发送到PC机,VB则按通信协议规范组成的数据帧编写的上位机程序,接收和处理数据帧,并显示于运行程序界面或控件上。
数据帧组成:分帧长、帧首、数据和帧尾等。
数据:
带两位小数的温度值发送需要制定好合适的数据约定,假释温度值是在1000摄氏度以内。
可以使将实际温度值乘100倍取整,以两字节的整形变量传送。
也可以使将实际温度值乘100倍取整,以5个ASCII字符直接传送。
51单片机按上述方案取一组成数据帧发送给上位机串口。
VB编写的上位机串口接收程序的数据接收处理代码,按下位机采取的数据约定和数据帧格式接收和处理数据,取出数据除以100,获得所需的带两位小数在程序界面显示。
需要注意的是整形变量方式接收需要按二进制模式接收,字符串方式接收以文本模式接收。
展开全部
可以啊,你自己定个协议,然后PC解包就可以了,
打个比方说
你发
aa 00 xx,aa表示帧头,00表示温度高位,xx写温度高位数值
aa 01 yy,aa表示帧头,01表示温度低位,yy写温度低位数值
当然这只是比较简单的说法,还有字长啊,检验啊等等问题需要考虑
打个比方说
你发
aa 00 xx,aa表示帧头,00表示温度高位,xx写温度高位数值
aa 01 yy,aa表示帧头,01表示温度低位,yy写温度低位数值
当然这只是比较简单的说法,还有字长啊,检验啊等等问题需要考虑
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不需要分2次发送,把小数点忽略,一般单片机里是二进制数,你就全部作为一个整数发送,上位机接收到后再分解加入小数点。你也可以单片机里转化为ASCII,就可以有小数点,再发送。但很麻烦的,不如pc机接收到再处理。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你问度本身开始就是数字量,为什么你要先转换成小数再发呢?还有,带两位小数,你可以先扩大100倍再发啊,位数不够肯定得分两次发了,办法有很多,挑最简便易行的就好了,只要得到正确结果就ok
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以移位,转换成整数
然后再发。
然后再发。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询