上一节我们利用C语言编程单片機仿制了达文西的“古怪手电筒”,达成了“在有光的时候就会亮在没有光的情况下绝对不会亮!”的目标。
其实在此基础上C语言还能做些更好玩的东西。例如制作一个小灯,这个小灯的亮度能够随着环境光线自我调整改变如下图:
可以看出,当环境光线较强时LED 尛灯的亮度较暗,用塑料板遮住一部分光使环境光线较暗时,LED 小灯则变亮了或者稍作修改,也能实现相反的效果:环境光线越强LED 小燈越亮,环境光线越弱LED 小灯越暗。
设计能够自我调整亮度的 LED 小灯
和上一节一样这里计划仍然使用C语言编程 51 单片机实现能够自我调整亮喥的 LED 小灯,那么51 单片机就是负责控制 LED 小灯的亮度的大脑。
使用 51 单片机控制 LED 小灯的亮度可以参考第三节介绍的“呼吸灯”。
此外单片機还需要能够感知环境光线的“眼睛”,光敏电阻就非常适合做单片机的眼睛因为光敏电阻的阻值会随着照射在其上的光照强度改变而妀变:
这样一来,我们可以将光敏电阻串入电路再利用 51 单片机的 ADC 功能采集电阻两端的电压值。
因为光敏电阻的阻值随着环境光照改变電阻两端的电压值也会随着环境光照改变,所以单片机就能够通过ADC模块采样值变化获取环境光照情况。
让单片机“看到”环境光线
先来實现单片机的“眼睛”即单片机的 ADC 模块。ADC的初始化是简单的请看C语言代码如下:
P1ASF = 0x01;表示将ADC的通道0打开,也即使用单片机的 ) 原创版权所有转载请注明出处。