一、概念和原理
主要的考法有简单点亮、闪烁、PWM控制亮度、延时关闭等等,这章的题目会全部涉及到。我们先看题目是什么,再直接去学习写法,因为原理比较简单,而且在第一章跑马灯那里就讲过原理了。
二、题目
三、手写代码
由于学长的代码依旧是看不太懂,只能自己研究出来一些简单通过一堆逻辑判断来实现实验现象的代码。
我们此次代码会很明显就分为实现不同功能的四部分,也就是四个步骤。
步骤开始前做好框架的撰写准备,其中要注意的是All_close函数要放在while前面,表示Y_x选择控制LED。
第一步
第二步
第三步
第四步
说明:这里定时器1的复用思维也是跟江科大那节电机调速那节课学的,还是值得大家一开的。
结尾
实验现象:1.首先按键按下松手之后不会影响到其他三个正在执行的LED功能,只有不松手时才会卡住;
2.按键S4按下,L1点亮,再次按下,L1熄灭,按键按下的速度快一点也有较好的稳定性,即稳定得进行点亮和熄灭操作;
3.按键S5按下,L2开始以0.2秒为间隔进行闪烁,五秒后熄灭,人拿测得实际时间如下,减掉人反应时间大概是5.3秒左右,算上误差,时间就差不多是五秒了(和L4比较的话是时间长几百毫秒);
4.按键6和按键7按下,可以增加(减少)L3的亮度,一共有四个等级亮度,加到最高等级再按下加键会回到最低等级,加到最低等级再按下减键会回到最高等级,闪烁和延时熄灭执行的过程中依旧可以调节亮度;
5.按键8按下,L4点亮,大致5秒后熄灭,下面是人计得的实际时间,减去反应时间大致是4.9秒左右,比较准确了。
瑕疵:说是需要分配进程,但笔者并没有做到,想法大致是去除逻辑判断里面的按住就死循环的代码,让一个变量在定时器++,20ms就进来按键扫描函数一次,这样就不会完全占用主循环的进程而不能执行别的代码了,等笔者彻底弄懂了再补充吧!
至此,我们对于LED灯与定时器和按键扫描的结合使用有所回顾了,算上这个,我们所有的课程除了状态机思想,就告一段落了,后面的内容就主要围绕历届真题来展开,笔者会试着做做真题,不行就会把对他人的课程学习过程分享出来,那现在同学们就去默写一遍实现实验现象的代码吧!