12月24日周五硬件实验2八段数码管显示学生

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

E
1 1 1 1 0 0 1 79h
F
1 1 1 0 0 0 1 71h
补.试用七段代码方式编制数码管显示程序。
算法分析: 在许多应用中都采用七段代码方式的数码管来显示数
据信息,如图所示。数码管各段由数据总线的D0~D6位控 制。若某一位为“1’’,则相应段发光,反之不然。将十 进制数对应的七段码存放在地址偏移量为TAB的数据表中, 其存放次序正好与十进制数0~9的次序对应。所以要取十 进制数对应的七段码,只需在数据段中找到存放七段码数 据的首地址偏移量,再把首地址偏移量加上要转换的十进 制数以形成新的地址偏移量即可。这显然要用XLAT指令 来实现。
段码输出 (0x004H)
位选通信号 (0x002H)
数据总线
七段数码管的字型代码表如下表:
显示字形 g f e d c b a 段码
0
0 1 1 1 1 1 1 3fh
1
0 0 0 0 1 1 0 06h
2
1 0 1 1 0 1 1 5bh
3
1 0 0 1 1 1 1 4fh
4
1 1 0 0 1 1 0 66h
db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h
data ends
code segment
assume cs:code, ds:data
Delay proc near
push ax
; 延时子程序
push cx
mov al, 0
mov cx,ax
loop $
pop cx
本实验仪中 8位段码输出地址为0X004H,位码输 出地址为 0X002H。此处X是由KEY/LED CS 决定,参 见地址译码。做键盘和LED实验时,需将KEY/LED CS 接到相应的地址译码上。以便用相应的地址来访问。 例如,将KEY/LED CS 接到CS0上,则段码地址为 08004H,位码地址为08002H。
pop ax
ret
Delay endp
DisplayLED proc near
mov bx, offset LEDBuf
mov cl, 6
; 共6个八段管
mov ah, 00100000b ; 从左边开始显示
DLoop:
同学们补充:
示1个要调用一次延时子程序。
dec cl jnz DLoop
ret DisplayLED endp
Start proc near mov ax, data mov ds, ax
MLoop: mov ah,0 mov cl,6 mov bx,offset LEDBuf mov di,offset num
FillBuf: mov si, offset LEDMap
设欲转换的十进制数存放在数据段中地址偏移为NUM 的变量中,转换结果存放在RESULT变量中。
LED显示器的扩展(结构)
LED数码管的结构:①共阳与共阴
公共阳极
接高电平
hgfedcba
高电平点亮 h g f …… a
f
a g
b
f
a g
b
ed c
ed c
h
h
h g f …… a
hgfedcba
低电平点亮
同学们补充: 1、数据转换成显示码 2、显示码存入显示缓冲
dec cl jnz FillBuf
DispAgain: call DisplayLED ; 显示 dec DelayT jnz DispAgain jmp MLoop
Start endp code ends
end start
OUTSEG equ 08004h ; 段控制口
data segment LEDBuf db 6 dup(?) ; 显示缓冲 Num db 2,3,5,8,1,6 ; 显示的数据
DelayT db 20
LEDMAP:
; 八段管显示码
db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h
高电平点亮
h g f …… a
f
a g
b
f
a g
b
ed c
ed c
h
h
h g f …… a
hgfedcba
低电平点亮
公共阴极
接地
八段LED数码管段代码编码表(连线不同可有多种表):
字形 0 1 2 3 4 5 6 7 8 9 黑 共阳 0C0 0F9 0A4 0B0 99 92 82 0F8 80 90 0FF 共阴 3F 06 5B 4F 66 6D 7D 07 7F 6F 00
5
1 1 0 1 1 0 1 6dh
6
1 1 1 1 1 0 1 7dh
7
0 0 0 0 1 1 1 07h
8
1 1 1 1 1 1 1 7fh
9
1 1 0 1 1 1 1 6fh
A
1 1 1 0 1 1 1 77h
b
1 1 1 1 1 0 0 7ch
C
0 1 1 1 0 0 1 39h
d
1 0 1 1 1 1 0 5eh
硬件实验十六 八段数码管显示
一、实验要求 利用实验仪提供的显示电路,动态显示一行数
据. 二、实验目的
了解数码管动态显示的原理。 了解用总线方式控制数码管显示
四、实验说明
本实验仪提供了6 位8段码LED显示电路,学生只要按 地址输出相应数据,就可以实现对显示器的控制。显示 共有6位,用动态方式显示。8位段码、6位位码是由两 片74LS374输出。位码经MC1413或ULN2019倒相驱动 后,选择相应显示位。
程序如下:
DATA SEGMENT TAB DB 3FH, 06H, 5BH, 4FH, 66H
DB 6DH, 7DH, 07H, 7FH, 6FH NUM DB 5 RESULT DB ? DATA ENDS CODE SEGMENT
ASSUME CS :CODE, DS :DATA START:
MOV AX , DATA MOV DS , AX MOV BX, OFFSET TAB MOV AL, NUM XLAT TAB ;AL [BX+AL] MOV RESULT, AL MOV AH, 4CH INT 21H CODE ENDS END START
实验程序如下:
OUTBIT equ 08002h ; 位控制口
公共阴极
接地
@ 单片机系统扩展LED数码管时多用共阳LED: 共阳数码管每个段笔画是用低电平(“0”)点亮的,要求驱动 功率很小;而共阴数码管段笔画是用高电平(“0”)点亮的, 要求驱动功率较大。 @ 通常每个段笔画要串一个数百欧姆的降压电阻。
LED数码管的软件译码
公共阳极
接高电平
hgfedcba
相关文档
最新文档