实验四 七段数码管显示实验报告

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

实验四七段数码管显示实验

一、实验目的

掌握数码管显示数字的原理。

二、实验内容

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上依次显示出来。

图4-1

2.动态显示:数码管为共阴极,段码采用相同驱动,输入端加高电平,选中的数码管对应段点亮,位码采用同相驱动,位码输入端低电平选中,按图4-2连接好电路,图中只画了2个数码管,实际是8个数码管,将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端a~g相连(32TCI0模块上的J1连32LED8模块J2),8255的C口的PC0~PC7接七段数码管的段码驱动输入(32TCI0模块上的J3连32LED8模块J1),跳线器K1连2和3。编程在8个数码管上显示“12345678”。按任意键推出运行。

图4-2

三、编程提示

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

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

表:

四、参考流程图

1.实验内容一的参考流程图

图4-3 2.实验内容二的参考流程图

图4-4

五、参考程序

1.内容一的参考程序

源程序清单如下:

data segment

ioport equ 0c400h-0280h

io8255a equ ioport+288h

io8255b equ ioport+289h

io8255c equ ioport+28ah

io8255k equ ioport+28bh

led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh

mesg1 db 0dh,0ah,'Input a num (0--9),other key is exit:',0dh,0ah,'$'

bz db ?

cz db 04h

data ends

code segment

assume cs:code,ds:data

start: mov ax,data

mov ds,ax

mov dx,io8255k ;使8255的A口为输出方式

mov ax,80h

out dx,al

sss0: mov si,offset bz

mov cx,04h

sss1: mov dx,offset mesg1 ;显示提示信息

mov ah,09h

int 21h

mov ah,01 ;从键盘接收字符

int 21h

cmp al,'0' ;是否小于0

jl exit ;若是则退出

cmp al,'9' ;是否大于9

jg exit ;若是则退出

sub al,30h ;将所得字符的ASCII码减30H

mov [si],al ;存入显示缓冲区

inc si ;显示缓冲区指针加1

dec cx ;判断输入满4个数字吗?

jnz sss1 ;不满继续

mov si,offset bz ;从显示缓冲区取第一个数字的BCD 码

mov al,[si]

and al,0fh ;屏蔽高四位暂存AL

inc si ;显示缓冲区指针加1

mov ah,[si] ;取第二个数字的BCD码到AH

sal ah,4h ;右移4次到高四位

add al,ah ;两个BCD码合并成一个字节

mov bl,al ;暂存入BL

inc si

mov al,[si] ;取第三个数字的BCD码

and al,0fh

inc si

mov ah,[si] ;取第四个数字的BCD码到AH

sal ah,4h

add ah,al

mov al,ah

mov dx,io8255a ;从8255的A口输出(后两个数字)out dx,al

mov al,bl

mov dx,io8255b ;从8255的B口输出(前两个数字)out dx,al

mov al,0f0h

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

out dx,al

mov dl,0ffh

mov ah,06

int 21h

je sss0 ;有键按下则退出

exit: mov ah,4ch ;返回

int 21h

code ends

end start

2.内容二的参考程序

源程序清单如下:

data segment

ioport equ 0C400h-0280h

io8255c equ ioport+28ah

相关文档
最新文档