实验四 数码管显示控制

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

实验四数码管显示控制

一、实验目的

1、熟悉Keil uVision2软件的使用;

2、掌握LED数码管显示接口技术;

3、理解单片机定时器、中断技术。

二、实验设备及仪器

Keil μVision2软件;单片机开发板;PC机一台

三、实验原理及内容

1、开发板上使用的LED 数码管是四位八段共阴数码管(将公共端COM接地GND),其内部结构原理图,如图4.1所示。

图4.1共阴四位八段LED数码管的原理图

图4.1表明共阴四位八段数码管的“位选端”低电平有效,“段选端”高电平有效,即当数码管的位为低电平,且数码管的段为高电平时,相应的段才会被点亮。

实验开发板中LED数码管模块的电路原理图,如图4.2所示。

SP1

a~h

P0.4~P0.7

SP2

P0.0~P0.3

图4.2 LED数码管模块电路原理图

图中,当P1.0“段控制”有效时,P0.0~P0.7分别对应到数码管的a~h段。当P1.1“位控制”有效时,P0.0~P0.7分别对应到DIG1~DIG8。

训练内容一:轮流点亮数码管来检测数码管是否正常。参考程序:

ORG 00H

AJMP MAIN

MAIN:

SETB P1.2;LED流水灯模块锁存器的控制位

MOV P0,#0FFH;关闭LED灯

CLR P1.2

SETB P1.3 ;点阵模块的行控制锁存器

MOV P0,#0 ;关闭点阵行

CLR P1.3

MOV A,#11111110B;数码管“位选信号”初值,低电平有效

LOOP:SETB P1.1;数码管位控制锁存器有效

MOV P0,A

CLR P1.1

RL A ;形成新的“位选信号”,为选择下一位数码管做准备

SETB P1.0;数码管段控制锁存器有效

MOV P0,#0FFH ;数码管的所有段点亮,显示“8”

CLR P1.0

CALL DELAY

SJMP LOOP

DELAY:MOV R5,#0;延时子程序

D1: MOV R6,#0

D2:NOP

DJNZ R6,D2

DJNZ R5,D1

RET

END

训练内容二:静态显示,0~9计数。参考程序:ORG 00H

AJMP MAIN

MAIN:SETB P1.2

MOV P0,#0FFH;关闭LED灯

CLR P1.2

SETB P1.3

MOV P0,#0 ;关闭点阵行

CLR P1.3

MOV A,#11111110B

SETB P1.1

MOV P0,A ;数码管"位选"

CLR P1.1

MOV DPTR,#TABLE;初始化表首地址

LOOP:MOV R0,#0;显示数字从0开始

MOV R1,#10;显示数字个数

NEXT:MOV A,R0

MOVC A,@A+DPTR;查表,获取显示字型码

SETB P1.0;数码管段控制锁存器有效

MOV P0,A ;显示

CLR P1.0

INC R0 ;下一个数字

ACALL DELAY

DJNZ R1,NEXT

SJMP LOOP

DELAY:MOV R5,#0

D1: MOV R6,#0

D2: NOP

NOP

DJNZ R6,D2

DJNZ R5,D1

RET

TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;共阴字码表0~9 END

训练内容三:动态显示,00~99计数。

动态显示:也称扫描显示,是一种按位轮流点亮各位数码管的显示方式,即在某个时刻,只让其中某一个数码管“位选端”有效,并送出相应的字型显示码,此时,其他的数码管因“位选端”无效而处于熄灭状态。下一时刻,按顺序选通另一个数码管,并送出相应的字型显示码,依此规律循环下去,即可使各位数码管分别间断地显示出相应的字符。由于人眼的“视觉驻留效应”,只要能保证每个数码管显示间断的时间间隔小于眼睛的驻留时间,就可以给人一种连续显示的视觉效果。

在显示位数较多时,动态显示方式可节省I/O接口资源,硬件电路与静态显示方式简单,但其显示亮度低于静态显示方式;由于CPU要不断地依次扫描显示程序,将占用CPU更多的时间,若显示位数较少,采用静态显示方式更加简便。参考程序:

ORG 00H

AJMP MAIN

MAIN:SETB P1.2;LED流水灯模块锁存器的控制位

MOV P0,#0FFH;关闭LED灯

CLR P1.2

SETB P1.3 ;点阵模块的行控制锁存器

MOV P0,#0 ;关闭点阵行

CLR P1.3

MOV DPTR,#TABLE;初始化表首地址

START:MOV R0,#0 ;显示数据的初值,从数字0开始显示

NEXT:MOV A,R0

MOV B,#10

DIV AB ;分解将要显示的数据,分为十位、个位

MOV R2,A ;十位送R2

MOV R3,B ;个位送R3

MOV R1,#100 ;每个数字显示的次数,100次,即更长延时

LOOP_VIEW:MOV A,R2

MOVC A,@A+DPTR;获取十位的显示码

SETB P1.0

MOV P0,A;显示十位

CLR P1.0

SETB P1.1

MOV P0,#11111110B;位选,选中显示十位的数码管

CLR P1.1

ACALL DELAY

MOV A,R3

MOVC A,@A+DPTR;获取个位的显示码

SETB P1.0

MOV P0,A;显示个位

CLR P1.0

相关文档
最新文档