蓝桥杯第十届嵌入式设计真题.省赛

真题原题

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

题目解析

本届的题目总体来说比较简单,所涉及的模块也不多,CubeMX的配置也不难,所以本届的CubeMX配置就省了。我觉得本届复杂的地方就是参数设置界面的参数项选择跟LED指示灯的变换,还有一些基本的现象冲突也是需要我们注意到的,比如提醒指示灯不能是同一个,电压上限值不能跟电压下限值相等等等,这些题目都没有特别说明,但是这些都需要我们去配置。

代码及解析

变量解释

int view=0;		//用于界面切换
float  a=2.4,b=1.2;		//电压的上限值跟下限值
int c=1,d=2;		//上限跟下限的提醒指示灯
int flag=1;		//用于在参数设置界面的参数项选择
int S=2;		//电压的状态

LED

void LED_Disp(uchar dsLED)
{
   
	HAL_GPIO_WritePin (GPIOC ,GPIO_PIN_All ,GPIO_PIN_SET );		//置高电平
	HAL_GPIO_WritePin (GPIOC ,dsLED <<8,GPIO_PIN_RESET );		//置低电平
	HAL_GPIO_WritePin (GPIOD ,GPIO_PIN_2 ,GPIO_PIN_SET );		//打开锁存器
	HAL_GPIO_WritePin (GPIOD ,GPIO_PIN_2 ,GPIO_PIN_RESET );	
}

LCD

LCD部分有个“高亮”显示,我这用的是死办法,各位有更简单的办法就更好了,一些初始状态也要设置好

void disp_proc(void )
{
   
	if(view ==0)		//数据显示界面
	{
   
		LCD_SetBackColor (White );		//清屏
		char text[30];
		sprintf (text ,"        Main                ");
		LCD_DisplayStringLine(Line2, (uint8_t *)text );
		sprintf (text ,"    Volt:%.2fV             ",getADC (&hadc2 ));
		LCD_DisplayStringLine(Line4, (uint8_t *)text );
		if(getADC(&hadc2)>a)		//如果超过上限
		{
   		
			sprintf (text ,"    Status:Upper                 ");
			LCD_DisplayStringLine(Line6, (uint8_t *)text );	
		}
		else if(getADC(&hadc2)<b)			//如果低于下限
		{
   
			sprintf (text ,"    Status:Lower                 ");
			LCD_DisplayStringLine(Line6, (uint8_t *)text );	
		}
		else 			//位于上限下限的中间
		{
   
			sprintf (text ,"    Status:Normal                 ");
			LCD_DisplayStringLine(Line6, (uint8_t *)text );	
		}

	}
	
	else if(view ==1)			//参数设置界面
	{
   
		LCD_SetBackColor(White );		//清屏
		char text[30];
		sprintf (text ,"       Setting                ");
		LCD_DisplayStringLine(Line2, (uint8_t *)text );
		if(flag ==1)
		{
   
			sprintf (text ,"    Min Volt :%.1fV               ",b);
			LCD_Display
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值