蓝桥杯嵌入式第七届省赛(代查)

一、题目

 

二、程序代码

1. AD采集及滤波

void Set_Collect_Proc(void)
{uint8_t a;float ADC;if((uwTick-uwTick_Collect)<1000) return;uwTick_Collect=uwTick;for(a=0;a<=9;a++){ADC+=Get_R37();}ADC=ADC*3.3f/4096;R37_ADC=ADC/10;H=R37_ADC*K;if(H<=E2PROM_Num[0]){Level=0;}else if( (H<=E2PROM_Num[1])&&(H>E2PROM_Num[0]) ){Level=1;}else if( (H<=E2PROM_Num[2])&&(H>E2PROM_Num[1]) ){Level=2;}else if(H>E2PROM_Num[2]){Level=3;}if(Level_old!=Level){if(Level>Level_old){sprintf((char *)str,"A:H%02d+L%d+U\r\n",H,Level);}else{sprintf((char *)str,"A:H%02d+L%d+D\r\n",H,Level);}HAL_UART_Transmit(&huart1,str, strlen((const char *)str), 50);led2_sign=1;}Level_old=Level;
}

2. LCD显示

void Lcd_Proc(void)
{if((uwTick -  uwTick_Lcd_Set_Point)<100)	return;//减速函数uwTick_Lcd_Set_Point = uwTick;if(LCD_Show_Sign==1){LCD_SetTextColor(Black);sprintf((char *)Lcd_Str,"      Liquid Level         ");LCD_DisplayStringLine(Line0,Lcd_Str);sprintf((char *)Lcd_Str,"    Height:%d         ",H);LCD_DisplayStringLine(Line1,Lcd_Str);sprintf((char *)Lcd_Str,"    ADC:%3.2f         ",R37_ADC);LCD_DisplayStringLine(Line2,Lcd_Str);sprintf((char *)Lcd_Str,"    Level:%d         ",Level);LCD_DisplayStringLine(Line3,Lcd_Str);}else{	LCD_SetTextColor(Black);sprintf((char *)Lcd_Str,"  Parameter Setup       ");LCD_DisplayStringLine(Line0,Lcd_Str);if(E2PROM_Select==1){LCD_SetTextColor(Green);}else{LCD_SetTextColor(Black);}sprintf((char *)Lcd_Str,"    Threshold1: %2d      ",E2PROM_Num[0]);LCD_DisplayStringLine(Line1,Lcd_Str);if(E2PROM_Select==2){LCD_SetTextColor(Green);}else{LCD_SetTextColor(Black);}sprintf((char *)Lcd_Str,"    Threshold2: %2d       ",E2PROM_Num[1]);LCD_DisplayStringLine(Line2,Lcd_Str);if(E2PROM_Select==3){LCD_SetTextColor(Green);}else{LCD_SetTextColor(Black);}sprintf((char *)Lcd_Str,"    Threshold3: %2d       ",E2PROM_Num[2]);LCD_DisplayStringLine(Line3,Lcd_Str);}
}

3. 按键功能

功能:

        按键①:页面切换、储存阈值至E2PROM。

        按键②:阈值设定选择。

        按键③:阈值增加5cm,增加到95cm为止。

        按键④:阈值减少5cm,减少到5cm为止。

