200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 基于51单片机的简易计算器proteus仿真 数码管显示

基于51单片机的简易计算器proteus仿真 数码管显示

时间:2023-01-05 23:29:17

相关推荐

基于51单片机的简易计算器proteus仿真 数码管显示

硬件设计

仿真图:数码管显示,支持整数加减乘除,不支持小数和负数及连续运算;

(20x3 和20÷3的结果 )

程序设计

//*************************************************************************************************//*************************************************************************************************//**<程序名>:计算器处理主程序,根据计算器的输入状态分派不同的函数对按键进行处理。 **//**<功能>:当b_WorkMode=0是,若有键按下则调用此函数对键码进行处理。 **//*************************************************************************************************//*************************************************************************************************//*************************************************************************************************//* *//* ******************************头文件及宏定义************************** *//* *//*************************************************************************************************#include "CalReady.h"//*************************************************************************************************//* *//* ********************************全局变量****************************** *//* *//*************************************************************************************************extern unsigned long ul_Number; //LCE显示数据,LCD实时显示该数字。//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<工作模式(默认为计算器模式)>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>extern bit b_WorkMode; //0--计算器模式;//1--计时模式。//定义在KeyProcess.c中。unsigned char uc_ModeChange=0;extern bit b_LCDClean;extern unsigned char uc_ReportSymbol;unsigned long ul_NumberOne=0; //第一个数unsigned long ul_NumberTwo=0; //第二个数unsigned char uc_Operator=0; //运算符unsigned long ul_Result=0; //运算结果unsigned char uc_NumPointer=1; //计算状态//*************************************************************************************************//* *//* *******************************计算器处理主函数****************************** *//* *//*************************************************************************************************void vCalculator(unsigned char ucKeyCode){if(ucKeyCode==41) //判断按键是不是'NO/C'。{if(uc_NumPointer==1)//如果是‘NO/C’键则判断手机否是状态一。{if(uc_ModeChange==2)//如果是状态一则看uc_ModeChange是不是2。{uc_ModeChange=0;//如果是2则计时器模式。b_WorkMode=1;uc_ReportSymbol=3;//闪烁显示:-CHAG-1。表明正在切换状态。b_LCDClean=1;}else{uc_ModeChange++;//如果uc_ModeChange不是2则加一。ul_NumberOne=0;//清除所有数据,将所有数据恢复到状态一。ul_NumberTwo=0;ul_Number=0;uc_NumPointer=1;}}else{ul_NumberOne=0;//清除所有数据,将所有数据恢复到状态一。ul_NumberTwo=0;ul_Number=0;uc_NumPointer=1;}}else{ //如果不是“NO/C”键,首先将uc_ModeChange清零。uc_ModeChange=0;//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<根据不同状态分派不同的键处理函数>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>switch(uc_NumPointer){case 1:vCalReadyOne(ucKeyCode); //进入状态一。break;case 2:vCalReadyTwo(ucKeyCode); //进入状态二。break;case 3:vCalReadyThree(ucKeyCode); //进入状态三。break;default:break;}}}

链接:/s/1ZAxAbTe_oD_cuTvvKWxU5A

提取码:x102

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。