汇编指令控制单片机数码管

一.静态显示数码管

代码:

注意:使用的单片机具有段选(P2.6)和位选(P2.7)
应用代码时请结合实际使用单片机自行修改或接线!!!

ORG 0000H
AJMP MAIN
ORG 0100H

DULA BIT P2.6
WELA BIT P2.7	

MAIN:
	SETB WELA   	;打开位选
	MOV P0,#0FEH    ;选择数码管第一位
	CLR WELA		;关闭位选

	SETB DULA		;打开段选
	MOV P0,#3FH		;数码管显示0
	CLR DULA		;关闭段选
END

二.动态显示数码管

使用延时动态显示(非常简单的重复)

代码:

******************************************************************************
* 文件名:延时动态显示数码管01234567
* 描  述:
* 作  者:思索与猫
* 日  期:  19/6/26
* 备  注: 
*         
******************************************************************************
ORG 0000H
AJMP MAIN
ORG 0100H

DULA BIT P2.6
WELA BIT P2.7	

MAIN:
	SETB WELA			;显示0
	MOV P0,#0FEH
	CLR WELA
	SETB DULA
	MOV P0,#03FH
	CLR DULA
	ACALL DELAY2MS		;延时2ms

	SETB WELA			;显示1
	MOV P0,#0FDH
	CLR WELA
	SETB DULA
	MOV P0,#006H
	CLR DULA
	ACALL DELAY2MS		;延时2ms
	
	SETB WELA			;显示2
	MOV P0,#0FBH
	CLR WELA
	SETB DULA
	MOV P0,#05BH
	CLR DULA
	ACALL DELAY2MS		;延时2ms
	
	SETB WELA			;显示3
	MOV P0,#0F7H
	CLR WELA
	SETB DULA
	MOV P0,#04FH
	CLR DULA
	ACALL DELAY2MS		;延时2ms
	
	SETB WELA			;显示4
	MOV P0,#0EFH
	CLR WELA
	SETB DULA
	MOV P0,#066H
	CLR DULA
	ACALL DELAY2MS		;延时2ms

	SETB WELA			;显示5
	MOV P0,#0DFH
	CLR WELA
	SETB DULA
	MOV P0,#06DH
	CLR DULA
	ACALL DELAY2MS		;延时2ms
	
	SETB WELA			;显示6
	MOV P0,#0BFH
	CLR WELA
	SETB DULA
	MOV P0,#07DH
	CLR DULA
	ACALL DELAY2MS		;延时2ms
	
	SETB WELA			;显示7
	MOV P0,#07FH
	CLR WELA
	SETB DULA
	MOV P0,#007H
	CLR DULA
	ACALL DELAY2MS		;延时2ms
	
DELAY2MS:			;@11.0592MHz
	NOP
	PUSH 30H
	PUSH 31H
	MOV 30H,#4
	MOV 31H,#141
NEXT:
	DJNZ 31H,NEXT
	DJNZ 30H,NEXT
	POP 31H
	POP 30H
	RET

END

定时器动态显示

代码:

******************************************************************************
* 文件名:定时器动态显示数码管01234567
* 描  述:
* 作  者:思索与猫
* 日  期:  19/6/26
* 备  注: 
*         
******************************************************************************
ORG 0000H
AJMP MAIN
ORG 000BH		;定时器0中断地址
AJMP TIMER0
ORG 0100H

DULA BIT P2.6
WELA BIT P2.7	

DISPLAY:DB  03FH,006H,05BH,04FH,066H,06DH,07DH,007H,07FH,06FH	;段码0~9,可根据要求修改
DISPCOM:DB  0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH				;位码
	
MAIN:
	ACALL TIMER0INIT
	MOV R7,#0
		
LOOP:
	AJMP LOOP

	
TIMER0INIT:			;2ms@11.0592MHz
	MOV TMOD,#001H		 
	MOV TL0,#0CDH		 
	MOV TH0,#0F8H		 
	CLR TF0			 
	SETB TR0	 
	SETB ET0
	SETB EA	
RET

TIMER0:
	MOV TL0,#0CDH		 
	MOV TH0,#0F8H	
	
	SETB WELA				;位选
	MOV DPTR,#DISPCOM		;利用查表设置位
	MOV A,R7
	MOVC A,@A+DPTR
	MOV P0,A
	CLR WELA
	
	SETB DULA				;段选
	MOV DPTR,#DISPLAY		;利用查表设置段
	MOV A,R7	
	MOVC A,@A+DPTR
	MOV P0,A
	CLR DULA
	
	INC R7
	CJNE R7,#8,RE			;R7自加到8归零
	MOV R7,#0
	
RE:RETI

END

数码管自加

代码:

******************************************************************************
* 文件名:第一个数码管从0加到9
* 描  述:
* 作  者:思索与猫
* 日  期:  19/6/26
* 备  注: 
*         
******************************************************************************
ORG 0000H
AJMP MAIN
ORG 000BH		
AJMP TIMER0
ORG 0100H

DULA BIT P2.6
WELA BIT P2.7	

DISPLAY:DB  03FH,006H,05BH,04FH,066H,06DH,07DH,007H,07FH,06FH	
DISPCOM:DB  0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH				
	
MAIN:
	ACALL TIMER0INIT
	MOV R7,#0
	MOV R6,#250		;250*2=500ms
LOOP:
	AJMP LOOP

	
TIMER0INIT:			;2ms@11.0592MHz
	MOV TMOD,#001H		 
	MOV TL0,#0CDH		 
	MOV TH0,#0F8H		 
	CLR TF0			 
	SETB TR0	 
	SETB ET0
	SETB EA	
RET

TIMER0:
	MOV TL0,#0CDH		 
	MOV TH0,#0F8H	
	
	DJNZ R6,RE
	MOV R6,#250	
	
	SETB WELA				;位选选择第一个数码管
	MOV P0,#0FEH
	CLR WELA
	
	SETB DULA				;段选
	MOV DPTR,#DISPLAY		;利用查表选择段
	MOV A,R7	
	MOVC A,@A+DPTR
	MOV P0,A
	CLR DULA
	
	INC R7
	CJNE R7,#10,RE			;自加到10清0
	MOV R7,#0
	
RE:RETI

END
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值