找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2879|回复: 2
收起左侧

51单片机的计算器easy_cal 仿真和代码

[复制链接]
ID:209666 发表于 2017-6-9 20:58 | 显示全部楼层 |阅读模式
一个51单片机的计算器

支持基本加减乘除四则运算并已经考虑优先级
支持无嵌套的括号运算
支持三角函数(sin,cos,tan),反三角函数(arsin,arcos,artan),开根号(sqrt),对数(lg),
指数(^)运算(由于这些运算内部默认镶嵌了括号,外部一般不应加括号(否则特殊情况会出
错),但函数内部可用括号。 支持 And 功能,即可以储存上一次计算结果,以弥补不能嵌套括号的缺点。
支持上述所有运算的混合运算,并均考虑了优先级。
输出作了智能处理,当结果小于十,可显示五位小数,当结果大于十小于一百可显示四位小数,当结果大于一百,可显示三位小数,高位零与低位零不显示,三种情况结果都已经四舍五入。
按键输入到第一行末端自动整屏左移,以方便用户输入。结果输出在第二行固定位置。
支持一元二次方程,二元一次方程组解算,输入参数方便,并考虑了不同情况,按 clean 退出该模式 作了错误提示处理,如除零错误,连减错误,负数开根号错误,负数开偶数次方错误,方程无解或多解提示。
拥有计时器与倒计时器,方便平时自我测试计等情况时使用。计时器按 clean 退出,倒计时器
倒时时间由用户输入,到达时间后屏幕闪烁提示“time up  !!!”
0.png

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载):
0.png 0.png

单片机源程序如下:
  1.          /**************************************************************************
  2.    
  3.                                        easy calculator for 89c52
  4.                         MAKE IN  2011 BY TTS.

  5.      ******************************************************************************/
  6. #include <reg52.h>
  7. #include <math.h> //数学计算头文件,占了四千多字节,不知怎么砍少它呢
  8. #include <define.h>
  9. #include <lcd_disp.h>
  10. #include <cal.h>
  11. #include <reable.h>
  12. void main()
  13. {init();
  14. write_com(0x01); //清一下屏
  15. while(1)
  16. scan();

  17. }

  18. void time0() interrupt 1
  19. {
  20. TH0=(65536-50000)/256;
  21. TL0=(65536-50000)%256;
  22. tt++;
  23. }
  24. ……………………

  25. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
计算器.zip (326.66 KB, 下载次数: 18)



回复

使用道具 举报

ID:208989 发表于 2017-6-19 16:15 | 显示全部楼层
程序有错吧
回复

使用道具 举报

ID:208989 发表于 2017-6-19 16:47 | 显示全部楼层
你的程序错了,生成不了hex文件
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表