2021年第12届蓝桥杯赛后总结

本文是作者对第12届蓝桥杯电子类(单片机)比赛的赛后总结,重点讨论了矩阵按键逻辑、数码管显示模式、DAC输出与环境温度的关系以及DS18B20温度读取。作者分享了实现功能的思路,并提供了代码链接供读者参考,期待交流和指正。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第12届蓝桥杯电子类(单片机)赛后总结

这次比赛难度大致跟第9届的差不多吧。个人认为主要的坑在根据环境温度调整DAC输出那一块吧。

考察的模块有:LED,数码管,矩阵按键,DAC输出,DS18B20

(1):这次关于矩阵按键的使用逻辑其实并不复杂。我使用的是定时查询的方法,对于这种方法的优点大家可以去看看《手把手教你学单片机》这一本书。

(2):数码管有三种显示模式,分别是温度显示界面、温度参数设置界面、DAC输出电压显示界面。由S4按键实现循环切换,这里可以定义一个变量用switch的方法来实现。

(3):DAC输出有两种模式。模式1:当前环境温度小于温度参数时DAC输出0V,否则输出5V。 模式2:DAC输出随环境温度的变化而变化,小于等于20℃时恒输出1.0V,大于大于等于40℃时恒输出4.0V。介于20℃~40℃之间时DAC输出与环境温度成线性关系——y=0.15x - 2。

        需要自己编写DAC输出函数:

      	void PCF8591_DAC(unsigned char dat)
      	{
			IIC_Start();
			IIC_SendByte(0x90);
			IIC_WaitAck();

			IIC_SendByte(0x43);
			IIC_WaitAck();

			IIC_SendByte(dat);
			IIC_WaitAck();

			IIC_Stop();
		}

(4):LED小灯的使用就很简单了。当DAC输出处于模式1时L1小灯点亮。当处于温度显示界面时L2点亮,否则熄灭。当处于参数设置界面时L3点亮,否则熄灭。当处于DAC输出电压显示界面时L4点亮,否则熄灭。这里只要循环判断就行了。

(5):这次对于DS18B20的温度读取要到小数点后两位是我没想到的。(DS一波,这不是国赛才会出的吗)。下面来看需要补充的底层代码。

        首先要修改一下延时函数。
        
        void De
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值