一個51單片機的計算器
支持基本加減乘除四則運算并已經考慮優先級
支持無嵌套的括號運算
支持三角函數(sin,cos,tan),反三角函數(arsin,arcos,artan),開根號(sqrt),對數(lg),
指數(^)運算(由于這些運算內部默認鑲嵌了括號,外部一般不應加括號(否則特殊情況會出
錯),但函數內部可用括號。 支持 And 功能,即可以儲存上一次計算結果,以彌補不能嵌套括號的缺點。
支持上述所有運算的混合運算,并均考慮了優先級。
輸出作了智能處理,當結果小于十,可顯示五位小數,當結果大于十小于一百可顯示四位小數,當結果大于一百,可顯示三位小數,高位零與低位零不顯示,三種情況結果都已經四舍五入。
按鍵輸入到第一行末端自動整屏左移,以方便用戶輸入。結果輸出在第二行固定位置。
支持一元二次方程,二元一次方程組解算,輸入參數方便,并考慮了不同情況,按 clean 退出該模式 作了錯誤提示處理,如除零錯誤,連減錯誤,負數開根號錯誤,負數開偶數次方錯誤,方程無解或多解提示。
擁有計時器與倒計時器,方便平時自我測試計等情況時使用。計時器按 clean 退出,倒計時器
倒時時間由用戶輸入,到達時間后屏幕閃爍提示“time up !!!”
0.png (69.71 KB, 下載次數: 80)
下載附件
2017-6-9 22:31 上傳
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載):
0.png (23.5 KB, 下載次數: 59)
下載附件
2017-6-9 22:30 上傳
0.png (51.57 KB, 下載次數: 67)
下載附件
2017-6-9 22:29 上傳
單片機源程序如下:
- /**************************************************************************
-
- easy calculator for 89c52
- MAKE IN 2011 BY TTS.
- ******************************************************************************/
- #include <reg52.h>
- #include <math.h> //數學計算頭文件,占了四千多字節,不知怎么砍少它呢
- #include <define.h>
- #include <lcd_disp.h>
- #include <cal.h>
- #include <reable.h>
- void main()
- {init();
- write_com(0x01); //清一下屏
- while(1)
- scan();
- }
- void time0() interrupt 1
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- tt++;
- }
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
計算器.zip
(326.66 KB, 下載次數: 18)
2017-6-9 20:58 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|