第2讲LED显示.ppt

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2讲LED显示

AVR单片机C程序设计 主讲人:施保华 LED 数码显示器的应用 LED 数码显示器是单片机嵌入式系统中经常使用的显示器件。一个“8”字型的显示模块用“a、b、c、d、e、f、g、h” 8 个发光二极管组合而成,如图6-12a 所示。每个发光二极管称为一字段。LED 数码显示器有共阳极和共阴极两种结构形式,电路设计时不要混淆。 例6.4 单个LED 数码管字符显示控制 我们以共阴极的数码管为例,先介绍如何控制一个8 段数码管显示“0”-“F”16 个十六进制的数字。 1) 硬件电路设计: 很明显,用AVR 的一个I/O 口控制共阴极数码管的8 个段位,分别置“1”或“0”,让某些段的LED 发光,其它的熄灭,就可以显示不同的字符和图符号,硬件电路如图6-13。 在单片机嵌入式系统软件设计中,经常要考虑二进制、十六进制、十进制、BCD 码、压缩BCD 码、八段码、ASCII 码之间的相互转换问题。人们计数习惯采用十进制,而单片机的计算、存储则为二进制形式最方便。此外传送字符用ASCII码,LED 数码显示要转化成相应的7 段码等等。因此对与各种不同数制的使用和相互转换在软件设计中尤其重要,设计使用得当,可以简化程序设计和优化程序代码。 #include mega16.h #include delay.h flash char led_7[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; bit point_on = 0; void main(void) { char i = 0; PORTA=0xFF; DDRA=0xFF; while (1) { for (i=0;i=15;i++) { PORTA = led_7[i]; if (point_on) PORTA |= 0x80; delay_ms(1000); } point_on = ~point_on; }; } 多位LED 数码管的显示 多位LED 数码管显示电路按驱动方式可分为静态显示和动态显示两种方法。 一个数码管要使用AVR 的8 个I/O 口线输出段码(共公端接GND)。当使用多个数码管时,显然采用这样的控制方式有些问题,因为AVR 是不能提供太多的I/O 控制引脚的。 图6-14 是一个采用串行传送数据的8 位数码管静态显示接口。设计中将8 片八位串行输入/并行输出移位寄存器74HC164 串接,数码管为共阳极型。MCU 将8 个要显示字符的段码字准备好,通过Data Out 引脚,在Clk Out 引脚产生的cp 移位脉冲的作用下,一位一位 地移入74HC164 的QA-QH 端(串行输入)。QA-QH 的输出(并行输出)直接作为数码管的 段位控制。由于左边74HC164 芯片的QH(最低位)和右边74HC164 芯片的数据串入端连, 经过Clk Out 时钟线64 个cp 脉冲后,要显示的8 个字符将会在8 个数码管上显示,最先发送的显示字符段码将显示在最右边。 例6.5 六位LED 数码管动态扫描控制显示设计(一) 1) 硬件设计电路: 图6-15 给出硬件接口电路图。图中仅采用了6 个共阴极的LED 数码管。所有数码管段位a 的引脚并接,由PA0 控制;段b 并接,由PA1 控制;因此类推。既仍然用ATmega16 的PA 口作为段码输出。ATmega16 的PC0-PC5 分别与LED0-LED5 的共公端COM 引脚连接,既 PC 口的低6 位作为位扫描控制口。 根据硬件电路,我们可以看出,在任何一个时刻,PC0-PC5 中只能有一个I/O 口输出低电平,即只有一位数码管亮。而且,MCU 必须循环轮流控制PC0-PC5 中的一位输出“0”,同时PA 口要输出该位相应的段码值。即使显示的内容没有变化,MCU 也要进行不停的循环扫描处理。 软件的设计应保证从在外表看数码管显示的效果要连续(即在人眼里各个数码管全部亮),亮度均匀,同时没有拖尾现象。 通常,每个数码管点亮的持续时间为1-2ms。我们将每个数码管的点亮持续时间定为2ms,那么6 个数码管扫描一遍的时间为12ms,因此MCU 还有13ms 的时间处理其它事件 为了保证各个数码管的显示的效果不产生闪烁情况,表象上全部点亮的话,则首先必须在1 秒中内循环扫描6 个数码管的次数应大于25 次,这里是利用了人眼的影像滞留效应。 本例中我们选择40 次,既每隔1000/40=25ms 将6 个数码管循环扫描一遍。第二要考虑的是,在25ms 时间间隔中,要逐一轮流点亮6 个数码管,那么每个数码管点亮的持续时间要相同,这样亮度才能均匀。第三个要考虑的要点为每个数码管点亮的持续时间

文档评论(0)

liudao + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档