IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 第十届 蓝桥杯 嵌入式设计与开发项目 省赛 -> 正文阅读

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

赛题

请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述

部分程序

  /* USER CODE BEGIN 2 */
	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();								//初始化任务时间
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */	
    /* USER CODE BEGIN 3 */
		scankey();					//扫描按键并执行按键功能(10ms)
		ADC_function();				//扫描ADC,并执行ADC功能(100ms)
		Interface_function();		//刷新界面(50ms)
		LED_function();				//刷新LED(200ms)		
  }
  /* USER CODE END 3 */
/*
函数功能:界面显示功能
入参:无
返回值:无
*/
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);}			
		}		
	}
}


/*
函数功能:按键功能
入参:key:按键值
返回值:无
*/
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

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-05-18 17:49:03  更:2022-05-18 17:49:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:34:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码