蓝桥杯电子类单片机组省赛——第十届

这套题目做起来相对还是比较轻松的,只是突然考了一个频率计可能让大家措手不及。
首先,附上该题的真题和完整代码,完全开源免费,请自行食用!
https://download.csdn.net/download/qq_44629819/18931429?spm=1001.2014.3001.5501
现在,我把这届赛题需要注意的几个点说一下:
1、数码管和led的关断

u8 smg_resigter=0xff;//数码管使能寄存器

我首先定义了一个数码管使能寄存器,首先这个寄存器的默认值为0xff,即上电使能数码管。

case 7:
   if(smg_resigter==0xff) {smg_resigter=0x00;}
   else {smg_resigter=0xff;}
break;

按照要求,按下按键S7即可使能和失能数码管。当变量smg_resigter的值为0x00时即定义为失能数码管。

	switch(display_mode)
	{
		case 1:P0=~(adc_array[i]&smg_resigter);P2=0XE0;P2=0X00;break;
		case 2:P0=~(freq_array[i]&smg_resigter);P2=0XE0;P2=0X00;break;
	}

我使用位运算达到控制数码管显示的目的。当变量smg_resigter的值为0xff时,数码管显示的值为前面的变量,当变量smg_resigter的值为0x00时数码管将全部熄灭。led灯的使能和失能操作与数码管相同。
本来我打算用状态机来实现这部分的功能,想来还是这种操作要更为直观和简便,所以放弃了状态机这种方式来做这个细节。

2、外设模块采样率
在这里插入图片描述
值得注意的是,在这道题里我让频率计、电压读取的周期都确保在250ms;这样一来我既保证了采样率满足题目要求,又防止电压读取以及输出函数里总中断EA的操作影响频率计的正确读数。

OK,就此结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Elec Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值