从串口向单片机发送字符数据,怎么将字符数据变成十进制,然后单片机通过数码管显示?

我利用串口接收到一串字符数据,例如n20130427,如何在单片机里将它们转换成十进制?我试了用ASCII码转换,即十进制0=‘0’-48;但好像不行,求解?for(i=... 我利用串口接收到一串字符数据,例如n20130427,如何在单片机里将它们转换成十进制?我试了用ASCII码转换,即十进制0=‘0’-48;但好像不行,求解?
for(i=0;i<9;i++)
uart_deal[i]=uart[i]-48;
uart[i]是存放串口接收到的字符数据数组,减去48来转化成十进制,但是没效果,求解释,谢谢!
展开
 我来答
GUEL86
2013-04-26 · TA获得超过5856个赞
知道大有可为答主
回答量:5538
采纳率:86%
帮助的人:2743万
展开全部
ASCII码-48,没有问题,没效果是你的程序 其它方面 如显示 等等。
这两行不能说明问题。
更多追问追答
追问
hx=uart_deal[1]*10+uart_deal[2];            //取转换后的两位数赋值给小时
if(hx>=24)
hx=0;
这个是改变小时的语句,然后显示如下:
void display(uint h,uint m,uint s) //hx对应其中的形参h
{
P0=table[h/10];
P1=0xfe;
delay(wait);
P1=0xff;
P0=table[h%10];
P1=0xfd;
delay(wait);
P1=0xff;
这是一小段,下面类似。
追答
最后显示结果是 什么,
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
硬件开发88
2017-11-01 · TA获得超过8675个赞
知道大有可为答主
回答量:1757
采纳率:84%
帮助的人:594万
展开全部
数字十六进制转换十进制没有问题的,字母n你转换十进制有啥意义,0-9 ASCLL码对于30-39 你做个接收判断
if((x >= 30) && (x <= 39))
x -= '0';
例如0x31-0x30 = 1也就是十进制1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
stm32f
2013-04-26
知道答主
回答量:65
采纳率:100%
帮助的人:17.4万
展开全部
你用的是LCD显示吗?其实不用转换的,只要确定字符的ASC码值,取模就可以了。
追问
数码管 ,大哥!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式