【蓝桥杯单片机组省赛】第九届彩灯控制器

比赛有点多,人是只有一个,感觉有点不太能忙过来了。

但是,事在人为!!!

相信自己可以的!!!


代码及题目下载可到 Github


题目之要点提炼

【蓝桥杯单片机组省赛】第九届彩灯控制器_第1张图片

注意圈黄的字体,那个要求讲真,考场都没细读到,然后当时做的时候是按一个流转间隔做的。

当然,这次写的是四个流转间隔然后有一个总的流转间隔可被那四个更新!

哦对了,流转间隔的存储,因为E2PROM存储单位是u8类型,然后流转间隔因为最大可到1200ms,所以搞成了u16,这个时候就存在一个存储的问题了,两种解决思路。
一种,把u16拆分高低字节,分别进行存储!
当然这种拆分的方式较繁琐,有没有更简洁的方式呢?当然有了,仔细读一读题目我们会发现流转间隔都是100的倍数,于是乎就想到了用100把它进行缩放,然后再存储!

【蓝桥杯单片机组省赛】第九届彩灯控制器_第2张图片

然后另一个较不好想到的地方就是PWM控制亮度!

自己也写了一篇关于PWM更深入的文章,可以看这里。

具体实现呢,就是得有一种暂存的思想了,把当前指示灯对应的P0口状态给存下来,然后再定时器里面进行开和关就行实现亮度控制了。

自己刚开始的思路被限制在了流动上面,其实不要那么想,容易陷入思维的误区。

只需要及时的存储端口状态,然后进行更新存储即可!


再写题目过程中发现有些知识点都遗忘了,再来及时总结下:

1、数码管的温度刷新或者是时间的刷新显示,可以放到while(1)里面,但是时间得有200ms以上,不然刷太快会闪屏!

2、LED点亮(低电平点亮)的时候,写P0=0x7F是对应 L8点亮,注意顺序

3、同样数码管的顺序从左往右一次时Ledbuff[7,6,5,////

4、注意了,直接从STC里面复制的定时器定时是没有ET×=1这一句的,需要加上!!

你可能感兴趣的:(#,蓝桥杯之单片机组)