单片机数码管显示。为什么会一个亮其他的都暗呢?+100
MOVR0,#6MOVR2,#1MOVA,#01HCLRCMOVR1,#30HXLED:MOVP2,AMOVP0,@R1INCR1RLCADJNZR0,XLEDMOVR1...
MOV R0,#6
MOV R2,#1
MOV A,#01H
CLR C
MOV R1,#30H
XLED: MOV P2,A
MOV P0,@R1
INC R1
RLC A
DJNZ R0,XLED
MOV R1,#30H
一共六个数码管,数据显示缓冲区是从30H~35H 六个数码管是并行数据输入。P2口是位选。01H 02H 40H 80H 10H 20H对应每个数码管
你看我这里
XLED: MOV P2,A
MOV P0,@R1
INC R1
RLC A
DJNZ R0,XLED
没循环一次 一个数码管被选通,相应的数据寄存器内容被送入数码管显示! 展开
MOV R2,#1
MOV A,#01H
CLR C
MOV R1,#30H
XLED: MOV P2,A
MOV P0,@R1
INC R1
RLC A
DJNZ R0,XLED
MOV R1,#30H
一共六个数码管,数据显示缓冲区是从30H~35H 六个数码管是并行数据输入。P2口是位选。01H 02H 40H 80H 10H 20H对应每个数码管
你看我这里
XLED: MOV P2,A
MOV P0,@R1
INC R1
RLC A
DJNZ R0,XLED
没循环一次 一个数码管被选通,相应的数据寄存器内容被送入数码管显示! 展开
2个回答
展开全部
你这个不完整..看不出所有的..
不过就你这个代码.肯定实现不了你 数码管动态显示的目的
如果你的p2 的 0,1,2,3,4,5,6 脚控制数码管的公共端的话.
你这个代码.只会导致最后一个脚也就是6脚的led亮.
其他的都不亮了..
因为..显示led后面肯定还有其他代码.
那些代码在运行的时候只有6脚的公共端选通了.
因为前面的5个led都是只通电一下.很短时间..根本没用..
要实现数码管都亮,,并需6个数码管选通的时间基本一样才行.
比如都导通5ms 10ms之类的..
你这样.想到相当于 01234导通x(us),5导通 x(ms)
导通时间不是一个数量级的.
但愿你能明白,代码我就不写了,祝你好运
如果你要修改的话.
最好是用一个中断..
隔5ms选通一个数码管就好了.
5ms 0
10ms 1
15ms 2
这样循环就好了.
不过就你这个代码.肯定实现不了你 数码管动态显示的目的
如果你的p2 的 0,1,2,3,4,5,6 脚控制数码管的公共端的话.
你这个代码.只会导致最后一个脚也就是6脚的led亮.
其他的都不亮了..
因为..显示led后面肯定还有其他代码.
那些代码在运行的时候只有6脚的公共端选通了.
因为前面的5个led都是只通电一下.很短时间..根本没用..
要实现数码管都亮,,并需6个数码管选通的时间基本一样才行.
比如都导通5ms 10ms之类的..
你这样.想到相当于 01234导通x(us),5导通 x(ms)
导通时间不是一个数量级的.
但愿你能明白,代码我就不写了,祝你好运
如果你要修改的话.
最好是用一个中断..
隔5ms选通一个数码管就好了.
5ms 0
10ms 1
15ms 2
这样循环就好了.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询