uint8_t Key_Scan(void)
{uint8_t key=0;if( HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)==GPIO_PIN_RESET ){key=1;}else if( HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1)==GPIO_PIN_RESET ){key=2;}else if( HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2)==GPIO_PIN_RESET ){key=3;}else if( HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==GPIO_PIN_RESET ){key=4;}return key;
}
void Key_Proc(void)
{if( (uwTick-uwTick_key)<50 ) return;uwTick_key=uwTick;Key_val=Key_Scan();Key_down=Key_val&(Key_old^Key_val);Key_up=~Key_val&(Key_old^Key_val);Key_old=Key_val;key_now=Key_down;if(Key_down==1){if(LCD_Show_Sign==1){LCD_Show_Sign=2;}else if(LCD_Show_Sign==2){E2PROM_T[0]=E2PROM_Num[0];E2PROM_T[1]=E2PROM_Num[1];E2PROM_T[2]=E2PROM_Num[2];IIC_24C02_Write(E2PROM_T,0,3);LCD_Show_Sign=1;Key_down=0;}}else if(Key_down==2){if(E2PROM_Select==1){E2PROM_Select=2;}else if(E2PROM_Select==2){E2PROM_Select=3;}else if(E2PROM_Select==3){E2PROM_Select=1;}}else if(Key_down==3){if(E2PROM_Select==1){E2PROM_Num[0]+=5;if(E2PROM_Num[0]>=100){E2PROM_Num[0]=95;}if(E2PROM_Num[0]>=E2PROM_Num[1]){E2PROM_Num[0]=E2PROM_Num[1];}}if(E2PROM_Select==2){E2PROM_Num[1]+=5;if(E2PROM_Num[1]>=100){E2PROM_Num[1]=95;}if(E2PROM_Num[1]>=E2PROM_Num[2]){E2PROM_Num[1]=E2PROM_Num[2];}}if(E2PROM_Select==3){E2PROM_Num[2]+=5;if(E2PROM_Num[2]>=100){E2PROM_Num[2]=95;}}}else if(Key_down==4){if(E2PROM_Select==1){E2PROM_Num[0]-=5;if(E2PROM_Num[0]<=5){E2PROM_Num[0]=5;}}if(E2PROM_Select==2){E2PROM_Num[1]-=5;if(E2PROM_Num[1]<=5){E2PROM_Num[1]=5;}if(E2PROM_Num[1]<=E2PROM_Num[0]){E2PROM_Num[1]=E2PROM_Num[0];}}if(E2PROM_Select==3){E2PROM_Num[2]-=5;if(E2PROM_Num[2]<=5){E2PROM_Num[2]=5;}if(E2PROM_Num[2]<=E2PROM_Num[1]){E2PROM_Num[2]=E2PROM_Num[1];}}}}

4. 串口查询与输出功能

1.查询功能

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{if(rx_buffer[0] == 'C'){T_sign=1;counter=0;led_Usart_sign=1;		}else if(rx_buffer[0] == 'S'){			T_sign=2;counter=0;	led_Usart_sign=1;}rx_buffer[0]=0;HAL_UART_Receive_IT(&huart1, (uint8_t *)(&rx_buffer), 1);}
void Usart1_Proc(void)
{if(T_sign==1){sprintf((char *)str, "C:H%02d+L%02d\r\n",(uint8_t)H,(uint8_t)Level);HAL_UART_Transmit(&huart1,str, strlen((const char *)str), 50);T_sign=0;}else if(T_sign==2){sprintf((char *)str, "S:TL%2d+TM%2d+TH%2d\r\n",E2PROM_Num[0],E2PROM_Num[1],E2PROM_Num[2]);HAL_UART_Transmit(&huart1,str, strlen((const char *)str), 50);T_sign=0;}
}

输出功能:写入到了“AD采集及滤波”代码中。

if(Level_old!=Level){if(Level>Level_old){sprintf((char *)str,"A:H%02d+L%d+U\r\n",H,Level);}else{sprintf((char *)str,"A:H%02d+L%d+D\r\n",H,Level);}HAL_UART_Transmit(&huart1,str, strlen((const char *)str), 50);led2_sign=1;}Level_old=Level;

5. 状态指示

