驱动20个对数/线性点/柱状LED的微控制器
扫描二维码
随时随地手机看文章
自做模拟电路到LM3914显示驱动为用户提供可编程性。
美国国家半导体公司的老产品LM3914点/柱状显示驱动器已面市20多年了,但仍被广泛应用。LM3914可以感知模拟电压,并通过点状模式点亮10个LED中的一个,或以柱形图模式逐个点亮LED的方法,显示电压大小。
最近,有个应用需要显示模拟输入电压,要求具有线性或对数刻度格式下10个以上等级的LED显示。根据 LM3914的数据手册,可以将多个3914级联,从而获得10个以上LED的显示(参考文献1),但即使这么做,LM3914也只能线性显示输入电压。(编辑注:美国国家半导体还提供 LM3915,这是一款对数型3dB步长版,而LM3916适于音频应用,以音量单位显示输入。)
本应用的要求超出LM3914提供的灵活性,使用一个基于Atmel AVR系列ATTiny13微控制器电路,其具有1kB程序存储器、一个四通道10位ADC,以及6个通用I/O 口。调整电路固件就可以实现0~5V输入电压范围内的线性或对数型转换。
图1中电路以20个LED连续显示输入电压。当开关S1关闭时,将显示冻结在其后电流水平的读数上。微控制器6个I/O口中的5个控制着所有20个LED和开关。剩下的I/O口配置成ADC输入通道,接收模拟输入电压。微控制器采用 Charlieplexing的方法(这是一种用I/O口线驱动多达N×(N-1)个LED的方法),只用5个I/O口就可以驱动20个 LED(参考文献2 ~ 4)。
固件用C语言编写,并用AVR-GCC编译,这是Windows和Linux版本下C和汇编编译器的免费软件。它使用可自由运