多位LED数字显示器接口
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多位LED数字显示器接口
D7~D0
段 码 锁 存 器
段 码 驱 动 器 反 相 驱 动 器
┆ … …
┆
a b ┆ ┆ dp
PORTA
D7~D0
位 码 锁 存 器
S1 S0
PORTC
1. 静态显示:按图22连接好电路,将8255的A口 PA0~PA6分别与七段数码管的段码驱动输入端a~g 相连,位码驱动输入端S1接+5V(选中),S0、dp接 地(关闭)。
编程从键盘输入一位十进制数字(0~ 9),在七段数码管上显示出来。
实验电路:数码管接口(方式0)
2
;************************************** ;* 键盘输入数据(0-9)控制LED数码管显示 * ;************************************** data segment ioport equ 0d480h-0280h io8255a equ ioport+288h io8255ctr 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,'$' data ends
code segment assume cs:code,ds:data start: mov ax,data mov ds,ax ;使8255的A口为输出方式
sss: mov dx,offset mesg1 mov ah,09h int 21h
;显示提示信息
;从键盘接收字符 cmp al,'0' ;是否小于0 ;若小于0,则退出
;是否大于9 ;若大于9, 则退出 sub al,30h ;将所得字符的ASCII码减30H mov bx,offset led ;bx为数码表的起始地址 ;求出相应的段码 ;从8255的A口输出 jmp sss exit: mov ah,4ch int 21h code ends end start ;转SSS ;返回
cmp al,'9'
编程2:在两个数码管上显示“56”,位码驱动输入端S1,S0 接8255 C口的PC1,PC0。
编程:在两个数码管上显示“56”,位码驱动输入端S1,S0接 8255 C口的PC1,PC0。
data segment ioport equ 0d480h-0280h io8255a equ ioport+288h io8255c equ ioport+28ah io8255ctrl equ ioport+28bh data ends code segment assume cs:code start: ;设置8255方式控制字
lp: mov dx, io8255c ;位码亮个位 out dx, al mov dx, io8255a ;”6”的段码 out dx, al call delay mov al, 00h out dx, al mov dx, io8255c out dx, al
;关数码管
;位码亮十位
mov dx, io8255a
;”5”的段码 out dx, al jmp lp
mov ah, 4ch int 21h delay proc near ;延时子程序 mov bx,2000 lll: mov cx,0 ll: loop ll dec bx jne lll ret delay endp code ends end start
3.动态显示:使用图23的电路,编程在两个数码管上循环显 示“00-99”。
data segment ioport equ 0d100h-0280h io8255a equ ioport+288h io8255ctrl equ ioport+28bh io8255c equ ioport+28ah led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh data ends code segment assume cs:code,ds:data start: mov ax, data;加载数据段 mov ds, ax ;设置8255方式控制字
lp3:mov di, 00h ;十位数字
lp2:mov si, 00h ;个位数字
lp1:mov cx, 08ffh ;延时循环初值lp:mov dx, io8255a ;关数码管
mov al, 00h
out dx, al
mov dx, io8255c ;送个位码
mov al, 01h
out dx, al
mov dx, io8255a ;送个位段码
mov bx, offset led
mov ax, si
xlat
out dx, al
mov al, 00h ;关数码管out dx, al
;送十位码
;送十位段码
dec cx;延时循环cmp cx, 00h
jnz lp
mov ah, 1 ;判按键?
int16h
jne lp4
inc si;个位增1
cmp si, 0ah
jnz lp1
inc di;十位增1
cmp di, 0ah
jnz lp2
jz lp3
lp4:mov ah, 4ch;程序结束int21h
code ends
end start
检查实验:
(1) 使用上述的电路,编程在两个数码管上,以16进制数形式,倒计数显示“15~00”。
(2) 读取四个开关组合值,用二进制表示,范围从0000到1111。
然后使一个七段发光二级管显示器上不同段发光,来组合显示出相应的十六进制数。