[C语言] 关于二进制和ASCLL

[复制链接]
 楼主| azdd 发表于 2016-10-27 18:13 | 显示全部楼层 |阅读模式
单片机从探测芯片读取数据,现在想把读取的二进制的数据通过串行通信表示在电脑上,请问是不是要转化成ASCLL,如果要转化程序应该是什么样子的?请大神,请大神,请。。。。。大。。神。。。解答!
NJZR 发表于 2016-10-27 18:45 | 显示全部楼层
随便什么格式都可以实现,取决于电脑这边的程序怎么写。如果要把二进制值转成ASCII字符串表示可以先转成BCD码,BCD每位再加0x30即可,因为ASCII字符的0-9正好对应0x30-0x39
 楼主| azdd 发表于 2016-10-28 08:30 | 显示全部楼层
NJZR 发表于 2016-10-27 18:45
随便什么格式都可以实现,取决于电脑这边的程序怎么写。如果要把二进制值转成ASCII字符串表示可以先转成BCD ...

我直接发到串行口的,电脑上直接下了一个串行调试助手,我接受的都是乱码。
长的帅怪我落 发表于 2016-10-28 09:35 | 显示全部楼层
乱码是肯定的,毕竟你是直接来的二进制的数。你必须先将原始数据转化后在发到串口。还要搞清楚你到底是要显示什么数据,比如是二进制是1111,你是要最后显示15,还是显示15对应的ascll码值
dirtwillfly 发表于 2016-10-28 13:56 | 显示全部楼层
上位机和单片机要配合好才能正确通讯,要ASCII就都用ASCII,要不就都用二进制数
dalarang 发表于 2016-10-28 14:04 | 显示全部楼层
弄那个麻烦干嘛,如果仅仅是想看一下,串口调试助手勾选Hex显示即可。
justtest111 发表于 2016-10-28 15:31 | 显示全部楼层
直接16进制显示,可以不管格式,自己脑补转换
wsnsyy 发表于 2016-10-28 15:34 | 显示全部楼层
约定是同一种格式就好了
IC丶Jason 发表于 2016-10-28 16:18 | 显示全部楼层
哈哈哈哈
 楼主| azdd 发表于 2016-10-28 16:40 | 显示全部楼层
长的帅怪我落 发表于 2016-10-28 09:35
乱码是肯定的,毕竟你是直接来的二进制的数。你必须先将原始数据转化后在发到串口。还要搞清楚你到底是要显 ...

二进制转化为ASCLL,是需要把数值变为字符串吧,需要prinft打印出来,这样怎么把它放到串行接受寄存器里面?
 楼主| azdd 发表于 2016-10-28 16:40 | 显示全部楼层
dirtwillfly 发表于 2016-10-28 13:56
上位机和单片机要配合好才能正确通讯,要ASCII就都用ASCII,要不就都用二进制数 ...

只有两个选项,一个acsll,还有一个HEX的。。。
 楼主| azdd 发表于 2016-10-28 16:41 | 显示全部楼层
justtest111 发表于 2016-10-28 15:31
直接16进制显示,可以不管格式,自己脑补转换

太随便了吧= =
 楼主| azdd 发表于 2016-10-28 16:42 | 显示全部楼层
wsnsyy 发表于 2016-10-28 15:34
约定是同一种格式就好了

我只想显示0.1.2.3数字。
ningling_21 发表于 2016-10-28 19:50 | 显示全部楼层
azdd 发表于 2016-10-28 16:42
我只想显示0.1.2.3数字。

你向电脑发送的数据是什么?
kevicki 发表于 2016-10-29 14:34 | 显示全部楼层
ASCLL。。。。
看到这个拼写也是醉了
sonicll 发表于 2016-10-31 16:28 | 显示全部楼层
你串口输出的时候,先用sprintf打印成ASCII再发送就可以了,比如
sprintf(Bufout, "%d\r\n", data);
Uart_Send(UART1, Bufout, strlen(Bufout));
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

86

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

28

主题

86

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部