微机实验5 七段数码管显示实验

更新时间:2023-09-04 15:05:02 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

七段数码管显示实验

一、实验目的

1、掌握七段LED数码管的结构及工作原理。

2、掌握共阴极LED数码管连接方法、及其静态和动态显示方法。 3、进一步掌握并行接口芯片8255A的使用方法。

二、实验设备

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

三、实验原理

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

共阴极接法 图4.9-1

共阳极接法

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所示。

表4.9-1 共阴极LED数码管字形代码

四、实验内容

动态显示:

按图18连接好电路,将8255的A口分别与七段数码管a~g相连,S1接位码驱动,S0接8255C口的PC1,PC0。编程在两位七段数码管上动态显示00~99,若键盘有键按下则返回DOS。

五、程序代码

stack segment stack 'stack' dw 32 dup(0) stack ends data segment

io8255a equ 288h io8255c equ 28ah

led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码 buffer1 db 0,0 ;存放要显示的十位和个位 bz dw ? ;位码 data ends

code segment

assume cs:code,ds:data start: mov ax,data mov ds,ax

mov dx,28bh ;将8255设为A口输出 mov al,80h out dx,al

mov di,offset buffer1 ;设di为显示缓冲区 loop1: mov cx,0300h ;循环次数

loop2: mov bh,02 lll: mov byte ptr bz,bh push di dec di add di, bz

mov bl,[di] ;bl为要显示的数 pop di mov bh,0

mov si,offset led add si,bx mov al,byte ptr [si]

mov dx,io8255c out dx,al

mov al,byte ptr bz mov dx,io8255c out dx,al push cx

mov cx,100 delay: loop delay pop cx

mov al,00h out dx,al

mov bh,byte ptr bz shr bh,1 jnz lll

loop loop2 mov ax,word ptr [di] cmp ah,09 jnz set cmp al,09 jnz set

mov ax,0000 mov [di],al mov [di+1],ah jmp loop1 set: mov ah,01 int 16h

jne exit mov ax,word ptr [di] inc al aaa

;置led数码表偏移地址为SI ;求出对应的led数码 ;自8255A的口输出 ;使相应的数码管亮

;延时 ;循环延时 ;有键按下则转exit

mov [di],al ;al为十位 mov [di+1],ah ;ah中为个位 jmp loop1

exit: mov dx,io8255a

mov al,0 ;关掉数码管显示 out dx,al

mov ah,4ch ;返回 int 21h code ends end start

六、实验总结

通过本次试验,我基本上掌握了数码管显示的程序流程,学会编写一些程序调用相应的相应的子程序,显示所需内容,了解了动态扫描显示的程序执行过程,结合定时器的设置和中断的返回,来实现最基本的百分秒显示,从而完成时钟显示,由此,结合前面所学的知识,巩固了数码管显示的知识,增强了我的程序调试能力,为下一步的学习打下了坚实基础。

本文来源:https://www.bwwdw.com/article/vj7i.html

Top