实验五 七段数码管
一、实验目的
进一步熟悉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
四、 实验总结
通过本次试验,基本了解了数码管显示的程序流程,并结合定时器的设置和中断的返回,实现基本的计时显示,由此巩固了数码管显示的知识。