实验四 七段数码管显示实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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