栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

第十届 蓝桥杯 嵌入式设计与开发项目 省赛

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第十届 蓝桥杯 嵌入式设计与开发项目 省赛

框架
  • 赛题
  • 部分程序
  • 完整程序下载

赛题



部分程序
  
	m24c02_init();	//EEPROM初始化(此功能为研究生组题目需求)
	LED_init();			//LED初始化
	KEY_init();			//按键初始化
	LCD_Init();			//LCD初始化
	LCD_DisplayStringLine(Line2,LCD_Line2_buf);		//刷新LCD第3行
	HAL_TIM_Base_Start_IT(&htim2);					//使能定时器2中断
	TASK_TIMES_init();								//初始化任务时间
  

  
  
  while (1)
  {
    	
    
		scankey();					//扫描按键并执行按键功能(10ms)
		ADC_function();				//扫描ADC,并执行ADC功能(100ms)
		Interface_function();		//刷新界面(50ms)
		LED_function();				//刷新LED(200ms)		
  }
  
void Interface_function(void)
{
	if(get_task_time(TASK_TIMES.Interface_TIME)==0)
	{
		TASK_TIMES.Interface_TIME=get_time()+Interface_time;
		if(Interface==0)	//数据显示界面
		{
			LCD_Line4_buf[7]=ADC/100+48;LCD_Line4_buf[9]=ADC/10%10+48;	//电压值
			LCD_Line4_buf[10]=ADC%10+48;

			if(flag_ADC_state==0)	//超下限状态
			{
				LCD_Line5_buf[9]='L'; LCD_Line5_buf[10]='o';LCD_Line5_buf[11]='w';
				LCD_Line5_buf[12]='e';LCD_Line5_buf[13]='r';LCD_Line5_buf[14]=' ';
			}
			else if(flag_ADC_state==1)	//正常状态
			{
				LCD_Line5_buf[9]='N'; LCD_Line5_buf[10]='o';LCD_Line5_buf[11]='r';
				LCD_Line5_buf[12]='m';LCD_Line5_buf[13]='a';LCD_Line5_buf[14]='l';			
			}
			else if(flag_ADC_state==2)	//超上限状态
			{
				LCD_Line5_buf[9]='U'; LCD_Line5_buf[10]='p';LCD_Line5_buf[11]='p';
				LCD_Line5_buf[12]='e';LCD_Line5_buf[13]='r';LCD_Line5_buf[14]=' ';			
			}
			LCD_DisplayStringLine(Line4,LCD_Line4_buf);		//刷新LCD第4行
			LCD_DisplayStringLine(Line5,LCD_Line5_buf);		//刷新LCD第5行				
		}
		else if(Interface==1)	//参数设置界面
		{
			LCD_Line3_buf[11]=parameter_buf[0]/10+48;LCD_Line3_buf[13]=parameter_buf[0]%10+48;	//上限电压
			LCD_Line4_buf[11]=parameter_buf[1]/10+48;LCD_Line4_buf[13]=parameter_buf[1]%10+48;	//下限电压
			LCD_Line5_buf[10]=parameter_buf[2]+1+48;LCD_Line6_buf[10]=parameter_buf[3]+1+48;		//上下限提醒灯序号
			if(Set_Line==0) {LCD_SetBackColor(Green);LCD_DisplayStringLine(Line3,LCD_Line3_buf);LCD_SetBackColor(White);}	//刷新LCD第3行
			else {LCD_DisplayStringLine(Line3,LCD_Line3_buf);}
			if(Set_Line==1) {LCD_SetBackColor(Green);LCD_DisplayStringLine(Line4,LCD_Line4_buf);LCD_SetBackColor(White);}	//刷新LCD第4行
			else {LCD_DisplayStringLine(Line4,LCD_Line4_buf);}
			if(Set_Line==2) {LCD_SetBackColor(Green);LCD_DisplayStringLine(Line5,LCD_Line5_buf);LCD_SetBackColor(White);}	//刷新LCD第5行
			else {LCD_DisplayStringLine(Line5,LCD_Line5_buf);}
			if(Set_Line==3) {LCD_SetBackColor(Green);LCD_DisplayStringLine(Line6,LCD_Line6_buf);LCD_SetBackColor(White);}	//刷新LCD第6行
			else {LCD_DisplayStringLine(Line6,LCD_Line6_buf);}			
		}		
	}
}


