51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机技术文章 > 51单片机 > 详细内容
可驱动20个LED对数/点状/条状的微控制器
发布时间:2009/9/5  阅读次数:1073  字体大小: 【】 【】【

作者:Dhananjay V Gadre和Anurag Chugh, Netaji Subhas Institute of Technology, NewRelhi, India 来源:电子设计技术

美国国家半导体公司的LM3914点状/条状显示驱动器已经面市20多年了,但仍然在设计者中广泛流行。LM3914可以检测模拟电压,并使10个LED显示,方法是以点状模式点亮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 V ~ 5V输入电压范围内的线性或对数型缩放。


  图1中的电路以20个连续显示输入电压。当开关S1关闭时,即将显示冻结在当时的电流水平读数。微控制器6个I/O脚中的5个控制着所有20个LE

D和开关。剩下的I/O脚配置为一个 ADC 输入通道,负责接收模拟输入电压。微控制器采用 Charlieplexing,这是一种用I/O线驱动多达N×(N-1)个LED的方法,这样只用5个I/O脚就可以驱动20个 LED(参考文献2 ~ 4)。

  固件以C语言编写,并用AVR-GCC编译,这是一个以Windows和Linux版提供的免费C编译器和汇编器。它使用运行在中断驱动自由模式的 Tiny13内部 10 位 ADC,将模拟输入电压转换为一个数字值。每次转换完成时,ADC 产生一个由子程序读出的中断,中断将 ADC 转换输出保存在一个共享变量中。

为了产生无闪烁的显示,一个内部定时器从一个9.6MHz系统时钟产生一个1875Hz中断,以大于90Hz的速率驱动多路输出的 LED。将ADC计数除以一个常数即得到输入电压的一个线性显示。用一个查找表缩放ADC计数就产生一个对数显示。图2表示确定该查找表值的对数转换曲线。用于线性和对数缩放的 ATTiny13控制程序版本都可以从本设计实例处下载。可以对这些源码作修改,而只显示0V ~ 5V输入电压中的某个子区间。例如,可以设定1V ~ 3V的线性显示范围,或2V ~ 3V输入电压的对数缩放。

参考文献
1. LM3914 data sheet.
2. Lancaster, Don, "Tech Musings," August 2001.
3. "Charlieplexing: Reduced Pin-Count LED Multiplexing," Maxim Application Note 1880, Feb 10, 2003.
4. Benabadji, Noureddine, "PIC microprocessor drives 20-LED dot- or bar-graph display," EDN, Sept 1, 2006, pg 71.

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号