蓝桥杯第十四届-电子类单片机国赛

        第十四届国赛的参数调节部分与以往不同,出现了负参数。由于平时这类参数都使用的是unsigned int和unsigned char类型,因此突然遇到负数会让人感到有些困惑。下面提供一个实例以供参考。

        代码中的“voltage”是需要使用按键调节的电压参数,其阈值为-5V至5V。通过以下程序,可以实现按下按键一次,电压参数自增0.5V,超过5V时切换至-5V。为了方便数码管显示,abs((int)(voltage10)/10)用于获取电压参数的整数部分,abs((int)(voltage10)%10)则获取小数部分。通过判断“voltage”是否小于0,可以让数码管在电压参数为负数时显示负号。

#include  
#include 

char keyboard;
float voltage = 0;	// -5v-5v

void test()
{
	keyboard = getchar();
	if( keyboard == 'k' )    //按键被按下
	{
		voltage += 0.5;
		if( voltage == 5.5 )    //范围控制 电压参数-5v-5v
			voltage = -5;
		printf("voltage:%f\r\n",voltage);
		printf("%d",(int)(voltage*10));
		if(voltage < 0)	printf("是负数\t");
		else			printf("是正数\t");
		printf("个位是%d\t",abs((int)(voltage*10)/10));
		printf("小数位是%d\r\n",abs((int)(voltage*10)%10));
	}	
}

int main()
{
	while(1)
	{
		test();
	}
	
}
蓝桥杯第十四届-电子类单片机国赛_第1张图片 运行视图

你可能感兴趣的:(蓝桥杯,单片机,51单片机)