用C语言编写单片机上计算器程序遇到问题

如题所述

问题一:如何输入一个两位数是吧……

通过串口输入:串口进来的数是以位传输的,如果是8位的,你需要先将数据转换成十进制数,用(x*10+y)得到两位数,x是高位,y是低位。这样就得到了两位的数了!

问题二:无论加减乘除都是二进制形式计算的!比如你输入的是1和2,他们二进制形式为别是1,10,那么加起来后就是11,即3!

如果你想输入33,即先输入3,再输入3,按照3*10+3就得到33.

你输入的时候应该一位一位的输入,应该都是这样吧,从键盘上按下一个数字就发送给单片机,单片机接收后再次接收一个数,直到你按下+-*/为止,然后就把它转换成十进制形式加成你想要的两位或者更多位!

最后再进行加法或其它!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-14
ASCII码分别是49和50,计算结果是99,输出的时候也按照ASCII码输出看到的结果就变成了c.
你拿99-48=51不就是3了吗?
ASCII码表示的数转成10进制数的算法:
ASCII的48对于十进制的0,那57不就对于9(D)了吗?
所以在48-57间的数减48不就可以了.
下面顺便跟你讲下二进制与ASCII的对应关系:
对于小于等于9的4位二进制数加30H得到相应的ASCII代码,对于大于9的4位二进制数(十六进制数A~F)加37H即得到相应的ASCII代码了.
第2个回答  2019-12-17
你可以在程序设计中进行码制转换即可。在串口调试助手中,进行数据的发送,默认是按ASCII发送,程序接收到ASCII码后进行转换,转为
十进制
的数进行运算,然后再将运算结果转为ASCII码返回,在串口中即可看到合理的运算结果了。