⑴ 单片机 串口接收的字符串如何转为字符
楼主你好,楼上兄弟说的太复杂了,
恕我直言
没看懂你想说明神马问题,串口接收到的字符串如何转化成字符,首先字符串是字符的连续储存方式,那么
例:
1char temp[4] = { A, B, C };这是一个标准字符串
那么temp[0]=='A';为真
以此类推temp[1]
=='B'
1temp[3] == '/0';//c语言字符串结尾标示符./0转义符
如果你想显示中文那么
中文是16bit的,双字节字符
1234short temp;temp=sbuf;将第一个数据获取回来 temp<<=8;将数据左移8位temp|=sbuf;将第二次的数据带入进来
可能会我记错了高低位顺序,要是出错可以反过来即可!
小弟告诉你一个最简单最实用的办法
如何把字符中的数字变成变量数据
switch
你会用么
就是开关选择语句
123456789static char temp;//申明一个变量 这是个全局静态变量temp = sbuf;switch(temp) {case '0':temp = 0; break;//break必须要加,否则数据覆盖case '1':temp = 1; break;case '2':temp = 2;break;...}
以此类推
,这样你的道的字符串或字符数据则能变成数据,
字符串也只是数组而已
而楼主想要的字符也就是其中的一个元素罢了
可以用指针方式提取
亦可以用数组下标提取!这用的都是ascll码
但是不需要理解到码表上
请楼主明察抢答时间
,楼下请勿复制,祝楼主早日解决程序问题,加油加油
⑵ 51单片机串口通信如何把SBUF收到的ASCII码转换为字符
接收时加个转码处理。假设你上位机发送的是文本格式的十六进制数据,那么下位机处理需要:
字符处理,temp = SBUF; if ((temp>='0')&&(temp<='9')) temp -= '0'; else if ((temp>='A')&&(temp<='F')) temp = temp - 'A' + 10; else if ((temp>='a')&&(temp<='f')) temp = temp - 'a' + 10; else temp = 0;
每两个字符拼接成1字节数据,数组中第偶数个为higher、下一个为lower,然后output = higher << 8 + lower;
最好加个超时通讯结束处理。
⑶ C单片机 变量值怎么转换成字符串
uchar tmp[3];
tmp[0] = num%10 + 0x30; //看起来lz事项用ascii码,所以我加了个0x30,如果不用请去掉
tmp[1] = num/10 + 0x30;
tmp[2] = 0;
Display_ASCII8X16(uint x0,uint y0, tmp, Color);
⑷ 单片机 串口接收的字符串如何转为字符
你好:
得到的数要对照ASCII码表,做一个简单的加法就可以,如得到的数为十六进制的0x00-0x09转换为字符形式的'0'到'9'(字符’0‘的ASCII码为48),那么比如得到数赋值给变量data,那么转换为字符就是data+48,然后字符形式输出就可以。
⑸ 单片机发送整型转字符串数据C程序
void main (void){
unsigned char i;
InitUART();
while (1){
for(i=100;i<1001;i++)
long2string(i,&ch[0]);
DelayMs(200);//延时循环发送
}
}
主函数里面,没有调用发送的
⑹ 51单片机中C语言int能转换为字符串类型吗怎么转换
因为是C51, 所以不能用 VC++里面的C语言代码 eg: itoa, 也不要用打印的 eg: sprintf
为什么? 因为C51的内存太小 ,如果这样用非常占用资源. 下面的朋友回答就显得不够专业了.
所以, 一般我们是这样自己写代码使用实现的: 字符串改为数组的形式
unsigned char dat[5];
dat[4]=Num/10000+'0';
dat[3]=Num%10000/1000+'0';
dat[2]=Num%1000/100+'0';
dat[1]=Num%100/10+'0';
dat[0]=Num%10+'0'
⑺ 单片机 unsigned long转字符串问题
可以把数据的每一位,通过取余和除法取出来,然后把数据转换成字符。单个字符就可以处理成字符串使用。也可以看一下有没有适合你的标准C的转换函数。
⑻ 单片机C51中将浮点数转成字符用串口发出,有时会出错
仔细看了一下,问题出现在Send_Data(num_ganguo[i]);这里。你去看一下,你是如何处理字符串的,是不是,把数据中的除上位机的数据的数字都处理成了0的ASCII码了。(个人见解,如有不足,请指出)
⑼ 51单片机c语言如何把浮点型转为字符串
使用stdio.h中的sprintf函数转化即可:
#include<stdio.h>
floata=1.234;
charstr[10];
sprintf(str,"%f",a);
⑽ 51单片机,各种类型如何转字符串,比如 uchar a[]= {1,2,3,4,5}; 如何转换
+ 0x30就可以了!