实验内容
- 利用一个程序使得51单片机控制LED灯,实现LED灯亮度的周期性变化,达到类似呼吸灯的效果
- 进一步地,在程序中提供一个方便地改变呼吸灯闪烁频率的方法,让用户可以只修改一个参数就能够改变LED灯亮暗变化的频率
实验解决的关键问题
1. 如何控制LED灯的亮暗程度
让LED在很短的一个周期内亮起、熄灭;亮起、熄灭;因为人眼的视觉暂留现象,以及LED灯本身的延迟,人会观察到LED总体亮度的改变,而不会观察的亮灭的过程;通过调节亮、灭的时间比例来控制LED亮度。
2. 如何控制LED亮暗变化的周期
- 递增程序:让一个数从0增加到255,到达255后自动跳转到递减程序
- 递减程序:让一个数从255增加到0,到达0后自动跳转到递增程序
- 利用这个0-255之间周期变化的数,去控制LED的亮暗程度
3. 如何让用户方便的调节呼吸灯变化频率
为了实现这个功能,我们把控制频率的寄存器 放在了程序的开头,供用户调用
其中, 为每次递减的量,必须是255的因数; 实现分频
这样设计程序,可以在呼吸灯频率的控制上有较大的自由度
完整实验代码
实验效果
可以改进的问题
从视频中可以看到,从完全熄灭到导通的过程有点不平滑,有一个闪烁的过程;初步讨论得出,这可能是人眼对这个区间的亮度变化比较敏感导致的。可能的改进方案是,不要让LED的亮度完全降到0,从而让呼吸灯的过渡过程更加自然。