数码管显示原理及实例

数码管显示原理及实例
数码管显示原理及实例

数码管显示电路原理

(1)元件需求以及选型

8个八段数码管,8个PNP三极管,8个电阻,数码管内部由8个发光二极管组成,排

成一个8字,可以组成0到9数字以及A-F字符的表示形式,分共阴和共阳两种,共

阴表示8个二极管公共极接的是二极管的负极,共阳表示公共极接的是发光二极管的

正极。我们选的是共阳的数码管,三极管(8550)用来做片选,增加驱动,电阻的作

用在于限流,由于基极电流很大,所以需要一个电阻来限流,防止烧坏单片机IO口。

阻值选择用1K。建议使用1K。

(2)程序原理

数码管要亮,必须满足里面的二极管导通,有两个条件,片选打开,数据口要置低(视硬件而定)。首先要得到0到9十个数据的断码。即按硬件的排布,画出对应的0到9形状,标出对应的二极管控制IO口,得到数值,可以参照我们提供的数据。

片选:片选就是开关,控制数码管亮或不亮的,每个数码管都有自己的片选。

数据口:

数据口就直接接到了IO口上面,低电平有效,灌电流。数码管的显示分为两种:静态显示和动态显示。

静态显示:

只能显示一个数码管或者几个数码管而且只能同时显示同一个数字,静态显示不需要扫描的,就是说打开片选后不需要关闭,只需要跟换数据口出来的数据就可以改变显

示的内容。一般静态显示用的比较少,只用在数码管只有一个的情况下。

动态显示:

动态显示用的很普遍,动态显示可以任意数码管随意显示想要显示的内容。动态显示需要不断的对数码管进行扫描。原理是开一个片选送一个字节显示,延时一些时间

(注:延时时间很重要,没有的话就会显示一片红,超过的话数码管就会闪烁,一般

一个数码管延时显示1MS左右就可以了)。然后关闭第一个片选,开启第二个片选,

送另外的一个数据,延时,然后关闭低二个片选,送数值,延时……循环,那么就可

以看到几个数码管显示出不同的数值了。

每个显示数字共用数据线,每个分别有一个使能管脚,显示数据采用隐消的编程方法,即每一位显示一段时间再轮换。

实验内容:

在四位数码管上显示8051

接线说明:

P0口接八段显示数据低电平有效,P2口低四位接片选低电平有效。

程序清单:

******************************************************************

ORG 0000H

AJMP MAIN

ORG 0030H

MAIN:

MOV P2,#0FFH

MOV P0,#0FFH

TT:

MOV P0,#080H

MOV P2,#0F7H;;;11101111B

LCALL DELAY_1S;;延时显示8

MOV P0,#0C0H;;;;;;;;;;;

MOV P2,#0FBH;;1101,1111B显示0

LCALL DELAY_1S

MOV P0,#092H;;;

MOV P2,#0FDH;;1011,1111B显示5

LCALL DELAY_1S

MOV P0,#0f9H;;;

MOV P2,#0FEH;;0111,1111B显示1

LCALL DELAY_1S

SJMP TT

DELAY_1S:mov r1,#1

delay_1s_lp2:mov r2,#2

delay_1s_lp1:mov r3,#200

djnz r3,$

djnz r2,delay_1s_lp1

djnz r1,delay_1s_lpl2

ret

end

数码管显示3210

ORG 000h

LJMP START

ORG 0100H

START: MOV SP,#30H

MOV A,#03H

MOV DPTR,#7100H

MOVX @DPTR,A

MOV 79H,#00H

MOV 7AH,#01H

MOV 7BH,#02H

MOV 7CH,#03H

MAIN: LCALL DISP

LCALL DELAY

LJMP MAIN

;********** 数码管显示函数********************************** DISP: MOV R1,#79H ;缓冲区首地址

MOV R2,#10H ;用于位选

MOV A,R2

DISP1: MOV DPTR,#7101H ;位选

MOVX @DPTR,A

MOV A,@R1

;MOV A,#0FFH

MOV DPTR,#DBSEG

MOVC A,@A+DPTR ;取段码

MOV DPTR,#7102H

MOVX @DPTR,A ;输出显示

LCALL DELAY ;延时

INC R1

MOV A,R2

JB ACC.7,EXT ;当4个数码管都点亮一遍时,结束

RL A

MOV R2,A

JMP DISP1

EXT: RET

;*************** 延时子程序******************************* DELAY: MOV R6,#10H

DELA1: MOV R5,#20H

DJNZ R5,$

DJNZ R6,DELA1

RET

;************** 段码缓冲区********************************** DBSEG: DB 0fcH,60H,0daH,0f2H,66H,0b6H,0beH,0e0H,0feH,0f6H

相关文档
最新文档