用双色LED指示10种状态
扫描二维码
随时随地手机看文章
大多数采用微控制器的设备都会有几种工作状态。通常是用按键开关来控制这些状态。为尽量降低成本,很多设计都使用一只开关;通过按压次数来决定微控制器的状态。本文的电路用一只发光LED来指示所选择的状态。
市场上有大量可选用的双色LED,有各种形状和颜色,厂家如Kingbright、Optosupply等。这些LED提供了新的机会,仅用一只LED就能指示10种状态。按压一个连接到微控制器外接中断脚的按键开关,就能设定状态(图1)。每次按下时,中断例程都会将设备设定到下一个状态(图2)。
State0是待机模式,LED熄灭。此时设备在等待按下开关。LED颜色指示出以下的三个状态。例如,Kingbright公司的WP5A9EGW12.3SFLED可发出红、绿、橙颜色。加上闪烁就可指示其余的状态。红色与绿色LED可以分别独立地控制,从而获得六种指示组合(表1)。
微控制器的内部振荡器作为时钟源,简化了电路,因为振荡器不需要外接元件,其5%的公差足够用于此应用。固件为外部中断输入端设定了内置的上拉电阻。
时钟速度与预定标器值以及时钟计数器模寄存器共同决定了LED闪烁的速率。内部振荡器产生一个12.8MHz的时钟,获得3.2MHz的总线频率,每个循环等于0.3125μs。将预定标器值选为64,则时间计数器模寄存器就可以计算出一个循环为50倍定时器周期(以毫秒为单位)。例如,要获得1s的闪烁速率,应将时间计数器模设为50000,或十六进制的$C350。
使用列表而不采用程序轮询的方法,可以大大减少固件的大小(参考文献1)。此处可以下载到固件的汇编码。这种方法适用于任何微控制器。甚至可以采用不同的闪烁速率,增加所指示状态的数量。