第十三届蓝桥杯单片机第二场

文章目录

  • 第十三届蓝桥杯单片机第二场
  • 前言
  • 一、赛题分析
  • 二、程序调试步骤
  • 三、部分源程序
    • 主函数部分
    • DAC处理函数
    • 数码管处理函数
    • ADC处理函数
    • 超声波处理函数
    • LED处理函数
  • 总结

前言

赛题感受:

  • 本届赛题应该是这些年以来,第一次省赛考超声波。首先拿到赛题以后很惊讶,这大概是由于准备不足所导致的。在准备省赛过程中,几乎没有看超声波,由于准备不足,拿到赛题是一头雾水。所以大家也不要以为以前省赛题未考的部分,省赛就不会出。只要是在学习的外设部分,任何外设都有可能出现。大家绝对不能放松警惕,不要因为准备不充分,导致自己跟国赛失之交臂。
  • 比赛过程中,由于源代码的bug过多,就没有在处理源代码。重新写了第十三届蓝桥杯单片机第二场赛题,在重新写过一遍代码后,感觉是真的完了,只能看看运气了。

``

一、赛题分析

  • 1.本届赛题添加了超声波,由于超声波加入,可能让题难度加大。但逻辑并不是很难。总得来说,逻辑方面的难度基本与往届相同。如果因为超声波问题,做本届赛题会比较棘手。
  • 2.参数退出界面生效问题,按键在进入界面3关闭rb2的功能,保证参数设置状态下,测距功能不受影响。在参数退出界面生效。

二、程序调试步骤

由于程序是重写的,重写的程序调试步骤如下:

  • 1.对每个界面进行进行分别调试,测试好每一个界面显示
  • 2.加入按键,进行按键调试
  • 3.加入AD/DA模块
  • 4.加入LED显示模块

三、部分源程序

主函数部分

/******************************************************************* @file main.c* @author Happy_Bean* @version v2.0* @date 2022-05-17* @brief  蓝桥杯单片机第十三届省赛(第二场)***************************************************************** @attention ** Diff1. 参数设置界面下退出生效* Diff2. 超声波测距显示
*/···void main(void)
{ALL_Init();  // 关闭外设初始化while(1){Key4_Proc();  // 按键扫描函数ADC_Proc();  // ADC处理函数SEG_Proc();  // 数码管处理函数Soinc_Proc();  // 超声波处理函数LED_Proc();  // LED处理函数DAC_Proc();  // DAC处理函数LED_Disp(uc_LED);  // LED显示函数}
}void Timer1_ISR(void) interrupt 3
{static unsigned int flag_1s;// 按键刷新频率if(++uc_Key_flag == 5)uc_Key_flag = 0;// 数码管刷新频率if(++uc_SEG_flag == 1){uc_SEG_flag = 0;}SEG_Disp(puc_SEG_Code,uc_SEG_Position);   //数码管显示if(++uc_SEG_Position == 8) uc_SEG_Position = 0;// 超声波刷新频率if(++ui_Sonic_flag == 300)ui_Sonic_flag = 0;if(++flag_1s == 100)  // 计时0.1s{flag_1s = 0;LED_L8_flag ^= 1;}
}

DAC处理函数

