单片机教案(数码管显示器接口技术)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数码管显示器接口技术

一、 LED数码管的结构

由8段发光二极管组成。其中7段组成“8”字,1段组成小数点。通过不同的组合,可用来显示数字0~9、字母A~

F及符号“.”。

LED数码管有共阴极和共阳极两种结构。

二、 LED数码管的工作原理

发光二极管导通→亮,不导通→暗。这样就构成了字符的显示。其十六进制的编码表如下:

三、数码管接口电路

1、静态显示方式(硬件接口方法)

这就是我们在数字电路中所学的内容,在数据总线上的信号须经I/O接口电路并锁存,然后通过译码器,就可以驱动LED 显示器中的段发光。

这种方式使用的硬件较多(显示器的段数和位数越多,电路越复杂),缺乏灵活性,且只能显示十六进制数。

2、动态显式方式(软件接口方法)

这种接口方法是以软件查表来代替硬件译码,既省去了译码器,又能显示更多段的字符和更多位的LED显示器。所以广泛应用于单片机系统的显示。

⑴连接方式

①将单片机的输出送入可编程的8155芯片,然后利用8155的I/O

口提供两路输出信号(一路是段控信号,另一路是位控信号)。

②将各位数码管的a~h端分别并在一起(若有6个数码管,则将

它们6个a对a,6个b对b......6个h对h相并接),再和上面的一路I/O口输出的8位段控信号相连,以获得显示代码,对应要发光的段。

③将各位数码管的公共端(共阴极或共阳极)分别与上面的另一路

I/O口相连(每一位公共端对应I/O口中的一位),以获得位控信号使该位LED发亮。

④为了存放显示的数字或字符,通常在8155的内部RAM中设置显

示缓冲区,其存储单元个数与LED显示器的位数相同。

⑵显示原理

①每一时刻只有一位LED被点亮,在显示代码的作用下显示信息。

②各位LED轮流被点亮,在各自的显示代码的作用下分别显示各自的信息。

③只要利用发光二极管的余光和人眼的驻留效应

(即适当调整每位LED的

点亮时间和时间间隔),就可以获得稳定的显示输出。

[应用实例]

使用并行接口芯片8155扩展6位动态数码管显示电路,轮流点亮各LED数码管,每位点亮2ms,重复此过程。

[硬件设计]

1、将8155的PA口和PB口选择在基本输出方式,PA口输出位选码,

PB口输出段显示代码。

2、设定PA口(位控口)地址为7F01H,PB口(段控口)地址为7F02H,

命令寄存器地址为7F00H。

3、设显示缓冲区地址(8155片内RAM)为:60H~65H(显示器有6位),

每一个单元对应一位LED显示器。因为动态扫描是从右向左进行

的,所以缓冲区的首地址为60H。用R0存放当前位控码的地址,用R2存放位控码的初值及递增值。若要显示“ . d 6 a 5 0 ”

则按下面的顺序依次进行。

[软件设计]

1、编程说明:

①在动态扫描过程中,调用延时子程序DELAY,其延迟时间为2ms,

这是为了让扫描到的那位显示器稳定的亮(驻留)一段时间以保证显示亮度。

②显示数据是以查表方法得到其字形代码,故在程序中设置了字形

代码表DSEG,因此在编程中采用了查表指令MOVC A,@A+PC,由PC提供16位基址,由A提供变址rel。

③在实用单片机系统中,LED显示程序都是作为一个子程序供监控

程序调用,因此在扫描完各位LED后,就返回监控程序,然后再由监控程序调用显示子程序。通过反复调用实现动态扫描。

2、显示程序流程图

START:MOV A,#03H ;将命令字0000 0011B送入A(即将送入8155的命令寄存器)

MOV DPTR,#7F00H ;对8155的命令寄存器初始化

MOVX @DPTR,A ;设置PA口、PB口为输出方式

MOV R0,#60H ;设置显示缓冲区的首地址

MOV R2,#01H ;设置位选码的初值

MOV A,R2 ;将位控码的初值0000 0001B 送入单片机

LOOP: MOV DPTR,#7F01H ;设置PA口(位控码通道)的地址MOVX @DPTR,A ;将位控码输出到PA口

INC DPTR ;设置PB口(段控码通道)的地址

MOV A,@R0 ;从段控码取出显示数据送入单片机

ADD A,rel ;形成查表的偏移地址(在本程序中rel=0DH,即14个单元)

MOVC A,@A+PC ;查表取字形代码(在程序下面14个单元DSEG处查表,取字形码用于段控)

DIR:MOVX @DPTR, A ;取出段控码[1个字节]

ACALL DELAY ;转延时子程序[2个字节]

INC R0 ;转向下一个缓冲单元

[1个字节]

MOV A,R2 ;将递增值送入 A [1个字节]

JB ACC.5,LOOP1 ;判断第6位是否显示完毕,是

则返回到LOOP1处[3个字节]

RL A ;不是,则向(高位)左移

[1个字节]

MOV R2,A ;将位控码送R2保存

[1个字节]

AJMP LOOP ;程序回到LOOP处重复上过程

[2个字节]

LOOP1:RET ;返回监控主程序

[1个字节]

DSEG: DB 3FH,06H,5BH,4FH,66H,6DH

DB 7DH,07H,7FH,6FH,77H,7CH

DB 39H,5EH,79H,71H

DELAY: MOV R7,#04H ;以下是延时2ms的子程序

DELAY1: MOV R6,#0FFH ;

DELAY2: DJNZ R6,DELAY2 ;

DELAY2: DJNZ R7,DELAY1 ;

RET ;返回上面的调子程序

相关文档
最新文档