标题:
怎样用一个SBUF传输两个数据到上位机,比如一个实时温度,一个是设定温度值
[打印本页]
作者:
a512520a
时间:
2017-4-14 14:47
标题:
怎样用一个SBUF传输两个数据到上位机,比如一个实时温度,一个是设定温度值
实时温度传到上位机要实现曲线表示 设定温度就是一根直线
作者:
yzwzfyz
时间:
2017-4-15 01:25
本帖最后由 yzwzfyz 于 2017-4-15 22:26 编辑
对于SBUF来说它只是收或发一个字节的数字:0-255,你写入一个它就发一个,管你是不是温度,它全然不介意,都认为是一个0-255之间的数据。
所以你需给这此数据作出规定,比如:以AAH,65H开头,以后是两个字节表示温度,再以后是……,最后以26H作为结束。这就叫协议!
你需要制定一个协议,规则一切由你所需要表达的数据形式及含意而定。收、发端都按照此协议编码、解码,就可以了。
当若干个温度值,发生时间,设定值,被收存之后,就可以画出曲线了。如EXCEL一样作出曲线。
作者:
fjdksla
时间:
2017-4-15 10:14
如上楼所述,首先自己制定一个协议,分别代表实时温度和设定温度,实时温度与设定温度可以交替发送注意延时,上位机进行接收判断
作者:
dzbj
时间:
2017-4-15 10:44
定义变量时定义一个数组
uchar data[2]={0}; //定义数组 位数2 第一位放实时温度 第二位放设定温度
程序中在采集后分别把两个值赋值给数组
data[0]=GetADC(实时温度); //把AD采集的实时温度赋值给数组data位0
data[1]=设定值; //把设定温度赋值给数组data位1
发送函数里 顺序发出去
Send1Byte(data[0]); //发送 实时温度
Send1Byte(data[1]); //发送 设定温度
上位机的缓冲区收到2位 就解释第1位 给实时温度位置显示 第2位给设定温度显示 然后清除缓冲区 准备下次接收
当然 有楼上说的协议会更好
作者:
imxuheng
时间:
2017-4-15 11:01
举个例子,定义一个数组dat[8],前4个元素分别储存实时温度的百位、十位、个位、小数位,后4个元素分别储存设定温度的百位、十位、个位、小数位,
unsigned char code digit[ ]={"0123456789"}; //定义字符数组显示数字
void Send()
{
for(i=0;i<8;i++)
SBUF = diget[dat[i]];
while(!TI);
TI = 0;
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1