微机原理 七段数码管

实验五 七段数码管

一、实验目的

进一步熟悉8255,掌握数码管显示数字的原理

二、实验内容

连线如图5-2,从键盘读入两位数字,在两个数码管上显示出来

图5-1 图5-2

三、 实验程序 data segment

io8255a equ 28ah io8255b equ 28bh io8255c equ 288h

mesg db 0dh,0ah,\cont db 0dh,0ah,\led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码 buffer1 db ?

buffer2 db ? ;存放要显示的个位和十位 bz dw ? ;位码 data ends

code segment

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

mov dx,io8255b ;将8255设为A口输出 mov al,80h out dx,al num:

;*********************************************** mov dx,io8255a

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

mov ah,09h

mov dx,offset mesg int 21h

mov ah,01 int 21h sub al,'0'

mov buffer2,al mov ah,01 int 21h sub al,'0'

mov buffer1,al

mov di,offset buffer1 loop2: mov bh,02

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

mov bl,[di] pop di mov al,0

mov dx,io8255a out dx,al 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,io8255a out dx,al mov cx,3000

delay: loop delay mov bh,byte ptr bz shr bh,1 jnz lll

mov dx,0ffh mov ah,06 int 21h

;设di为显示缓冲区 ;bl为要显示的数

;求出对应的led数码 ;自8255A的口输出 ;使相应的数码管亮 ;延时 je loop2 ;有键按下则退出 jmp num

;mov dx,io8255a

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

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

end start

四、 实验总结

通过本次试验,基本了解了数码管显示的程序流程,并结合定时器的设置和中断的返回,实现基本的计时显示,由此巩固了数码管显示的知识。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4