news 2026/4/18 3:36:36

蓝桥杯单片机备赛指南第十五讲· 省赛真题01:第十二届省赛完全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
蓝桥杯单片机备赛指南第十五讲· 省赛真题01:第十二届省赛完全解析

蓝桥杯单片机备赛指南第十五讲· 省赛真题01:第十二届省赛完全解析

1. 题目功能需求拆解

拿到题目(PDF),首先提取核心要素:

1.1 显示界面(3 个)

  1. 温度显示界面:标识符C,显示实时温度(保留2 位小数)。

    • 例:C 24.25
  2. 参数设置界面:标识符P,显示温度参数(整数)。

    • 例:P 25
  3. DAC 输出界面:标识符A(或U/F,依题意),显示当前DAC 输出电压(保留2 位小数)。

    • 例:A 3.50

1.2 逻辑控制

  • DAC 输出模式

    • 模式1VoutV_{out}Vout与温度相关。若T<TparamT < T_{param}T<Tparam,输出0V;若T≥TparamT \ge T_{param}TTparam,输出5V。

    • 模式2VoutV_{out}Vout固定输出(例如1V-5V 循环,或特定值,具体依代码逻辑)。

  • LED 指示

    • L1:模式1 时亮。

    • L2:温度显示界面时亮。

    • L3:参数设置界面时亮。

    • L4:DAC界面时亮。

1.3 按键定义

  • S4:界面切换(温度-> 参数-> DAC -> 温度)。

  • S5:模式切换(Mode 1 <-> Mode 2)。

  • S8:参数-1。

  • S9:参数+1。


2. 硬件与驱动层配置

本题用到两个核心外设,直接复用之前的驱动模块:

  1. DS18B20 (OneWire):复用Note 10的驱动。

    • 核心函数:Read_T()

    • 注意:读取需放在主循环,不能放在中断。

  2. PCF8591 (IIC):复用Note 11的驱动。

    • 核心函数:Da_Write(val)

    • 计算Val=Voltage×51.0Val = Voltage \times 51.0Val=Voltage×51.0


3. 软件架构实现(Grand Template 实战)

完全套用Note 12总结的“分时轮询架构”。

3.1 全局变量定义(RAM 镜像)

C

// === 核心数据 ===floatTemperature=0;// 实时温度unsignedcharT_Param=25;// 温度参数 (默认25)floatDAC_Volt=0;// DAC 输出电压// === 状态标志 ===unsignedcharSeg_Mode=0;// 0:温度, 1:参数, 2:DACunsignedcharWork_Mode=0;// 0:模式1, 1:模式2

3.2 主函数设计(Main Loop)

主函数只负责调度,不处理具体细节。

C

