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

OUTBIT equ 08002h ; 位控制口
OUTSEG equ 08004h ; 段控制口
IN equ 08001h ; 键盘读入口

LEDBuf equ 60h ; 显示缓冲
Num equ 70h ; 显示的数据
DelayT equ 75h ;
ljmp Start

LEDMAP: ; 八段管显示码
db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h
db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h

Delay: ; 延时子程序
mov r7, #0
DelayLoop:
djnz r7, DelayLoop
djnz r6, 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
call Delay

mov a, r2 ; 显示下一位
rr a
mov r2, a

inc r0

djnz r1, 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
movc a, @a+dptr ; 数字转换成显示码
mov @r0,a ; 显示在码填入显示缓冲
inc r0
cjne r0, #LEDBuf+6, FillBuf

mov DelayT,#30
DispAgain:
call DisplayLED ; 显示
djnz DelayT,DispAgain

ljmp MLoop

end
初学者 老师给我的实验版LED数码管的源程序 看不太懂
谁帮我详细解释一下 能不能帮我分析一下电路是怎么接的

发邮箱也可以 828801399@163.com
51单片机

第1个回答  2011-05-02
dbuf equ 30h ;置存储区首址
temp equ 40h ;置缓冲区首址
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 dptr,#segtab ;段码表首地址
dp00: mov a,@r0 ;取要显示的数据
movc a,@a+dptr ;查表取段码
mov @r1,a ;段码暂存
inc r1
inc r0
djnz r2,dp00
disp0: mov r0,#temp ;显示子程序
mov r1,#6 ;扫描6次
mov r2,#01h ;从第一位开始
dp01: mov a,@r0
mov p0,a ;段码输出
mov a,r2 ;取位码
mov p1,a ;位码输出
acall delay ;调用延时
mov a,r2
rl a
mov r2,a
inc r0
djnz r1,dp01
sjmp disp0
segtab: db 3fh,06h,5bh,4fh,66h
db 6dh,7dh,07h,7fh,6fh
delay: mov r4,#03h ;延时子程序
aa1: mov r5,0ffh
aa: djnz r5,aa
djnz r4,aa1
ret
end
第2个回答  2011-05-02

所谓的动态显示就是:led灯按设定的循序不停的一个一个(一个数用一块八段管)数的输出显示,由于led灯的闪烁速度很快,而人的眼睛最多只能识别0.2秒间隙以上的变化。那么在人看来,不停闪烁的led管就像是静态显示一样。

图中,段控制和位控制分时复用P0口,选用两个锁存器573来分开段控制和位控制数据。

段控制:数码管显示的字形

位控制:哪个数码管显示(或者说控制字形送往哪个数码管)

注意:段控制是与所有数码管连接在一起的。(如果将位控制全开的话,数码管就变成了静态显示了,并且显示的数字也是一样的)。位控制是独立一个一个连接的。

第3个回答  2011-05-04
已发送 请注意查收本回答被提问者采纳

单片机 汇编 LED数码管动态显示
所谓的动态显示就是:led灯按设定的循序不停的一个一个(一个数用一块八段管)数的输出显示,由于led灯的闪烁速度很快,而人的眼睛最多只能识别0.2秒间隙以上的变化。那么在人看来,不停闪烁的led管就像是静态显示一样。图中,段控制和位控制分时复用P0口,选用两个锁存器573来分开段控制和位控制...

LED数码管动态显示2017的51单片机汇编语言
共阳极接法。abcdefg 为 P0 口,位选端为 P2 口。八个数码管同时显示 01234567。电路与程序,如下所示:

6位数码管动态显示程序(数码管动态显示程序)
构建一个使用LED数码管显示动态数字的程序,需要遵循以下步骤。首先,选择硬件,确保LED数码管与单片机的P0口相连接,以便控制各个段码。接下来,P2口需要连接一个译码器,负责产生位码,采用扫描方式逐个显示数字。此方法通过在一定时间间隔内切换各个位码,实现动态显示效果。每秒一次的扫描频率是基本要求,...

什么是数码管动态显示
数码管动态显示是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I\/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟...

单片机如何控制LED数码管循环显示数字0至9
设计用PLC控制数码管循环显示数字0-9,控制要求如下(1)按下启动按钮后,数码管从0开始显示,1s后显示1,再过1s后显示2,…,显示9,1s后再重新屏示0.如此循环。(2)当按下停止孩钮后,数码管烟灭。7数码营实际上是由7只发光二极管组成,要显示0-9数字,首先确定数字与7只发光管(即PC的输出控制点)的...

在单片机系统中led数码管显示电路通常由什么和什么显示方式
在单片机系统中led数码管显示电路通常由静态显示方式和动态显示方式。根据查询相关公开信息显示,静态显示方式是指当显示器显示某一字符时,发光二极管的位选始终被选中,动态显示方式是指一位一位地轮流点亮每位显示器(称为扫描),即每个数码管的位选被轮流选中。

在单片机应用系统中。LED数码管显示电路通常有什么显示方式
动态扫描。LED灯是继电器工作状态指示灯,点亮代表继电器启动中,熄灭代表继电器关闭,LED1是伴同蜂鸣器报警的指示灯,只要数码管不处于设置时间状态,都能够用E归零键进行清零操作,数码管就会显示00:00 (此时不是对主芯片进行复位,只是对状态进行清零) 。

单片机静态显示和动态显示的原理是什么?各有什么特点?
数码管静态显示就是每个数码管的驱动电平不会改变,知道这个数码管的数值发生变化。动态显示就是利用人眼反应迟钝,数码管轮流显示一段时间,比如都是20ms,效果看起来是几个数码管同时亮(实际是只有一个在点亮,其他的是余晖)。静态显示亮度比较亮,功耗大动态显示亮度稍微差点,但是显示位数多注意动态...

运用51单片机实现4位8段LED数码管的动态数字显示,写出C语言程序_百度...
include<reg51.h> define uchar unsigned char;uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; \/\/0到f uchar number,nn=0;uchar dat[]={2,0,1,2,1,1,4,5,8,2};void t0isr() interrupt 1 { TH0=(...

51单片机led4位数码管动态显示“0123”的程序,急急,,,能帮忙的就快点...
左边的七根线,控制段选,即:控制一个数码管的七段。明白了吧?在while循环中:1 选第一个数码管,关闭其他数码管,再选让第一个数码管的那些段亮;2 选第二个数码管,关闭其他数码管,再选让第二个数码管的哪些段亮;3 ,4步同理,这样让while不停循环,就可以实现动态显示了。

相似回答