驱动12个LED的3端口微控制器
图1中的电路基于以前出版的设计实例(参考文献1),仅用3条I/O线路来驱动12个LED。在本应用中,电路充当电动车引擎的转速计,并在一组排列成直线或圆弧形LED上显示引擎相对速度。三对反向并联LED(D2和D3、D4和D5、D6和D7)通过限流电阻器R5、R6、R7从IC1的端口获得驱动电流。每组三个的两组LED(D8、D9、D10以及D11、D12、D13)在IC1的端口和两个分压器之间(供应参考电压VREF1和VREF2)连接。如果改变电阻器R5、R6、R7的值,就能调节中间6个LED的亮度,而R1、R2、R4则控制其它6个LED 的亮度。一般而言,该电路能用主机微处理器的N 条I/O线路来驱动多达N(N-1)+2N个LED,或比最初的设计实例中的电路能驱动的LED多2N个。
该电路使用了Microchip公司的PIC10F200微控制器,即IC1,这是一种小尺寸廉价的6引脚器件,只提供3根I/O引脚和1根单纯输入引脚。I/O引脚GP0、GP1、GP2驱动由 12 个 LED 组成的条形图,包括多路复用模式驱动的4个黄色LED、4 个绿色LED、4个红色LED( 图2)。
微处理器的单纯输入引脚GP3用于输入来自点火线圈初级端子的脉冲。电阻器R3和二极管D1提供输入信号调节,而软件反跳例程则消除来自脉冲的振铃效应。由于R3的额定值高达390 kΩ,因此该电路能承受高压输入尖峰,并防止PIC10F200闭锁。端口GP3充当处理器的编程端口,之所以不同于处理器的其它端口,是因为它包含内部保护二极管。这只20mA二极管防止GP3受到负向瞬间电压的损害。该电路工作可靠,但可以添加外部保护二极管来加强针对瞬态引发闭锁的保护。把二极管的阳极接地,阴极连到IC1的GP3引脚。
可以配置条形图按接通的LED数量(条状)来表示引擎速度,或只照亮一两只LED(点状)来表示。图2中的颜色方案用黄色LED来表示速度太低、绿色LED表示标称速度、红色LED表示速度过快。图3为表示指示软件的流程图。处理器的内部时钟驱动Timer0每512ms溢出一次,这表示一个时隙,即一个多路传送阶段。在8个时隙当中,其中1个驱动3只上方的LED,第二个则驱动3只下方的LED。为了简化软件,最后6个时隙逐个驱动中间的LED。在主循环开始时,微处理器计算时钟脉冲数量,并等待Timer0溢出。发生溢出后,输出端口按照分配的时隙驱动LED。在经过8个时隙后,处理器把端口设定到相同状态。在200个时隙后,处理器计算进入测速仪脉冲数量,并按照进入脉冲数量(即按照输入频率)设置LED图案。
转速计可表示高达120 转/秒的转速。伴随的软件列表包含C语言文件 (led12.c.pdf) 和汇编语言文件 (led12.asm.pdf)。ZIP源文件包含完整的 MPLab 项。图4显示了波形,是由数字示波器在GP0、GP1、GP2 端口捕获的。
参考文献
1.Benabadji, Noureddine, "PIC microprocessor drives 20-LED dot- or bar-graph display," EDN, Sept 1, 2006, pg 71, www.edn.com/article/CA6363904.
- 基于PCI总线的双DSP系统及WDM驱动程序设计(01-26)
- 单片机控制步进电机驱动器工作原理(10-19)
- 四轮独立驱动电动车高速CAN网络数据分析系统设计(11-03)
- 基于FPGA的线阵CCD驱动器设计(11-26)
- AB类功率放大器驱动电路的研究与设计(11-24)
- 从LCD电极读数的单片机接口技术(01-15)