news 2026/9/18 5:20:41

蓝桥杯单片机备赛指南第十五讲· 省赛真题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/9/13 19:53:58

手把手教你读懂ModbusRTU请求与响应报文

手把手教你读懂ModbusRTU请求与响应报文从一个真实调试场景说起上周&#xff0c;我在现场调试一套基于RS-485的温控系统时&#xff0c;遇到了这样一个问题&#xff1a;HMI主站轮询多个温度采集模块&#xff0c;但其中一台设备始终无响应。示波器抓包发现&#xff0c;总线上确实…

作者头像 李华
网站建设 2026/9/6 21:39:24

安静办公室环境下识别准确率达98%以上

Fun-ASR语音识别系统技术解析&#xff1a;安静办公室环境下如何实现98%准确率 在现代办公场景中&#xff0c;会议记录、远程协作和语音输入已成为日常刚需。然而&#xff0c;即便是在看似理想的安静办公室环境中&#xff0c;许多语音转文字工具依然会出现“听不清”“认错人”“…

作者头像 李华
网站建设 2026/9/10 21:24:37

MailerLite功能均衡:中小团队理想选择

Fun-ASR&#xff1a;中小团队私有化语音识别的实用之选 在远程办公常态化、会议录音与课程转写需求激增的今天&#xff0c;越来越多中小企业开始寻求高效、安全且低成本的语音转文字解决方案。公有云 ASR 服务虽然便捷&#xff0c;但数据外传的风险、持续调用的成本以及对网络环…

作者头像 李华
网站建设 2026/9/14 4:29:26

Provide Support实时监控:管理员随时介入

Provide Support 实时监控&#xff1a;管理员随时介入 在远程会议频繁、智能客服普及的今天&#xff0c;语音识别早已不再是“录完再转写”的静态工具。越来越多的业务场景要求系统不仅能快速输出文字&#xff0c;还要允许管理人员在过程中“看得见、插得上、控得住”。比如一场…

作者头像 李华
网站建设 2026/9/10 21:25:08

快捷键大全:提升Fun-ASR操作效率的Ctrl/Cmd组合技

快捷键&#xff1a;让语音识别效率起飞的隐形引擎 在每天要处理上百条会议录音的运维工程师眼里&#xff0c;每一次鼠标移动都像在沙地里奔跑——看似微不足道的动作累积起来&#xff0c;足以拖慢整个工作节奏。而当指尖轻敲 CtrlEnter 的瞬间&#xff0c;系统立刻响应启动识别…

作者头像 李华
网站建设 2026/9/12 11:00:09

网盘直链下载助手搭配Fun-ASR:批量处理云端音频文件

网盘直链下载助手搭配Fun-ASR&#xff1a;批量处理云端音频文件 在智能语音应用日益普及的今天&#xff0c;企业每天需要处理的录音数据量正呈指数级增长——从客服中心的通话记录到在线教育的课程回放&#xff0c;动辄数百小时的音频堆积如山。传统的做法是手动下载、逐个识别…

作者头像 李华