一.题目
二.解题思路
这套题也比较常规,考察LED,LCD,按键,ADC以及定时器的使用。
同前面的题目一样,套模板即可。
2.1 按键模块
struct key { int flag; int count; int press; }; struct key keys[4]={0}; void scan_key() { keys[0].flag=HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0); keys[1].flag=HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1); keys[2].flag=HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2); keys[3].flag=HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0); for(int i=0;i<4;i++) { switch(keys[i].count) { case 0: if(keys[i].flag==0) keys[i].count++; break; case 1: if(keys[i].flag==0) keys[i].count++; else keys[i].count=0; break; case 2: if(keys[i].flag==1) { keys[i].press=1; keys[i].count=0; } break; default :break; } } }
2.2 ADC模块
double Get_ADC(ADC_HandleTypeDef adc) { uint16_t temp = 0; HAL_ADC_Start(&adc); temp = HAL_ADC_GetValue(&adc); HAL_ADC_Stop(&adc); return temp*3.3/4096; }
2.3 LED模块
void led_proc() { uint16_t Led_Gpio; Led_Gpio=(uint16_t)(LED_s<<8); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_8 |GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC, Led_Gpio, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET); }
2.4 主函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim->Instance==TIM3) { scan_key(); do_key(); led_proc(); if(_UI==0) { V_value=Get_ADC(hadc2); if(V_value<UI_min)flag=1; if(V_value>=UI_min&&flag==1) { flag=0; time_now=uwTick; T_start=1; LED_s|=0x02; LCD_ClearLine(Line3); } if(V_value>=UI_max) { T_start=0; LED_s&=0xfd; } if(T_start==1)T_time=(uwTick-time_now)/100; sprintf(text," V:%.2fV",V_value); LCD_DisplayStringLine(Line0,(unsigned char *)" Data"); LCD_DisplayStringLine(Line2,(unsigned char *)text); sprintf(text," T:%ds",T_time); LCD_DisplayStringLine(Line3,(unsigned char *)text); } else if(_UI==1) { LCD_DisplayStringLine(Line0,(unsigned char *)" Para"); sprintf(text," Vmax:%.1fV",V_max); LCD_DisplayStringLine(Line2,(unsigned char *)text); sprintf(text," Vmin:%.1fV",V_min); LCD_DisplayStringLine(Line3,(unsigned char *)text); } } }
三.工程文件
这届蓝桥杯难度较易,工程文件在这里,你们可以参考使用,如有什么问题可以讨论,谢谢阅读。
链接:https://pan.baidu.com/s/1rOe4auzJPswFoqD7lRIw3A?pwd=6666
提取码:6666