单片机 汇编 LED数码管动态显示

[复制链接]
查看11 | 回复3 | 2011-5-2 14:07:48 | 显示全部楼层 |阅读模式
OUTBIT equ 08002h; 位控制口
OUTSEG equ 08004h; 段控制口
IN
equ 08001h; 键盘读入口
LEDBuf equ 60h
; 显示缓冲
Num
equ 70h
; 显示的数据
DelayT equ 75h
;
ljmpStart
LEDMAP:
; 八段管显示码
db
3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h
db
7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h
Delay:
; 延时子程序

mov r7, #0
DelayLoop:

djnzr7, DelayLoop

djnzr6, DelayLoop

ret
DisplayLED:

mov r0, #LEDBuf

mov r1, #6
; 共 6个八段管

mov r2, #00100000b; 从左边开始显示
Loop:

mov dptr, #OUTBIT

mov a, #0

movx@dptr, a
; 关所有八段管

mov a, @r0

mov dptr, #OUTSEG

movx@dptr,a

mov dptr, #OUTBIT

mov a, r2

movx@dptr, a
; 显示一位八段管

mov r6, #01

callDelay

mov a, r2
; 显示下一位

rr
a

mov r2, a

inc r0

djnzr1, Loop

mov dptr, #OUTBIT

mov a, #0

movx@dptr, a
; 关所有八段管

ret
Start:

mov sp, #40h

mov Num, #0
MLoop:

inc Num

mov a, Num

mov b, a

mov r0, #LEDBuf
FillBuf:

mov a, b

anl a, #0fh

mov dptr, #LEDMap

movca, @a+dptr
; 数字转换成显示码

mov @r0,a
; 显示在码填入显示缓冲

inc r0

cjner0, #LEDBuf+6, FillBuf

mov DelayT,#30
DispAgain:

callDisplayLED
; 显示

djnzDelayT,DispAgain

ljmpMLoop
end
初学者老师给我的实验版LED数码管的源程序 看不太懂
谁帮我详细解释一下 能不能帮我分析一下电路是怎么接的
发邮箱也可以 [email protected]
51单片机

回复

使用道具 举报

千问 | 2011-5-2 14:07:48 | 显示全部楼层
dbuf
equ30h
;置存储区首址temp
equ40h
;置缓冲区首址
org 00h
mov 30h,#2
;存入数据
mov 31h,#0
mov 32h,#1
mov 33h,#0
mov 34h,#7
mov 35h,#1
mov r0,#dbuf
mov r1,#temp
mov r2,#6
;六位显示器
mov dpt
回复

使用道具 举报

千问 | 2011-5-2 14:07:48 | 显示全部楼层
所谓的动态显示就是:led灯按设定的循序不停的一个一个(一个数用一块八段管)数的输出显示,由于led灯的闪烁速度很快,而人的眼睛最多只能识别0.2秒间隙以上的变化。那么在人看来,不停闪烁的led管就像
回复

使用道具 举报

千问 | 2011-5-2 14:07:48 | 显示全部楼层
已发送 请注意查收
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行