微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机发送数据给电脑,然后在电脑上处理这些数据并显示

51单片机发送数据给电脑,然后在电脑上处理这些数据并显示

时间:10-02 整理:3721RD 点击:

我做的是用51单片机对一个模拟电压信号进行ad转换,然后将ad转换后的数据发送到电脑上,在电脑上显示出电压值,目前用的是串口调试助手只能显示16进制的数,而且还没有经过算法处理,也不是实际的电压值;请问怎么做才可以在电脑上对51单片机发送的数据进行处理然后显示出10进制的电压值?

这个在电脑端可不好处理吧
在51编程处理吧
转换之后的数据要在电脑端显示十进制数
就要将数据的各位分解开来分别发送;这样就会碰到第二个问题
因为电脑端是显示字符的,所以还要将转化完的数据变成字符样才能显示啊,直接加上“0”字符(0x30)就好了

  1.                 SBUF=temp/10+0x30;                //十位
  2.                 while(!TI);
  3.                 TI=0;
  4.                 SBUF=temp%10+0x30;                //个位
  5.                 while(!TI);
  6.                 TI=0;
  7.                 SBUF=' ';                //空格
  8.                 while(!TI);

  9.                 [url=http://bbs.elecfans.com/jishu_1136403_1_1.html]这是我写的帖子,小编可以看一下,也是计算机端显示数据的[/url]TI=0;

复制代码


擅自给小编加上了空格,这样就能更好的分开两个数据了
小编试一下,如果不行的话,请留言

这个需要你在程序中处理之后直接发串口

两种方法,一种是在电脑上编程,对接收到的数据进行数据格式转换,第二种是单片机将数据转换成多字节的0-9的个位数,发送给电脑,可以用串口助手,这样多字节拼起来看,就是十进制数了。
转换可用简单运算,比如AD为8为的,ad_data为十六进制的AD值,temp_data[3]为转换后的十进制数,转换过程就是
temp_data[0]=ad_data/100; //百位数
temp_data[1]=(ad_data % 100) / 10; //十位数
temp_data[2]=ad_data % 10;//个位数

电脑不好转换吧,第二种显示的话,电压需要这样转换啊,比如8位AD的话,temp_data[3]/256*5V

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top