教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教育文库 >

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

来源:网络收集 时间:2026-08-10
导读: 实验四 七段数码管显示实验 一、 实验目的 掌握数码管显示数字的原理。 二、 实验内容 1. 静态显示:数码管为共阴极,通过BCD码译码驱动器CD4511驱动,其输入端A~D输入4位BCD码,位码输入低电平选中。按图4-1连接好电路,将8255的A口PA0~PA3与七段数码管LE

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

一、 实验目的

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

二、 实验内容

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

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]

out dx,al ;段码从A口输出 disp1: loop disp1 ;延时

mov cx,0ffffh disp2: loop disp2

ror ah,01h ;位码右移1位 pop si inc si ;显示缓冲区指针加1

mov al,byte ptr con dec al

mov byte ptr con,al jnz disp0 ;数码管位计数器减1为0吗?,不为0继续

mov dx,io8255a ;为0,关数码管显示 mov al,0 out dx,al mov dl,0ffh mov ah,06 int 21h

je loop2 ;有键按下则退出 mov ah,4ch ;返回 int 21h code ends

end start

实验总结:

通过这次试验,我了解到自定义数据类型可以根据自己的需要方便设定,有很大的灵活性。而在程序的编写过程中,我们应该首先分析各个端口的优先级顺序,然后进行判断,分析设计。

…… 此处隐藏:1459字,全部文档内容请下载后查看。喜欢就下载吧 ……
实验四 七段数码管显示实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/108771.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)