void LED_Show(uint8_t led)
{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(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOC,led<<8, GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
}
void LED_Proc(void)
{if((uwTick-uwTick_led)<200) return;uwTick_led=uwTick;led1_num++;if(led1_num==5){led1_num=0;LED^=0x01;}if(led2_sign==1){LED^=0x02;led2_times++;if(led2_times>=10){led2_sign=0;led2_times=0;LED&=0xfd;}}if(led_Usart_sign==1){LED^=0x04;led4_times++;if(led4_times>=10){led_Usart_sign=0;led4_times=0;LED&=0xfb;}}}

重点:关注初始化时E2PROM的保存方式!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/58434.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

叫停GPT-4后续AI大模型!马斯克、Bengio等人发出公开信,千人响应

来源&#xff1a;机器之心 呼吁所有 AI 实验室立即暂停训练比 GPT-4 更强大的 AI 系统&#xff0c;为期至少 6 个月。 人们一直在说 ChatGPT 有风险&#xff0c;OpenAI CEO 也这么说&#xff0c;现在终于有人出手了。 在 GPT-4 诞生两周之际&#xff0c;一封公开信正在社交媒体…

马斯克与全球千名科技人士联名叫停AI开发,转头却购入1万块GPU?

这几个月全球最焦点的话题莫过于横空出世的ChatGPT&#xff0c;然而这两天&#xff0c;全球最火爆的话题却突然转向&#xff01; 埃隆.马斯克等一众科技大咖敦促暂停人工智能开发&#xff01; Twitter 首席执行官埃隆马斯克 (Elon Musk)及苹果联合创始人史蒂夫.沃兹尼亚克和 D…

kaptcha实现验证码功能

最近看到一个使用kaptcha实现验证码的案例&#xff0c;因此记录一下 1.创建一个Springboot项目&#xff0c;在pom.xml里面导入如下依赖 <dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.…

抖音店群玩法之后端维护

大家好&#xff0c;我是北鱼会大鹏&#xff0c;来自河南郑州&#xff0c;5年电商老兵&#xff0c;这是我第110篇原创文章。 抖音店群无货源玩法&#xff0c;是经过10年前的某宝无货源演变而来&#xff0c;任何项目开始初期既是红利期&#xff0c;许多店群老手因为自身有丰富的经…

抖音账号|短视频矩阵分发系统 | 多账号管理发布 |MVC架构

短视频矩阵分发系统是一种可以帮助企业、机构和个人高效分发短视频的工具。随着社交媒体的不断普及&#xff0c;短视频的使用越来越广泛&#xff0c;因此如何快速而准确地将短视频传播到不同的平台和账号上已经成为了一个重要的问题。短视频矩阵分发系统应运而生&#xff0c;它…

创弘星鹏电商:设计抖音小店主图的方法和技巧

主图是我们看到商品的一点眼&#xff0c;对商品的点击影响是很大的&#xff0c;有经验的商家都知道&#xff0c;点击不好首先就会去看看是不是主图的原因&#xff0c;尤其是上传的第一张主图尤为重要&#xff0c;小编给大家分享抖音小店制作主图的一些基本要求以及涉及方法. 抖…

从零开始搭建仿抖音短视频APP-后端开发消息业务模块(1)

项目持续更新中&#xff1a; 仿抖音短视频APP专栏 目录 保存系统消息到MongoDB 系统消息入库保存-关注 系统消息入库保存-点赞短视频 系统消息入库保存-评论与回复 保存系统消息到MongoDB 我们把mongoDB整合到Springboot之后&#xff0c;我们需要把映射层面做好。 首先在…

抖音矩阵号运营是什么?如何开发及布局

1.什么是抖音矩阵号运营&#xff1f;如何通过抖音SEO实现关键词侵占及排名优化&#xff1f;企业如何通过抖音SEO运营收货百亿流量&#xff1f; 抖音搜索你可以把它理解成更细分、更垂直的短视频搜索引擎。就像豆丁网一样&#xff0c;它就是垂直定位于中文文档的搜索引擎&#x…

短视频抖音运营策划营销推广方案2022

原文档网盘地址下载https://pan.baidu.com/s/1zJ5NNX8PbmN5MaE7_Zp9Fw?pwdfdk2 每一个流程上&#xff0c;你比别人多付出的努力是50%。那么六个流程加起来&#xff0c;你多付出了多少的努力呢&#xff1f;注意还是50%&#xff1f;有些同学可能本能反应了一下&#xff0c;觉得…

青少年CTF-取证合集

日志分析1 题目描述 解压得到一个.log文件 由于黑客是上传所以我们通过命令 得到所有post请求的数据并写入到1.txt strings access.log | grep POST >> 1.txt 我一直以为是flag{IP}搞半天一直是错误&#xff0c;后面有重新看了一下题目才知道&#xff0c;133.1.16.173…

FastJson快速上手【Json解析工具】

目录 一、spring boot工程中引入FastJson依赖 二、调用JSON类的静态方法直接进行json序列化和反序列化 2.1 序列化 2.2 反序列化 三、快速演示&#xff1a; 四、思考 五、web案例demo演示 针对JSON序列化和反序列化&#xff0c;为了方便快捷&#xff0c;我们一般使用jso…

图解《狂飙》人物关系

《狂飙》作为今年的开年大戏&#xff0c;一经播出就受到了大家的广泛关注&#xff0c;成为了全民热议的现象级剧集。作为一部扫黑剧&#xff0c;剧中的黑白两派的人物关系可谓错综复杂&#xff0c;不少小伙伴初看时经常搞不清楚出场人物的关系&#xff0c;看得一头雾水。那本期…

[小森数据结构]看电影-顺序表技术精讲

故事前研(言) 小森去看电影<<流浪地球2>>的时候买电影票的场景. 突然一个叫高启强的人买电影票 拉了两个Hei友,来看电影 <<流浪地球2>> 当场就害怕极了&#xff0c;我也知道他想干什么&#xff0c;于是乎就让他到我这里&#xff0c;“高启强”:你小…

【分享贴】项目中为啥总是项目经理一人干着急?

看完了《狂飙》才发现&#xff0c;高启强才是咱项目经理的模范。前段时间身边同事都疯狂安利这部电视剧&#xff0c;但我哪有空余时间刷剧&#xff0c;直到最近才断断续续的追完。这才发现“高启强”这个人物身上有很多闪光点&#xff0c;值得学习借鉴。 他能从一个鱼贩逆袭成…

手捏Java知识点

今天开始面向对象了 面向对象基础 类&#xff1a;由属性和行为组成属性&#xff1a;在类中通过成员变量来体现行为&#xff1a;在类中通过成员方法来体现public class 类名{//成员变量变量1的数据类型 变量1;变量2的数据类型 变量2;...//成员方法方法1;方法2;...}有几个重要的概…

如何优雅地修改同事的代码

前言 互联网开发多以团队协同的方式为主&#xff0c;在实际的开发过程中&#xff0c;我们经常会面对在同事的代码的基础上重新开发的需求。然而由于人员的迭代、需求的变更、文档的缺失等原因&#xff0c;我们贸然修改同事的代码往往需要承担一些额外的开发风险&#xff0c;比如…

Java8 map.getOrDefault()你真的了解吗

大家好&#xff0c;我是三叔&#xff0c;很高兴这期又和大家见面了&#xff0c;一个奋斗在互联网的打工人。 map.getOrDefault()方法 在Java编程中&#xff0c;Map是一种非常常用的数据结构。Map通常用于存储键值对&#xff0c;其中每个键映射到一个值。当我们尝试访问一个不…

同是打工人,学Python搞副业的朋友跟高启强一样实现逆袭了?

年过完了&#xff0c;现在已经回归工作岗位&#xff0c;接着拧自己的螺丝钉&#xff0c;不过&#xff0c;假期也不算寂寞&#xff0c;追了大热的电视剧《狂飙》。卖鱼小贩高启强的逆袭让我这种打工人太羡慕了&#xff0c;当他坐在白金瀚的办公室里美滋滋的喝着红酒的时候&#…

张杰清唱高启强专属BGM简直就是天作之合,千万别点进来看

张杰清唱高启强专属BGM简直就是天作之合&#xff0c;千万别点进来看&#xff0c;#张杰#BGM#音乐 张杰演唱的《听》狂飙高启强自从出现在抖音上更是火得不可思议&#xff0c;它成为了不少年轻人喜爱的BGM&#xff0c;尤其是用它作为专属BGM的抖音视频更是受到网友的一致好评。 …

老默我想吃鱼了(抽象艺术)

目录 指针地位 代码示例 人物关系 代码分析 总结 指针地位 在C语言中 指针的地位可以说是王中王 代码示例 如下 #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int main() {int a 15;printf("老默出手前鱼的值:%d\n", a);int* pa &a;*pa 30;p…