本文设计基于AT89S52单片机的简易计算器。它的功能是:
(1)计算器至少能正常显示8位数。
(2)卡机时,显示0。第一次按下时,显示D1;第二次按下时,显示D1D2。
(3)计算器能对整数进行简单的加、减、乘、除四则运算,在做除法时能自动舍去小数部分。
(4)运算结果超过可显示的位数时能进行出错提示。
总体设计
计算器以AT89S52单片机为核心芯片,通过扫描键盘来得到数据,另外通过CPU将得到的数据按要求进行运算并将结果送到显示电路进行显示。
框图设计
基于AT89S52单片机的简易计算器由电源电路、单片机主控电路、按键电路、显示电路和复位电路几部分组成,框图组成如下图所示。
基于AT89S52单片机的简易计算器系统框图
系统设计
电路原理图
基于AT89S52单片机简易计算器电路原理图
程序流程图
由于本设计主要是算法问题,所以程序采用C语言编写。主函数对单片机进行初始化,并不断调用扫描函数和运算函数。显示函数采用1ms定时中断来对显示数据进行实时跟新。基于AT89S52单片机简易计算器程序流程图如下图所示。
简易计算器程序流程图
代码编写
#include P #include《》
#define LEDS 8
/***按键程序***/ char keyscan();
/***显示程序***/ void display();
char dsp[9]={0,0,12,12,12,12,12,12,12}; //初始化显示数组
/***计算程序***/
void calculate(char k,char c1[8],char c2[8]);
技术专区
- Alexa语音服务软件扩展STM32Cube
- 结合DNN API驱动未来神经网络应用的解决方案
- 针对于高端移动通信和汽车市场的四集群设计
- 一款基于帧捕捉的开源图形调试器应用设计
- 即将成为标准配置的最新安全技术:后视摄像系统