理工大学七段数码管显示实验

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

单片机原理报告

姓名:于川平

班级:通信14-1

学号: 3140731132

指导老师:张彪

一、实验目的

1.学习七段数码管的工作原理;

2.学习数码管与8051单片机的接口方法;

3.掌握动态扫描显示技术。

二、实验原理

如图

4.9-1

所示,LED数码管由7个发光二极管组成,此外,还有一个圆点型发光二极管(在图中以dp表示),用于显示小数点。通过七段发光二极管亮暗的不同组合,可以显示多种数字、字母以及其它符号。LED数码管中的发光二极管共有两种连接方法:

1)共阴极接法:把发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接地,这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不点亮。实验中使用的LED显示器为共阴极接法。

2)共阳极接法:把发光二极管的阳极连在一起构成公共阳极。使用时公共阳

极接+5V。这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不点亮。

为了显示数字或符号,要为LED显示器提供代码,因为这些代码是为显示字形的,因此称之为字形代码。七段发光二极管,再加上一个小数点位,共计八段。因此提供给LED显示器的字形代码正好一个字节。若a、b、c、d、e、f、g、dp 8个显示段依次对应一个字节的低位到高位,即D0、D1、D2、D3、D4、D5、D6、D7,则用共阴极LED数码管显示十六进制数时所需的字形代码如表4.9-1所示。

2、动态显示

按图4.9-2(b)连接线路,通过交替选中LED1和LED0循环显示两位十进制数。七段数码管段码连接不变,位码驱动输入端S1、S0接8255A C口的PC1、PC0,通过C口的这两位交替输出1和0,以便交替选中LED1和LED0,从而实现两位十进制数的交替显示。请编程实现在两个LED数码管上循环显示00 99,程序流程图如图4.9-3(b)所示

1. 静态显示:数码管为共阴极,通过BCD码译码驱动器CD4511驱动,其输入端A~D输入4位BCD码,位码输入低电平选中。按图4-1连接好电路,将8255的A口PA0~PA3与七段数码管LED1的BCD码驱动输入端A1~D1相连,8255的A口PA4~PA7与七段数码管LED2的BCD码驱动输入端A2~D2相连,8255的B 口PB0~PB3与七段数码管LED3的BCD码驱动输入端A3~D3相连,8255的B口PB4~PB7与七段数码管LED4的BCD码驱动输入端A4~D4相连,8255的C口PC0~PC3分别与七段数码管LED4~LED4的位驱动输入端DG1~DG4相连。编程从键盘

上每输入4个0~9数字,在七段数码管LED4~LED4上依次显示出来。

三、编程提示

1. 由于DVCC卡使用PCI总线,所以分配的IO地址每台微机可能都不用,编程时需要了解当前的微机使用那段IO地址并进行处理。

2. 对实验内容1,七段数码管字型代码与输入的关系如下表

3. 对实验内容1,七段数码管字型代码与输入的关系如下表

四、实验设备

微型计算机、单片机仿真器、实验仪、示波器(各一台);实验连线(若干)。

五、实验内容

1.编程在8位数码管上面显示“12345678”8个数字,每经过1秒8个数字循环左移一位显示。依次为:1234578、23456781、34567812....... 汇编语代码:

ORG 0000H

START:

MOV R4,#00H

FLASH:

MOV R2,#01H

MOV R0,#30H

MOV DPTR,#TABFLA

LOPFLA: MOV A,R2

MOV P2,A

MOV A,@R0

MOVC A,@A+DPTR

MOV P1,A

MOV R3,#0

DJNZ R3,$

MOV P1,#0FFH

RL A

MOV R2,A

INC R0

CJNE R0,#38H,

GOON

MOV R0,#30H

GOON:

CJNE A,#01H,LOPFLA

INC R4

CJNE R4,#7FH,GOON1

MOV A,30H

MOV 30H,31H

MOV 31H,32H

MOV 32H,33H

MOV 33H,34H

MOV 34H,35H

MOV 35H,36H

MOV 36H,37H

MOV 37H,A

MOV R4,#00H

GOON1:

AJMP FLASH

TABFLA:

DB 0C0H,0F9H,0A4H,0B0H,99H

DB 92H,82H,0F8H,80H,90H,88H

DB 83H,0C6H,0A1H,86H,8EH

END

源程序清单如下:

data segment

ioport equ 0C400h-0280h

io8255c equ ioport+28ah

io8255k equ ioport+28bh

io8255a equ ioport+288h

led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码buffer1 db 01h,02h,03h,04h,05h,06h,07h,08h;存放要显示的十位和个位

con db ? ;位码

data ends

code segment

assume cs:code, ds:data

start: mov ax,data

mov ds,ax

mov dx,io8255k ;将8255设为A口C口出mov al,80h

out dx,al

loop2:

mov al,08h ;设置数码管位计数器初值到CON

mov byte ptr con,al

mov si,offset buffer1 置显示缓冲器指针SI

mov ah,7fh ;置位码初值disp0:

mov cx,0ffffh

mov bl,ds:[si] ;取显示缓冲区显示值存BX

mov bh,0h push si

mov dx,io8255c ;位码从C口输出

mov al,ah out dx,al

mov dx,io8255a

mov si,offset led ;置led数码表偏移地址为SI add si,bx ;求出对应的led数码

mov al,byte ptr [si]

相关文档
最新文档