很多初学者都觉得自己学的东西很基础,担心今后实际工作用不到。于是,有初学者提出这样的问题:单片机真正开发产品和学习的时候有什么差别?平时学的LED、ADC这些东西,在实际项目中会用到吗?
虽然技术更新迭代很快,但有很多基本的技术,仍然在实际项目中会用到,今天就拿LED为例来说说吧。
01
身边的LED
别小看LED,它在实际生活中应用很广泛的。
首先就是以LED为光源的项目,比如呼吸灯、广告灯、LED显示屏等,这类控制LED亮灭(闪烁),或者亮度渐变。在或者现在的照明用的光源,基本都是LED灯光源,要完成一个无频闪的光源,还是没想象的那么容易的。
其次是LED背光灯,像液晶背光灯、按键背光灯等,这种也是需要控制LED变化的。我之前做过有按键的项目,按键背光灯需要渐变、配合音效控制LED不同频率闪烁,目的就是为了达到更好的体验效果。
再次是LED作为指示灯,电源指示灯、状态指示灯,这种状态下的LED灯就接近初学者的学习时的LED灯,但这种却在项目中很常见。
拿状态指示灯来说,一个项目的LED状态指示灯可以直观明了的指示设备的运行状态,比如:运行、故障、待机、死机等常见状态。通过RGB,或者红黄绿不同颜色LED组合,可以实现更多状态的指示。
下面针对LED状态灯,说几点细节的内容。
02
LED状态灯的实现
这里结合代码为大家分享一些项目中常见的LED状态灯的实现方法。
单色LED运行状态指示灯:
通过闪烁(一亮一灭)指示设备运行的状态的指示灯,一个关键作用:设备有没有死机。还可以通过闪烁的快慢指示一些特殊的状态,比如蓝牙在搜索连接状态下为快闪,在已连接状态为慢闪,等等的情况。
很多产品中都会用到,你买一个开发板,提供的综合例程也基本都有。在某一个状态实现LED闪烁:
代码语言:javascript复制int main(void){ //系统初始化
while(1) { //do something
switch(State) {
case 状态1: break; //do something
case 状态2: break; //do something
。
。
case 状态灯:ED_TOGGLE(); //LED闪烁
break;
}
}
}
03
LED渐变
LED渐变在生活中其实也有一些场景在用,呼吸灯、键盘等,其实原来也很简单,就是控制LED亮度。
控制方法有很多,电压、PWM都能达到控制LED亮度的效果。当然,现在还有控制LED渐变的专有芯片。在专门的渐变灯具,或者具有亮度调节功能的灯具中通常会有专门的亮度控制芯片。
但是,对于单片机项目来说,单片机自身就能实现,如果单独用一个芯片,就显得有点多余。目前常见的单片机都是具有PWM功能的,通过PWM控制IO高低电平(从而控制电压),这种对于单片机来说有两种方法,即定时器硬件PWM、控制GPIO口高低电平。
a. 定时器硬件PWM:一个定时器输出PWM波形的同时,还需要一个定时器定时更新PWM输出占空比(修改亮度)。
b. 控制GPIO口高低电平:这个方法就比较简单,控制IO口高低电平时间,只是这个时间需要结合整个项目业务逻辑,不能出现“卡机”情况。
04
LED的变种
前面所说的LED的,在更多的时候都是一个或几个,少量的LED的使用,这样的设计确实简单了很多。会了简单的少量的LED的运用,那在增加大量LED灯数量的情况下呢?其实原理都是一样的,相信大家都能完成。下面就说几个大量LED的使用场景。
相信很多小伙伴都知道,数码管其内部也还是LED灯,只是多个LED组合而成一位或多位的数码管。常见的数码管有七段的或者八段的,其实就是七个或者八个LED组合排列成一个数码管,根据不同的链接方式,还分为共阳和共阴两种。
说完数码管,还有一个大家常见的电子元件是LED点阵,其内部也是由多个LED组成,一块8x8的LED点阵内部由64个LED,通过八行八列的方式排列而成。
还有很多小伙伴都做过的光立方,比如8x8x8的光立方是由8行8列再加上8层组成的一个立方体,一共需要64x8=512个LED组成。
以上说的这些,其实质都是LED,当你会了点一个灯,自然会了点8个灯,慢慢自然会了以上说的这些高级别的点灯。所以不要总觉得点灯简单,也不要总觉得点灯就很low,真要把灯点好了,那也是需要技术的。
05
最后
以上的控制LED的状态,其实是一个项目中很小的一个模块,还有更复杂的LED实现和控制方法,相信小伙伴的想法会更具有创意。
当然,LED在项目中是微不足道的一个模块,但是,如果针对某个人设计一块LED的产品,那就意义非凡了,也可以把点灯技术提升到一个更高的档次。
上面这种,相信很多暖(直)男都做过,就是不知道,最终那个女孩子感动了没有?如果感动了,那这个LED项目就是一生中非常重要的项目,其他都是TMD的扯淡。什么高级,什么酷炫都是浮云,唯有那个女孩收到礼物后一笑。
·END·
单片机技术宅
以最简单的方式服务初学者