void KEY_function(uint8_t key)
{
	uint8_t a;
	if(key==1)			//切换界面
	{
		if(++Interface==2) {Interface=0;}
		if(Interface==0)	//数据显示
		{
			LCD_ClearLine(Line3);	//LCD第3行清除显示	
			LCD_ClearLine(Line6);	//LCD第6行清除显示		
			sprintf((char *)LCD_Line2_buf,"        Main        ");	//刷新LCD第2行显示数组
			sprintf((char *)LCD_Line4_buf,"  Volt:0.00V        ");	//刷新LCD第4行显示数组
			sprintf((char *)LCD_Line5_buf,"  Status:Upper      ");	//刷新LCD第5行显示数组

			//此功能为研究生组题目需求
			for(a=0;a<4;a++) X24c02_buf[a+1]=parameter_buf[a];
			m24c02_write(X24c02_buf+1,DATA_ARR+1,4);	//保存参数到EEPROM		
		}
		else if(Interface==1)	//参数设置
		{
			sprintf((char *)LCD_Line2_buf,"      Setting       ");	//刷新LCD第2行显示数组
			sprintf((char *)LCD_Line4_buf,"  Min Volt:1.2V     ");	//刷新LCD第4行显示数组
			sprintf((char *)LCD_Line5_buf,"  Upper:LD1         ");	//刷新LCD第5行显示数组				
		}
		LCD_DisplayStringLine(Line2,LCD_Line2_buf);		//刷新LCD第2行显示		
	}
	else if(key==2)	//切换参数
	{
		if(Interface==1)											//仅在参数设置界面下有效
		{ if(++Set_Line==4) {Set_Line=0;} } 	//切换对上下限电压及提醒灯的设置			
	}
	else if(key==3)	//参数加
	{
		if(Interface==1)	//仅在参数设置界面下有效
		{
			if((Set_Line==0)||(Set_Line==1))	//上下限电压加0.3V
			{
				if(parameter_buf[Set_Line]+=3,parameter_buf[Set_Line]>33) {parameter_buf[Set_Line]=33;}	//上限最大为3.3
				if(parameter_buf[0]<=parameter_buf[1]) {parameter_buf[Set_Line]-=3;}										//上限不能小于等于下限
			}
			else if((Set_Line==2)||(Set_Line==3))//上下限提醒灯序号加1
			{
				if(++parameter_buf[Set_Line]>7) {parameter_buf[Set_Line]=0;}	//LED序号范围1-8
				if(parameter_buf[2]==parameter_buf[3]) {if(++parameter_buf[Set_Line]>7) {parameter_buf[Set_Line]=0;}}	//若两个提醒灯序号相等,则再自加一次
			}		
		}
	}
	else if(key==4)	//参数减
	{
		if(Interface==1)	//仅在参数设置界面下有效
		{
			if((Set_Line==0)||(Set_Line==1))	//上下限电压加0.3V
			{
				if(parameter_buf[Set_Line]-=3,parameter_buf[Set_Line]>33) {parameter_buf[Set_Line]=0;}	//下限最小为0
				if(parameter_buf[0]<=parameter_buf[1]) {parameter_buf[Set_Line]+=3;}										//上限不能小于等于下限
			}
			else if((Set_Line==2)||(Set_Line==3))//上下限提醒灯序号加1
			{
				if(--parameter_buf[Set_Line]>7) {parameter_buf[Set_Line]=7;}	//LED序号范围1-8
				if(parameter_buf[2]==parameter_buf[3]) {if(--parameter_buf[Set_Line]>7) {parameter_buf[Set_Line]=7;}}	//若两个提醒灯序号相等,则再自减一次
			}		
		}
	}	
}


完整程序下载

下载链接:
链接:https://pan.baidu.com/s/1LMECSy3GuABduu42YUJdSQ
提取码:qy2o

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/883883.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号