voidmain(){System_Init();// 关闭蜂鸣器、继电器等while(1){// 1. 数据获取 (Input)Temperature=Read_T();// 读取温度 (耗时操作放在主循环)// 2. 业务逻辑 (Logic)Key_Proc();// 按键处理Seg_Proc();// 数码管显示数据生成DAC_Proc();// DAC 输出逻辑计算LED_Proc();// LED 状态计算}}

3.3 按键处理(Key_Proc)

仅处理状态跳转和参数修改。

C

voidKey_Proc(){if(Key_Slow_Down)return;Key_Slow_Down=1;// ... (按键读取代码略) ...switch(Key_Down){case4:// S4: 切换界面if(++Seg_Mode>2)Seg_Mode=0;break;case5:// S5: 切换 DAC 模式Work_Mode^=1;break;case8:// S8: 参数 -if(Seg_Mode==1){// 仅在参数界面有效T_Param--;}break;case9:// S9: 参数 +if(Seg_Mode==1){T_Param++;}break;}}

3.4 核心业务逻辑(DAC_Proc)

将题目要求的DAC 逻辑独立封装,清晰明了。

C

voidDAC_Proc(){// 根据模式计算目标电压if(Work_Mode==0)// 模式 1: 温控输出{if(Temperature<T_Param)DAC_Volt=0.0;elseDAC_Volt=5.0;}else// 模式 2: 固定输出 (假设题意为固定 2V 或其他逻辑){DAC_Volt=2.0;}// 执行硬件输出Da_Write((unsignedchar)(DAC_Volt*51.0));}

3.5 显示处理(Seg_Proc)

只负责将数据“翻译”到Seg_Buf,不负责扫描。

C

voidSeg_Proc(){if(Seg_Slow_Down)return;Seg_Slow_Down=1;switch(Seg_Mode){case0:// 温度界面: C 24.25Seg_Buf[0]=12;// 'C'Seg_Buf[1]=10;// 熄灭// ... (中间熄灭) ...Seg_Buf[4]=(unsignedlong)(Temperature)/10;Seg_Buf[5]=(unsignedlong)(Temperature)%10;Seg_Buf[6]=(unsignedlong)(Temperature*10)%10;Seg_Buf[7]=(unsignedlong)(Temperature*100)%10;Seg_Point[5]=1;// 小数点break;case1:// 参数界面: P 25Seg_Buf[0]=13;// 'P'// ...Seg_Buf[6]=T_Param/10;Seg_Buf[7]=T_Param%10;Seg_Point[5]=0;// 清除小数点break;case2:// DAC 界面: A 3.50Seg_Buf[0]=10;// 'A' (假设字模 10)// ...Seg_Buf[5]=(unsignedchar)DAC_Volt;Seg_Buf[6]=(unsignedchar)(DAC_Volt*10)%10;Seg_Buf[7]=(unsignedchar)(DAC_Volt*100)%10;Seg_Point[5]=1;break;}}

4. 备赛心得与避坑指南

  1. DS18B20 的坑

    • 读取温度函数Read_T()内部有几十微秒甚至毫秒的延时,千万不要放在定时器中断里,否则会导致数码管闪烁、按键失灵。

    • 上电初始化时,DS18B20 默认输出85℃,建议在mainwhile(1)之前先读取一次温度丢弃,防止开机跳变。

  2. PCF8591 的坑

    • DAC 输出需要时间,虽然很快,但在高频循环中,建议加上简单的限流(例如每100ms 更新一次DAC),或者直接跟随主循环跑也没问题(因为有Read_T 的延时撑着)。
  3. 按键的坑

    • 题目中S8/S9 通常只在“参数设置界面”有效。务必在case 8case 9中加上if(Seg_Mode == 1)的判断,防止在看温度时误触修改了参数。
  4. 工程化思维

    • 看到这道题,你应该立刻反应出:这是DS18B20+ ** PCF8591**的组合。

    • 代码只需从之前的模块中复制粘贴,然后填入main.c的骨架中即可。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 20:47:46

cubemx安装完成后如何验证?入门必做的5个检查项

安装完STM32CubeMX后&#xff0c;怎么才算真正“能用”&#xff1f;新手必做的5项实战验证你有没有这样的经历——跟着教程一步步点“下一步”&#xff0c;终于看到桌面出现了那个蓝白相间的STM32CubeMX图标&#xff0c;心里一喜&#xff1a;“装好了&#xff01;”结果一打开项…

作者头像 李华
网站建设 2026/4/15 16:20:43

Constant Contact客户服务好:电话支持到位

Fun-ASR WebUI 技术解析&#xff1a;构建高效语音识别系统的实践路径 在智能办公、远程协作和内容创作日益普及的今天&#xff0c;语音作为最自然的人机交互方式之一&#xff0c;其背后的技术支撑——自动语音识别&#xff08;ASR&#xff09;正变得愈发关键。无论是会议记录自…

作者头像 李华
网站建设 2026/4/11 16:59:10

大模型Token经济崛起:Fun-ASR语音识别按需计费模式前瞻

大模型Token经济崛起&#xff1a;Fun-ASR语音识别按需计费模式前瞻 在AI服务从“能用”走向“精算”的今天&#xff0c;一个看似微小的技术单位——Token&#xff0c;正悄然重塑整个行业生态。过去我们习惯于为一次API调用或每分钟语音处理时间买单&#xff0c;但随着大语言模型…

作者头像 李华
网站建设 2026/4/17 17:47:31

边缘计算场景:Jetson设备运行轻量化Fun-ASR模型

边缘计算场景&#xff1a;Jetson设备运行轻量化Fun-ASR模型 在工厂车间的嘈杂环境中&#xff0c;巡检工人对着记录仪说出“3号机组温度异常”&#xff0c;系统几乎瞬间将语音转为文字并上传至工单系统——整个过程没有联网、无需等待云端响应。这背后并非依赖昂贵服务器&#x…

作者头像 李华
网站建设 2026/4/16 17:05:17

es客户端入门要点:掌握RestHighLevelClient用法

深入掌握 Elasticsearch Java 客户端&#xff1a;从 RestHighLevelClient 入门到实战 你有没有遇到过这样的场景&#xff1f;用户在搜索框里输入一个关键词&#xff0c;几毫秒内成千上万条匹配结果就精准呈现出来&#xff1b;或者运维同事通过 Kibana 查看日志时&#xff0c;能…

作者头像 李华
网站建设 2026/4/15 4:23:43

AI语音处理新利器:Fun-ASR开源项目全面测评

AI语音处理新利器&#xff1a;Fun-ASR开源项目全面测评 在智能办公、远程会议和语音交互日益普及的今天&#xff0c;如何高效、准确地将语音内容转化为结构化文本&#xff0c;已成为许多企业和开发者的刚需。尽管市面上已有不少语音识别方案&#xff0c;但要么依赖云端API带来…

作者头像 李华