双色LED指示10种状态的颜色与闪烁模式
大多数采用微控制器的设备都会有几种工作状态。通常是用按键开关来控制这些状态。为尽量降低成本,很多设计都使用一只开关;通过按压次数来决定微控制器的状态。本文的电路用一只发光LED来指示所选择的状态。
市场上有大量可选用的双色LED,有各种形状和颜色,厂家如Kingbright、Optosupply等。这些LED提供了新的机会,仅用一只LED就能指示10种状态。按压一个连接到微控制器外接中断脚的按键开关,就能设定状态(图1)。每次按下时,中断例程都会将设备设定到下一个状态(图2)。
State 0是待机模式,LED熄灭。此时设备在等待按下开关。LED颜色指示出以下的三个状态。例如,Kingbright公司的WP5A9EGW12.3SF LED可发出红、绿、橙颜色。加上闪烁就可指示其余的状态。红色与绿色LED可以分别独立地控制,从而获得六种指示组合(表1)。
微控制器的内部振荡器作为时钟源,简化了电路,因为振荡器不需要外接元件,其5%的公差足够用于此应用。固件为外部中断输入端设定了内置的上拉电阻。
时钟速度与预定标器值以及时钟计数器模寄存器共同决定了LED闪烁的速率。内部振荡器产生一个12.8 MHz的时钟,获得3.2 MHz的总线频率,每个循环等于0.3125 μs。将预定标器值选为64,则时间计数器模寄存器就可以计算出一个循环为50倍定时器周期(以毫秒为单位)。例如,要获得1s的闪烁速率,应将时间计数器模设为50000,或十六进制的$C350。
使用列表而不采用程序轮询的方法,可以大大减少固件的大小(参考文献1)。此处可以下载到固件的汇编码。这种方法适用于任何微控制器。甚至可以采用不同的闪烁速率,增加所指示状态的数量。
参考文献
1.Raynus, Abel, "Tables ease microcontroller programming," EDN, April 22, 2010, pg 76.
- 智能铅酸蓄电池充电器的设计(01-02)
- 用微控制器或 DSP 电路控制开机/关机功能(06-22)
- 微控制器的市场前景及发展趋势(06-21)
- 基于AT89S52汉字多方式显示屏的设计(01-06)
- 灵活高效的数字解决方案满足新兴电源管理需求(01-10)
- 基于ARM微处理器的十回路智能配电监控单元的设计(11-17)