首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何转换来自8位控制器的串行数据并在asci中显示?

如何转换来自8位控制器的串行数据并在asci中显示?
EN

Stack Overflow用户
提问于 2014-07-04 01:52:28
回答 3查看 868关注 0票数 0

我是嵌入式编程的一员,这里有个问题,我使用通用异步收发器通信,想通过串行line.each发送整数,整数在ascii.What中必须显示为字符,所有我应该注意的事情?来自控制器端的数据将是整数/字符/浮点型format.What,在串行监视器s/w上显示这些来自控制器的数据时,我是否需要注意这些数据?我正在用c语言编写代码。

问候

EN

回答 3

Stack Overflow用户

发布于 2014-07-04 01:57:40

如果你要找的是将整数转换成ascii,有一种符合标准的方法可以做到。

代码语言:javascript
复制
sprintf(str, "%d", your_integer);
票数 1
EN

Stack Overflow用户

发布于 2014-07-04 04:17:34

我假设您希望使用微控制器(如8051 )通过UART通信发送/接收数据。所以这里有一些你应该注意的东西。

1)您希望发送的波特率是多少?波特率是每秒发送/接收的符号数

2)每个符号希望接收多少比特?取决于您使用多少位微控制器

以下是用于UART通信的代码示例,用于发送波特率为9600的堆栈溢出和8051的8位数据。出自“8051微控制器与嵌入式系统”一书

代码语言:javascript
复制
#include <reg51.h>
void SerTx(unsigned char);
void main(void){
TMOD=0x20; //use Timer 1, mode 2
TH1=0xFD; //9600 baud rate
SCON=0x50;
TR1=1; //start timer
while (1) {
SerTx(‘S’);SerTx(‘T’);SerTx(‘A’);SerTx(‘C’);SerTx(‘K’);
SerTx(‘’);SerTx(‘O’);SerTx(‘V’);SerTx(‘E’);SerTx(‘R’);
SerTx(‘F’);SerTx(‘L’);SerTx(‘O’);SerTx(‘W’);
}}
void SerTx(unsigned char x){
SBUF=x; //place value in buffer
while (TI==0); //wait until transmitted
TI=0;}
票数 1
EN

Stack Overflow用户

发布于 2014-07-04 11:56:15

当您声明:

unsigned char array[10] = {'F','E','E','D','B','A','B','E','C','A',};

编译器根据ASCII表将其放入适当的数字表示中(见下文)。所以在你的设备端,它就像'F'0x46'E'0x45等等。当你通过将这个数组传递给TX函数来通过串行发送它时,它会用相同的代码到达另一端,同样就像'F'0x46'E'0x45等等。

当您将其直接放入数字中时,就像这里一样,它将保持原样。

unsigned char array2[10] = {0xFE,0xED,0xBA,0xBE,0xDE,0xAD,0xBE,0xEF,0xCA,0xFE};

你可以将任何数据转换为二进制形式,有时这是一个在特定位置的表示问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24560301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档