51单片机 简易计算器

51单片机做一个简易计算器,在八位数码管上显示,功能基本为能实现加减乘除,小数的加减乘除,可以显示负数,可以进行混合运算,使用C程序编写的,有注解。急求参考,整了好多天都没完成功能,请大虾帮忙解决,同时请看清要求哈!请调试成功,慎重呀!小弟刚接触51单片机,请包涵了。
最好能打包发到我邮件里[email protected] 要求至少要满足8位共阴数码管,实现加减乘除,小数的加减乘除,后面的显示负数和混合运算可以满足其中一个

这是流程:
1. 4X4键盘输入,点阵字符型液晶显示。
2. 由于所采用的浮点程序库的限制(MCU平台只找到这个……),浮点运算采用3字节二进制补码表示,有效数字6位。对于输入输出,采用3字节BCD码浮点数格式,有效数字只有4位,因此最终有效数字只有4位。
3. 可进行连续输入,例如:1.23+4.56*8.23/234.8 ,但是运算结果为从左到右,这也是8位简易计算器的方式。
4. 可进行错误判断,溢出、除零等错误将显示一个字符 E 。
5. 由于键盘只有16个按键,安排如下:
+---------------+
| 7 | 8 | 9 | + |
| 4 | 5 | 6 | - |
| 1 | 2 | 3 | * |
| 0 | . | = | / |
+---------------+
6. 按键的缺少导致取消了一些特殊函数,即开根号,三角函数(sin, cos, tan, ctg)的实现,由于这些函数在浮点程序库中均已提供,如果硬件允许,在原来的框架上添加这些附加功能是很容易的(可以看作和+, -, *, /等价的按键操作,调用不同的子程序进行运算即可)
7. 按两次 = 等于清灵。因为按键实在太少,才采用了这个做法。
8. 相应举例:
按键 结果 说明
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
123+= 123 按下等号而没有第二个操作数,保留第一个操作数
并认为此次运算结束(等号的功能)

123+321/111 4.0 等价于(123+321) / 111

2.3+5.4=/0.1+ 77 等号后直接按 / ,则将前面的运算结果作为第一个
操作数
1/0= E 错误显示

这是源码:http://macroling.bokee.com/2390458.html

参考资料:http://macroling.bokee.com/2390458.html

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-07-27
浮点是单片机的弱项,初学难度有点大。

用keil C51,加入
#include<math.h>
就行了。
但你要注意了!要进行浮点运算,你的程序存储器一定要大,因为一个乘除法需要几百个字节,开方需要更多,而且好像算得不太准。慎用!

乘法,除法 用加减法代替!!
平方开放 再想想办法。

单片机忌违浮点运算!
第2个回答  2009-07-27
发到你的邮箱了看一下本回答被提问者采纳
第3个回答  2009-07-26
网上有很好的仿真程序,你为什么不找找呢,我这有LCD的仿真,相对于数码管可能要复杂些.而且你需要有仿真程序.
第4个回答  2009-07-25
我有4位LED,不带负数的,没混合运算的,你要吗?
相似回答