《LED数码管的应用.ppt》由会员分享,可在线阅读,更多相关《LED数码管的应用.ppt(18页珍藏版)》请在三一办公上搜索。
1、第16讲 LED数码管与键盘的应用,16.1LED数码管结构与原理16.2 LED数码管的显示方式16.3共阴极LED和共阳极LED 的应用,16.1LED数码管结构与原理,在单片机应用系统中,使用的显示器主要有:LED(发光二极显示管)、LCD液晶显示器、CRT等LED(Light Emitting Diode,发光二极管)是单片机应用系统中常用的输出设备,LED由发光二极管构成,具有结构简单、价格便宜、配置灵活、与单片机接口方便等特点。,返回本节,16.1LED数码管结构与原理,LED数码管的结构及分类 通常使用7段LED数码管,它由7个发光二极管组成。这7个发光二极管ag呈“日”字形排列
2、,其结构及连接如右图所示。当某个发光二极管导通时,相应地点亮某一点或某一段笔画,通过发光二极管不同的亮暗组合形成不同的数字、字母及其其他符号。,返回本节,16.1LED数码管结构与原理,LED数码管中的发光二极管有两种接法:(1)所有发光二极管的阳极连接在一起,这种连接方法称为共阳极接法。(2)所有发光二极管的阴极连接在一起,这种连接方法称为共阴极接法。共阳极的LED为低电平时,对应的段码被点亮;共阴极的LED为高电平时,对应的段码被点亮。一般共阴极可以不外接电阻,但共阳极中的发光二极管一定要外接电阻。,返回本节,16.1LED数码管结构与原理,LED数码管的发光二极管亮暗组合实质上就是不同电
3、平的组合,也就是为LED数码管提供不同的代码,这些代码称为字形代码。7段发光二极管加上1个小数点dp共计8段,字形代码与这8段的关系如下:,返回本节,16.1LED数码管结构与原理,返回本节,字形代码与十六进制数的对应关系如表6-1(见书P130)所示。从表中可以看出共阴极与共阳极的字形代码互为补数。,16.2 LED数码管的显示方式,在单片机应用系统中一般需使多个LED数码管,多个LED数码管是由N根位选线和8XN根段选线连接在一起的,根据显示方式不同,位选线与段选线的连接方法也不相同。段选线控制字符选择,位选线控制显示位的亮或暗。N个LED数码管的连接方式:,返回本节,16.2 LED数码
4、管的显示方式,LED数码管显示有:静态显示和动态显示两种方式。,返回本节,16.2 LED数码管的显示方式,静态显示就是当LED数码管要显示一个字符时,相应的发光二极管恒定地导通或截止。单片机只需将所要显示的数据送出去,直到下一次显示的数据需更新时再传送一次数据,显示数据稳定,占用CPU时间少。但是采用这种显示方式时需要一个8位输出口控制,所以占用硬件多,如果单片机系统中有N个LED数码管,则需要8XN根I/O口线,所占用的I/O资源较多,需进行扩展。,返回本节,16.2 LED数码管的显示方式,动态显示就是一位一位地轮流点亮各位数码管,对每一位LED数码管来说,每隔一段时间点亮一次,即CPU
5、需要时刻对数码管进行刷新,显示数据有闪烁感,占用CPU的时间较长。并且,数码管的点亮既与点亮时的导通电流有关,也与点亮时间、间隔时间的比例有关。调整电流和时间的参数,可实现亮度较高,较稳定的显示。若数码管的位数不大于8位时,只需要两个8位I/O口。,返回本节,16.3共阴极LED和共阳极LED 的应用,在某系统中有1位共阴极LED数码管和1位共阳极LED数码管,要求数码管1循环显示09,当按下按钮1时,数码管2显示数码管1的当时值。当按下按钮2时,清除数码管2的所显示的值。,返回本节,16.3共阴极LED和共阳极LED 的应用,返回本节,16.3共阴极LED和共阳极LED 的应用,设计分析:数
6、码管显示字符,一般是通过调用Table字库来进行的。由于该系统中采用两种类型的数码管(共阴极和共阳极LED),因此需要调用两个不同的字库,如果使用汇编来编写此程序,则比较困难;使用C语言,相对来讲就容易,因此我们采用C语言来编写此程序。使用C语言编写程序时,首先编写好Tab1和Tab2这两个库,其中一个为共阳极LED的段码值,另一个为共阴极LED的段码值。程序使用两个外部中断INT0和INT1,其中INT0用来控制LED2显示字符与LED1显示字符相同,INT1使LED2不显示。使用单片机软件延时计数。,返回本节,16.3共阴极LED和共阳极LED 的应用,程序流程图如图:,返回本节,16.3
7、共阴极LED和共阳极LED 的应用,C语言源程序#include#define uint unsigned int#define uchar unsigned charuchar j;uchar t;uint n;const uchar tab1=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,;const uchar tab2=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,;void delay(uint n)uint i;for(i=0;in;i
8、+);for(i=0;in;i+);for(i=0;in;i+);for(i=0;in;i+);,返回本节,16.3共阴极LED和共阳极LED 的应用,void Int0_server_(void)interrupt 0 uchar a;a=tab2j;P1=a;void Int1_server_(void)interrupt 1 P1=0 x00;void Init_Int(void)EX0=1;IT0=1;EX1=1;IT1=0;EA=1;,返回本节,16.3共阴极LED和共阳极LED 的应用,void main(void)P1=0 x00;Init_Int();while(1)for(j=0;j10;j+)P2=tab1j;delay(65000);,返回本节,16.3共阴极LED和共阳极LED 的应用,返回本节,