- 积分
- 302
- 下载分
- 分
- 威望
- 点
- 原创币
- 点
- 下载
- 次
- 上传
- 次
- 注册时间
- 2016-5-14
- 精华
|
马上注册,获取阅读精华内容及下载权限
您需要 登录 才可以下载或查看,没有帐号?注册
x
今天说一个很简单的问题,但是对于初学单片机的朋友来说也许还是不会,今天我们就来说说这简单的问题。
具体问题如下:怎么用一个按键控制小灯,按一次小灯不停闪烁,再按一次灭掉。问题很简单,但是我在论坛上看了好几楼的回复,都没有看到完整的答案。下面我们来分析下这个问题:1个小灯,其实就是LED灯;需要按键控制它的闪烁和灭,这样还需要一个按键;控制LED闪烁需要单片机来实现(问题提问者主要是要单片机程序)。按照上面的分析,我们画出图1的电路图(单片机部分省略)。
LED驱动和按键控制电路
如图1所示,LED和R1组成了LED驱动电路,这里我们采用单片机拉电流的驱动方式,当单片机IO口(P1.0)输出高电平时,电流从单片机IO口输出,流过LED和电阻R1,最终流到电源地,从而LED发光。当单片机IO口(P1.0)输出低电平时,P1.0电平和电源地电平一样,没有电压差,就不会有电流流过LED,所以LED不会发光。也就是说只要我们通过程序控制单片机IO口P1.0口的电平就可以实现控制LED的亮灭,那我们控制IO的电平重复出现“高---低---高---低……”就可以实现LED闪烁了。今天的问题是用按键控制实现闪烁和灭。下面我就来说按键的事。
图1中R2和S1组成按键电路,R2为上拉电阻,S1为我们真正的控制按键。R2的作用是给单片机IO口(P1.1)提供一个确定的状态,假如没有R2这个电阻,那在上电的瞬间或者是外接电磁干扰过大的时候,P1.1的状态可以会出现在高低电平上的跳变,这是我们不希望出现的。还有一点,假如没有R2这个电阻,在按键没有按下的情况下,IO(P1.1)是悬空的,这样P1.1的电平是不确定的。所以这个上拉电阻还是很有必要的。接下来说按键S1,如图1所示,当按键按下后,IO(P1.1)电平会被拉低为低电平,因为当按键按下后,P1.1直接通过按键接到电源地。当按键没有没按下时,IO(P1.1)电平被电阻R2上拉到高电平。这样一来,按键S1按下时,IO(P1.1)为低电平,按键S1没被按下时,IO(P1.1)为高电平,我们就可以读取IO(P1.1)的电平状态来识别按键是否被按下,从而控制LED的亮灭或者是闪烁。
以上是电路原理,现在我们说说程序的原理。程序部分主要的难点在如何实现按键第一次按下去控制LED闪烁,第二次按下后LED熄灭。这里我们说到了按键第一次按下,第二次按下,这是我们人可以这样说,那我们程序怎么办呢,同样是要编程去记录按键按下的次数,当程序判断当前为为第一次按下按键,就去控制LED闪烁,程序判断当前为第二次按下按键后,就去执行LED灭的程序。这样就实现了题目里要实现的要求了。
本文来自今日头条
相关阅读:
单片机实现的led流水灯电路
http://www.chinafix.com/thread-908585-1-1.html
无电解电容LED光引擎的优劣势分析
http://www.chinafix.com/thread-743484-1-1.html
led路灯电源设计电路图
http://www.chinafix.com/thread-939529-1-1.html
|
评分
-
查看全部评分
|