基于STM32计算器仿真

基于STM32计算器仿真,第1张

目录


一、项目功能概述


二、仿真


三、代码


一、项目功能概述

能够进行四则加减乘除运算,并通过串口打印相关信息

资料下载地址:基于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;
		
	}
	
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/634950.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-16
下一篇 2022-04-16

发表评论

登录后才能评论

评论列表(0条)

保存