1 / 20

数码管显示系统设计

任务 3. 数码管显示系统设计. 任务内容. 1 、数码管使用概述 2 、共阳极多位数码管控制系统设计 3 、能自动统计按键次数的显示系统设计. 2 、共阳极多位数码管控制系统设计. 任务:用 ATmega16 点亮 4 个共阳极的数码 管,并同时显示 0~9 十个数字。 目标: 进一步熟悉 ATmega16 的开发环境; 掌握数码管的编码方法; 掌握数码管的动态驱动方法; 掌握动态扫描的原理。. 2.1 、动态扫描原理.

zofia
Download Presentation

数码管显示系统设计

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 任务3 数码管显示系统设计

  2. 任务内容 1、数码管使用概述 2、共阳极多位数码管控制系统设计 3、能自动统计按键次数的显示系统设计

  3. 2、共阳极多位数码管控制系统设计 任务:用ATmega16点亮4个共阳极的数码 管,并同时显示0~9十个数字。 目标: 进一步熟悉ATmega16的开发环境; 掌握数码管的编码方法; 掌握数码管的动态驱动方法; 掌握动态扫描的原理。

  4. 2.1、动态扫描原理 数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划“a、b、c、d、e、f,、g、dp”的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。

  5. 2.2、动态扫描原理图

  6. 动态扫描原理图说明: 1)、a,b,c,d,e,f,g,dp是数码管的公共数据线; 2)、1VCC,2VCC,3VCC,4VCC为数码管内部8个LED的阳极公共端,在动态驱动中,这些管脚也作为每个数码管的选通线,专业术语也叫位选通线。 3)、通过分时选通每一位数码管,实现动态扫描,利用人眼的视觉暂留特性,实现数码管稳定的显示。

  7. 2.3、硬件电路设计

  8. 电路说明 • PORTA为数据接口; • PORTB的PB0~PB3为位选控制线; • R1~R4为限流电阻; • 图中数码管为共阳极数码管; • 其中的一段电路示意图如下: • 如果要点亮LED,ATmega16的PORTA和PORTB应该输出怎样的电平呢?

  9. 2.4、软件设计 2.4.1 静态显示 先用静态显示,验证电路是否能正常工作。 主要程序如下: DDRA = 0xFF; PORTA = 0xf9; DDRB = 0xFF; PORTB = 0x01 ;

  10. 先用静态显示,改变行选通线,观察显示结果。先用静态显示,改变行选通线,观察显示结果。 主要程序如下: DDRA = 0xFF; PORTA = 0xf9; DDRB = 0xFF; PORTB = 0x02 ;

  11. 先用静态显示,改变行选通线,观察显示结果。先用静态显示,改变行选通线,观察显示结果。 主要程序如下: DDRA = 0xFF; PORTA = 0xf9; DDRB = 0xFF; PORTB = 0x04 ;

  12. 先用静态显示,改变行选通线,观察显示结果。先用静态显示,改变行选通线,观察显示结果。 主要程序如下: DDRA = 0xFF; PORTA = 0xf9; DDRB = 0xFF; PORTB = 0x08 ;

  13. 通过改变行选通线的方法,我们看到,随着行线的改变,显示内容从左到右移动;通过改变行选通线的方法,我们看到,随着行线的改变,显示内容从左到右移动; • 每次只能点亮显示一个数码管; • 可以想象,如果用程序控制以很快的速度完成由左到右四个数码管的扫描显示,我们就可以看到4个数码管被同时点亮; • 动态扫描原理。

  14. 2.4.2 动态显示 通过静态显示的验证,电路可以正常工作,下面就是如何实现4个数码管的稳定动态显示了。 实现方法: 1)显示间隔延时 方法: 显示1 延时 显示2 延时 显示3 延时 显示4 延时 显示1 如此循环。 实现: 编写实现上述循环的程序,即可实现4个数码管的动态显示。 主要参数:延时时间。整个扫描周期达到50HZ即可实现无闪烁的稳定显示。

  15. 延时时间计算方法:以50HZ扫描周期为例 T= 1/50 =20毫秒 间隔时间t=20/4=5毫秒 主要功能函数:5毫秒的延时函数 显示函数; 程序的设计基于内部晶振:1Mhz

  16. 2)、主要子程序 延时程序: void Delay_xms(unsignedint xms){unsignedint x,y;for(x=0;x<xms;x++)for(y=0;y<1000;y++) ;} 参数:xms 以毫秒为单位的延时入口参数。

  17. 显示程序: void Display(unsignedchar dis_dat,unsignedchar dis_bit){ PORTA = dis_dat; PORTB = 1<<dis_bit;} 参数:dis_dat 与dis_bit对应的位的显示数据 dis_bit显示数码管位选参数(0~3)对应千、百、 十、个共4位。

  18. 开始 3)、主程序设计 void main(void){ unsignedchar i=0,disp; DDRA = 0xFF; PORTA = 0x00; DDRB = 0xFF; PORTB = 0x00; while(1) { disp=~digital_code[i]; Display(disp,i); Delay_xms(1); i++;if(i==4) i=0; }} 端口初始化 显示扫描 延时 i=4 ? i=0

  19. 4) 运行结果

  20. 2.5总结 • 数码管动态驱动原理; • 系统设计方法 静态验证电路,动态编写应用程序; • 动态扫描方法:时间延时方法 • 其他方法??(定时扫描)

More Related