找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3580|回复: 4
收起左侧

请问怎么把MCU串口的数据以十进制的形式显示在串口助手的文本模式中

[复制链接]
ID:489122 发表于 2019-3-12 11:47 | 显示全部楼层 |阅读模式
这是一个循环LED的程序,我加了一点发送串口数据的程序,我想把这里面的js发送出去,就是以1,2,3,4,5
这种形式显示出来,但是串口助手用文本模式的话就是乱码,只能用十六进制显示,求助各位大佬,在此谢过!

单片机源程序:
#include <reg52.h>
#define uint unsigned int
uint js;
void delay(unsigned char t);
void InitTimer0(void);
void Send(uint dat);
void delay(unsigned char t)
unsigned char j;
while(t--){
   j=255;
   while(j--);
}
}
void InitTimer0(void)  
{
     TMOD=0x20;
     TH1=0XFD;
    TL1=0XFD;
     EA = 1;
     TR1 = 0;
     SCON=0x50;
    PCON=0x00;
    ES=1;
  }
void Send(uint dat)
{
TR1=1;
ES=0;
    SBUF=dat;
    while(!TI);
     TI=0;
    ES=1;
  }
void main(void)
{
InitTimer0();
js=1;
P2=0XFE;
while(1){   
   P2=(P2<<1)|(P2>>7);
   js++;
   Send(js);
   delay(50);  
}
}

回复

使用道具 举报

ID:213173 发表于 2019-3-12 17:57 | 显示全部楼层
void Send(uint dat)
{
        TR1=1;
        ES=0;
        SBUF=dat+'0';
        while(!TI);
        TI=0;
        ES=1;
}
回复

使用道具 举报

ID:404160 发表于 2019-3-12 18:46 | 显示全部楼层
把js变量转换成十进制字符后,再发送。

itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转移数字时所用 的基数。在上例中,转换基数为10。10:十进制;2:二进制...

itoa并不是一个标准的C函数,它是Windows特有的,如果要写跨平台的程序,请用sprintf。
回复

使用道具 举报

ID:466164 发表于 2019-3-12 21:39 | 显示全部楼层
转化为字符ASCII没搞过,思路有你先建个数组ASCII(0~9)发时发数组,听过一种方法对发送数据+0X30也没试过,看到过设备发送ASCII的。你尝试好了说下。
回复

使用道具 举报

ID:164602 发表于 2019-3-13 08:12 | 显示全部楼层
很简单。
发送的数据转换为ASCII码就可以在文本模式下显示了——即发送js+0x30
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表