目录
一、项目功能概述
能够进行四则加减乘除运算,并通过串口打印相关信息
资料下载地址:基于stm32计算器设计
二、仿真
三、代码
unsigned char Key_Scan(void)
{
if(KeySha[0].KeyTimeCnt>const_key_time)//按键去抖
{
KeySha[0].KeyStartFlag=0;
KeySha[0].KeyTimeCnt=0;
if(fuhao == 0)
{
if(ABCounts == 0)
{
A = 0;
}
else
{
A = A*10 ;
}
}
else
{
if(ABCounts == 0)
{
B = 0;
}
else
{
B = B*10 ;
}
}
ABCounts ++;
printf("0");
}
if(KeySha[1].KeyTimeCnt>const_key_time)//按键去抖
{
KeySha[1].KeyStartFlag=0;
KeySha[1].KeyTimeCnt=0;
if(fuhao == 0)
{
if(ABCounts == 0)
{
A = 1;
}
else
{
A = A*10 + 1;
}
}
else
{
if(ABCounts == 0)
{
B = 0;
}
else
{
B = B*10 + 1;
}
}
ABCounts ++;
printf("1");
}
if(KeySha[2].KeyTimeCnt>const_key_time)//按键去抖
{
KeySha[2].KeyStartFlag=0;
KeySha[2].KeyTimeCnt=0;
if(fuhao == 0)
{
if(ABCounts == 0)
{
A = 2;
}
else
{
A = A*10 + 2;
}
}
else
{
if(ABCounts == 0)
{
B = 0;
}
else
{
B = B*10 + 2;
}
}
printf("2");
}
if(KeySha[3].KeyTimeCnt>const_key_time)//按键去抖
{
KeySha[3].KeyStartFlag=0;
KeySha[3].KeyTimeCnt=0;
if(fuhao == 0)
{
if(ABCounts == 0)
{
A = 3;
}
else
{
A = A*10 + 3;
}
}
else
{
if(ABCounts == 0)
{
B = 3;
}
else
{
B = B*10 + 3;
}
}
printf("3");
}
if(KeySha[4].KeyTimeCnt>const_key_time)//按键去抖
{
KeySha[4].KeyStartFlag=0;
KeySha[4].KeyTimeCnt=0;
if(fuhao == 0)
{
if(ABCounts == 0)
{
A = 4;
}
else
{
A = A*10 + 4;
}
}
else
{
if(ABCounts == 0)
{
B = 4;
}
else
{
B = B*10 + 4;
}
}
printf("4");
}
if(KeySha[5].KeyTimeCnt>const_key_time)//按键去抖
{
KeySha[5].KeyStartFlag=0;
KeySha[5].KeyTimeCnt=0;
if(fuhao == 0)
{
if(ABCounts == 0)
{
A = 5;
}
else
{
A = A*10 + 5;
}
}
else
{
if(ABCounts == 0)
{
B = 5;
}
else
{
B = B*10 + 5;
}
}
printf("5");
}
if(KeySha[6].KeyTimeCnt>const_key_time)//按键去抖
{
KeySha[6].KeyStartFlag=0;
KeySha[6].KeyTimeCnt=0;
if(fuhao == 0)
{
if(ABCounts == 0)
{
A = 6;
}
else
{
A = A*10 + 6;
}
}
else
{
if(ABCounts == 0)
{
B = 6;
}
else
{
B = B*10 + 6;
}
}
printf("6");
}
if(KeySha[7].KeyTimeCnt>const_key_time)//按键去抖
{
KeySha[7].KeyStartFlag=0;
KeySha[7].KeyTimeCnt=0;
if(fuhao == 0)
{
if(ABCounts == 0)
{
A = 7;
}
else
{
A = A*10 + 7;
}
}
else
{
if(ABCounts == 0)
{
B = 7;
}
else
{
B = B*10 + 7;
}
}
printf("7");
}
if(KeySha[8].KeyTimeCnt>const_key_time)//按键去抖
{
KeySha[8].KeyStartFlag=0;
KeySha[8].KeyTimeCnt=0;
if(fuhao == 0)
{
if(ABCounts == 0)
{
A = 8;
}
else
{
A = A*10 + 8;
}
}
else
{
if(ABCounts == 0)
{
B = 8;
}
else
{
B = B*10 + 8;
}
}
printf("8");
}
if(KeySha[9].KeyTimeCnt>const_key_time)//按键去抖
{
KeySha[9].KeyStartFlag=0;
KeySha[9].KeyTimeCnt=0;
if(fuhao == 0)
{
if(ABCounts == 0)
{
A = 9;
}
else
{
A = A*10 + 9;
}
}
else
{
if(ABCounts == 0)
{
B = 9;
}
else
{
B = B*10 + 9;
}
}
printf("9");
}
if(KeySha[10].KeyTimeCnt>const_key_time)//按键去抖
{
KeySha[10].KeyStartFlag=0;
KeySha[10].KeyTimeCnt=0;
fuhao = 1;
printf("+");
ABCounts = 0;
}
if(KeySha[11].KeyTimeCnt>const_key_time)//
{
KeySha[11].KeyStartFlag=0;
KeySha[11].KeyTimeCnt=0;
fuhao = 2;
printf("-");
ABCounts = 0;
}
if(KeySha[12].KeyTimeCnt>const_key_time)//按键去抖
{
KeySha[12].KeyStartFlag=0;
KeySha[12].KeyTimeCnt=0;
fuhao = 3;
printf("*");
ABCounts = 0;
}
if(KeySha[13].KeyTimeCnt>const_key_time)//按键去抖
{
KeySha[13].KeyStartFlag=0;
KeySha[13].KeyTimeCnt=0;
fuhao = 4;
printf("/");
ABCounts = 0;
}
if(KeySha[14].KeyTimeCnt>const_key_time)//按键去抖
{
KeySha[14].KeyStartFlag=0;
KeySha[14].KeyTimeCnt=0;
printf("=");
if(fuhao ==1)
printf("%d\r\n",A+B);
else if(fuhao ==2)
{
if((A-B)>0)
printf("%d\r\n",A-B);
// else
// {
// printf("-");
// printf("%d\r\n",B-A);
// }
}
else if(fuhao == 3)
{
printf("%d\r\n",A*B);
}
else if(fuhao == 4)
{
printf("%d\r\n",(int )(A / B));
}
delay_ms(1);
fuhao = 0;
A = 0;
B = 0;
ABCounts = 0;
}
}