···/*** @brief DAC处理函数* @param 无* @retval 无
*/
void DAC_Proc()
{static unsigned char output_dianya;if(Ranging_Show_flag == 0){if(uc_Dist < 20)output_dianya = 1;else if((uc_Dist <= 80)&&(uc_Dist >= 20))output_dianya = 5;else if(uc_Dist > 80)output_dianya = (1/15)*(uc_Dist - 20)+1;  // 这里算出来的数不一定是整数,需要进行强制类型转换}else if(Ranging_Show_flag == 1){output_dianya = 0;}PCF8591_DAC((unsigned char)output_dianya*51);
}···

数码管处理函数

···/*** @brief 数码管处理函数* @param 无* @retval 无
*/
void SEG_Proc()
{if(uc_SEG_flag) return;  // 刷新频率uc_SEG_flag = 1;Vrb2 = PCF8591_ADC(0x03);  // 使用滑动变阻器进行AD转换Vrb2 = Vrb2*1.96;  // 电压扩大1.96倍dianya_show = Vrb2;if(uc_SEG_MODE == 1)  // 电压显示界面{set_para_flag = 0;dianya_show = (float)dianya_show/100;  // 缩小100倍电压,并强制类型转换为floatsprintf(puc_SEG_Buf,"U    %3.2f",(float)dianya_show);}else if(uc_SEG_MODE == 2)  // 测距界面{distance = uc_Dist;  // 读取实时检测的距离if(Ranging_Show_flag == 0)   // 连续测量标志位为0,进入连续测量界面{if(distance > 99)  // 测量距离大于三位数,数码管显示3位{sprintf(puc_SEG_Buf,"L    %03u",(unsigned int)distance);}else if(distance <= 99)  // 测量距离小于三位数,数码管显示两位{sprintf(puc_SEG_Buf,"L     %02u",(unsigned int)distance);}}else if(Ranging_Show_flag == 1)  // 连续测量标志位为1,退出连续测量界面{sprintf(puc_SEG_Buf,"L    AAA");}}else if(uc_SEG_MODE == 3)  // 参数调整上下限界面{dianya_max = max; dianya_min = min;sprintf(puc_SEG_Buf,"P  %02.1f %02.1f",(float)dianya_max,(float)dianya_min);}SEG_Tran(puc_SEG_Buf,puc_SEG_Code);  // 数码管段码转换
}···

ADC处理函数

···/*** @brief ADC处理函数* @param 无* @retval 无
*/
void ADC_Proc(void)  // ADC处理函数
{if(set_para_flag == 0)  // 有效参数界面下,Rb2控制超声波是否进入连续测量{// Vrb2中电压扩大了1.96倍,将数据控制在0 - 4.99  总体电压扩大100倍if((Vrb2 >= min*100)&&(Vrb2 <= max*100))  // 模数转化电压在设定范围内,进入连续测距界面Ranging_Show_flag = 0;  // 在规定范围内,将连续测距标志位置零else  // 不满足设定的电压,退出连续测距界面Ranging_Show_flag = 1;  // 数据不在我们规定的范围内,将连续测距标志位置1,即退出连续测距界面}
}···

超声波处理函数

/*** @brief 超声波处理函数* @param 无* @retval 无
*/
void Soinc_Proc(void)
{if(ui_Sonic_flag) return;  // 刷新频率ui_Sonic_flag = 1;uc_Dist = Sonic();  //测距
}

LED处理函数

/*** @brief LED处理函数* @param 无* @retval 无
*/
void LED_Proc()
{if((Ranging_Show_flag == 0)&&(LED_L8_flag == 1)){LED_ON(L8);}else{LED_OFF(L8);}if(uc_SEG_MODE == 1){LED_ON(L1); LED_OFF(L2); LED_OFF(L3);}else if(uc_SEG_MODE == 2){LED_ON(L2); LED_OFF(L1); LED_OFF(L3);}else if(uc_SEG_MODE == 3){LED_ON(L3); LED_OFF(L2); LED_OFF(L1);}
}

总结

对于本届赛题,省赛考了超声波,这对于后面省赛试题提供了外设考察的多样性。对于每一个模块的驱动,包括串口都不能放下。熟练掌握每一个模块的使用。
以上就是今天要讲的内容,下面为源代码:
源代码阿里云链接
提取码:rd74
gitlab链接
蓝桥杯单片机13届第二场源代码链接1
github链接
蓝桥杯单片机13届第二场源代码链接2
有兴趣的朋友可以看一看

希望这篇文章对你有所帮助。

本人码龄1年,文章有诸多不妥之处,欢迎大家指正。另附上几位小编推荐的文章,感兴趣的朋友可以看一看。

嵌入式组:第十三届第二场蓝桥杯嵌入式主观题讲解
第十三届——蓝桥杯嵌入式第二场
2022年蓝桥杯嵌入式第二场程序题
单片机组:蓝桥杯十三届第二场程序设计

蓝桥杯单片机第十三届第二场相关推荐

  1. 蓝桥杯单片机第十三届第二场考后归纳总结

    提示:一个第十三届蓝桥杯单片机  考生的考后总结 文章目录 前言 一.第十三届考的是什么? 二.数据代码 总结 一.第十三届考的是什么? 1.电位器RB2的电压测量,用DAC输出 2.超声波测距 3. ...

  2. 蓝桥杯嵌入式第十三届第一场省赛真题

    一.程序设计题 A.CubeMx 1.选用80MHZ时钟.SW线 2.GPIO配置 3.TIM2_Channel2 4.串口USART1 选择PA9.PA10引脚,DAM传输.使能空闲中断 5.中断优 ...

  3. 蓝桥杯单片机第七届省赛-模拟风扇控制系统

    九层妖塔 起于垒土 ● 改编自国信长天蓝桥杯官方蓝皮书例程,按照自己的习惯进行了补充和修改 蓝桥杯单片机第七届省赛-模拟风扇控制系统 Notes1:按键按下后在某些情况下给一定的缓冲时间 Notes2 ...

  4. 2020年第十一届蓝桥杯C/C++ B组第二场省赛真题

    2020年第十一届蓝桥杯C/C++ B组第二场省赛真题 第一题 门牌制作 题目描述 小蓝要为一条街的住户制作门牌号.这条街一共有2020位住户,门牌号从1到2020编号.小蓝制作门牌的方法是先制作0到 ...

  5. 蓝桥杯单片机第十二届第一场省赛--张三填坑

    Less interests.More interest. 蓝桥杯单片机第十二届第一场省赛--张三填坑 坑0 坑1 坑2 坑3 坑4 坑5 坑6 坑7 坑8 仅记录试题中可能存在的坑. 源码和PDF题 ...

  6. 被十三届第二场蓝桥杯背刺了

    考的是AD/DA.超声波哭了!十三年省赛我都写个遍都没有考过超声波,为什么第一场比赛和第二次差距这么大? 国赛才会有的模块,现在在省赛这里考了,相信大家第一眼都是蒙的状态,如果机器阅卷的话想办法解决就 ...

  7. 【蓝桥杯】第十三届蓝桥杯单片机第二次省赛 代码程序

    第十三届蓝桥杯单片机第二次省赛 题目 hex文件 代码 工程文件 B站视频 更多资料 题目 历届的省赛和国赛的题目我已经在前面的文章(点击查看)里给大家分享了(网盘资源),需要的话,直接去下载,我在这 ...

  8. 【蓝桥杯】第十三届蓝桥杯单片机国赛 代码程序

    第十三届蓝桥杯单片机国赛 程序 题目 hex文件 代码 工程文件 B站视频 更多资料 题目 历届的省赛和国赛的题目我已经在前面的文章(点击查看)里给大家分享了(网盘资源),需要的话,直接去下载,我在这 ...

  9. 蓝桥杯单片机第十届国赛

    今天是第十三届蓝桥杯单片机国赛的比赛时间,刚比完,简单说一下感想,这次国赛必须要用到三个定时器,昨天刚看了定时器2的使用,不太熟练,所以写的也不是很好,超声波和频率有点冲突,就个人而言,我觉得这一届最 ...

最新文章

  1. maya批量命名插件_教你玩转MAYA的四十二精华造诣(第一期)
  2. Android APP性能优化
  3. Silverlight实用窍门系列:59.多个中心点联动多线的可拖动控件扩展为拓扑图
  4. Java虚拟机 —— 类的加载机制
  5. luogu P1843 奶牛晒衣服 | 二分法
  6. CSP认证201703-4 地铁修建[C++题解]:连通路径上的最大边权最小、bfs求边权为1的最短路、二分查找
  7. 背景区域为负样本什么意思_词向量-skipgram与负采样
  8. python函数的继承_Python 继承
  9. 所有子序列的逆序对总和_一个数字的所有子串的总和
  10. Java 判断字符串的存储长度
  11. HDU——3579 Hello Kiki
  12. 古体字与简体字对照表_简体字繁体字对照表?
  13. Label mx条码打印软件批量制作ITF-14条码
  14. java用switch语句抽奖_Java使用带有switch语句的枚举
  15. 《数据结构导论》之树
  16. 【C/C++】黑盒测试
  17. COGS 613. 火车站饭店 解题报告
  18. ubuntu20.04 外接显示器检测不到 未知的显示器 显卡安装黑屏 解决方案
  19. python匿名函数调用_(Python) 函数、匿名函数
  20. MySql的exists

热门文章

  1. 中科院院士谈量子技术发展 20年后黑客消失
  2. ADB 学习(3):adb uninstall 命令
  3. 大雁魔三阶[大烟头]
  4. 安装教程之Teamviewer下载及安装
  5. 美团软件开发工程师一面
  6. 新东方计算机考研排名,考研分数,机械考研院校排名?
  7. DM368开发 -- 文件烧写
  8. 一款非常有趣的中国版本的Excalidraw作图工具drawon(桌案)
  9. 做“小米”还是“特斯拉”,后疫情时代小牛电动如何走?
  10. Mysql实现查询一年内的考勤记录(行转列)