51单片机,这数码管是怎么控制的?看不懂图
5个回答
展开全部
;这是程序可以在你的硬件上实现:最右边的数码管显示0-9,然后第2位数码管显示0-;9。。。。。。一直这样循环。动态显示在这个程序上简单修改就行
_573LE BIT P1.4;
_138A BIT P1.5;
_138B BIT P1.6;
_138C BIT P1.7;
N DATA 10 ;显示10个数
STACK_BOTTOM DATA 30h
ORG 00H
JMP MAIN
/******************************************************************** 显示表 */
SEG7:
DB 03FH ; 0
DB 006H ; 1
DB 05BH ; 2
DB 04FH ; 3
DB 066H ; 4
DB 06DH ; 5
DB 07DH ; 6
DB 007H ; 7
DB 07FH ; 8
DB 06FH ; 9
DB 077H ; A
DB 07CH ; B
DB 039H ; C
DB 05EH ; D
DB 079H ; E
DB 071H ; F
/****************************************************************** 延时函数 */
DELAY:
MOV R7,#100
D1:
MOV R6,#50
D2:
MOV R5,#100
DJNZ R5,$
DJNZ R6,d2
DJNZ R7,d1
RET
/****************************************************************** MAIN函数 */
MAIN:
MOV SP,#STACK_BOTTOM
MOV DPTR,#SEG7
LOOP:
MOV R3,#0E0H
LOOP1:
MOV R2,#00H
LOOP2:
MOV P0,#00H
SETB _573LE
CLR _573LE
MOV A,P1
ANL A,#01FH
ORL A,R3
MOV P1,A
MOV A,R2
MOVC A,@A+DPTR
MOV P0,A
SETB _573LE
CLR _573LE
CALL DELAY
INC R2
CJNE R2,#N,LOOP2
MOV A,R3
CLR C
SUBB A,#20H
MOV R3,A
JNC LOOP1
JMP LOOP
END
_573LE BIT P1.4;
_138A BIT P1.5;
_138B BIT P1.6;
_138C BIT P1.7;
N DATA 10 ;显示10个数
STACK_BOTTOM DATA 30h
ORG 00H
JMP MAIN
/******************************************************************** 显示表 */
SEG7:
DB 03FH ; 0
DB 006H ; 1
DB 05BH ; 2
DB 04FH ; 3
DB 066H ; 4
DB 06DH ; 5
DB 07DH ; 6
DB 007H ; 7
DB 07FH ; 8
DB 06FH ; 9
DB 077H ; A
DB 07CH ; B
DB 039H ; C
DB 05EH ; D
DB 079H ; E
DB 071H ; F
/****************************************************************** 延时函数 */
DELAY:
MOV R7,#100
D1:
MOV R6,#50
D2:
MOV R5,#100
DJNZ R5,$
DJNZ R6,d2
DJNZ R7,d1
RET
/****************************************************************** MAIN函数 */
MAIN:
MOV SP,#STACK_BOTTOM
MOV DPTR,#SEG7
LOOP:
MOV R3,#0E0H
LOOP1:
MOV R2,#00H
LOOP2:
MOV P0,#00H
SETB _573LE
CLR _573LE
MOV A,P1
ANL A,#01FH
ORL A,R3
MOV P1,A
MOV A,R2
MOVC A,@A+DPTR
MOV P0,A
SETB _573LE
CLR _573LE
CALL DELAY
INC R2
CJNE R2,#N,LOOP2
MOV A,R3
CLR C
SUBB A,#20H
MOV R3,A
JNC LOOP1
JMP LOOP
END
展开全部
共阴管,扫描方式工作。
位选由P1.5~P1.7通过三八译码器译码输出,每次选通一位。
段选由P0口通过锁存器573锁存输出,锁存使能由P1.4脚控制。
位选由P1.5~P1.7通过三八译码器译码输出,每次选通一位。
段选由P0口通过锁存器573锁存输出,锁存使能由P1.4脚控制。
更多追问追答
追问
能否给个例子,例如左边第一个数码管显1?谢谢
追答
首先P0口通过外部存储器访问命令输出所需显示的段码。
而后P1.4输出一个高脉冲,使得Q0~Q7锁存P0口输出的段码状态。之后P0口就可以干别的用途了。
接下来P1.5~P1.7输出位码,对于左边第一个数码管而言,P1[7:5]输出000,此时该共阴管阴极接地,即按照锁存的段码设置输出显示。
动态扫描方式就是不断重复以上这个步骤,利用人眼的视觉暂留效应,确保在较短的时间内逐个完成所有刷新工作。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先,这是动态法控制的数码管,没个时刻只有一个亮,大家轮流亮,人看不出来,感觉是全亮。
其次,138是三八译码器,选择亮哪个,373输出不同的段码,决定亮什么内容。这属于基础内容,靠问两句是很难完全懂的,需要扎实的学习。
其次,138是三八译码器,选择亮哪个,373输出不同的段码,决定亮什么内容。这属于基础内容,靠问两句是很难完全懂的,需要扎实的学习。
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单片机引脚直接送数据。然后下面的译码器,把 单片机送来的三位数据,变成8位地址,来控制哪一个数字亮。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
动态扫描式,网上有很多程序的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询