作者:梦鸢蝶 | 来源:互联网 | 2023-02-05 14:11
目录
一、项目功能概述
二、仿真
三、代码
一、项目功能概述
能够进行四则加减乘除运算,并通过串口打印相关信息
资料下载地址:基于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;}}