51单片机数码管显示程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

;该程序库为4位显示,可以设置3个小数点的位置,数据在R2中,LED_DATA EQU P0 ;数码管数据口定义

SHOW1 EQU 30H ;个位

SHOW2 EQU 31H ;十位

SHOW3 EQU 32H ;百位

SHOW4 EQU 33H ;千位

SHOW5 EQU 34H ;万位

XSDW EQU 50H ;小数点位数

ORG 0000H

AJMP LOOP

ORG 0030H

LOOP: MOV P0,#0FFH

MOV P1,#0FFH

MOV P2,#0FFH

MOV P3,#0FFH

MOV SP,#60H

MOV XSDW,#00H

LOOP0: CALL CONVT

CALL PLAY

JB P3.7,LOOP0

CALL DELAY2MS

CALL DELAY2MS

CALL DELAY2MS

CALL DELAY2MS

CALL DELAY2MS

CALL DELAY2MS

CALL DELAY2MS

JB P3.7,LOOP0

JNB P3.7, LOOP1

NOP

LOOP1: CALL PLAY

JNB P3.7, LOOP1

MOV A,XSDW

CJNE A,#3,LOOP2

MOV XSDW,#00H

AJMP LOOP0

LOOP2: INC XSDW

AJMP LOOP0

;---------------------------------------------------------

;代码变换(HEX TO BCD)

;---------------------------------------------------------

CONVT: CLR EA

MOV 41H,#00H

MOV R4,40H ;待转换低位

MOV R3,41H ;待转换高位HEX2BCD: CLR A

MOV R5,A

MOV R6,A

MOV R7,A

MOV R2,#16 ;转换16位H2B: CLR C

MOV A,R4

RLC A

MOV R4,A

MOV A,R3

RLC A

MOV R3,A

MOV A,R7

ADDC A,R7

DA A

MOV R7,A

MOV A,R6

ADDC A,R6

DA A

MOV R6,A

MOV A,R5

ADDC A,R5

DA A

MOV R5,A

DJNZ R2,H2B

MOV A,R7

MOV B,#16

DIV AB

MOV R4,A

MOV R4,A

MOV R3,B

MOV A,R5

MOV R7,A

MOV A,R6

MOV B,#16

DIV AB

MOV R6,A

MOV R5,B

MOV SHOW5,R7 ;万位

MOV SHOW4,R6

MOV SHOW2,R4

MOV SHOW1,R3 ;个位

H2B0: SETB EA

RET

;-----------------------------------------------------

;显示子程序

;---------------------------------------------

PLAY: PUSH ACC

MOV A,XSDW ;小数点的位数是3则直接跳转到显示,即千位是0也要显示

CJNE A,#3, PLAY0

AJMP PLAY5

PLAY0: NOP

MOV A,SHOW4 ;取千位

JNZ PLAY5 ;等于0吗

MOV SHOW4,#0AH ;等于0送数据0A,即不显示

MOV A,XSDW ;小数点的位数是3则直接跳转到显示,即千位是0也要显示

CJNE A,#2, PLAY1

AJMP PLAY5

PLAY1: NOP

MOV A,SHOW3 ;取百位

JNZ PLAY5

MOV SHOW3,#0AH

MOV A,XSDW ;小数点的位数是3则直接跳转到显示,即千位是0也要显示

CJNE A,#1, PLAY2

AJMP PLAY5

PLAY2: NOP

MOV A,SHOW2 ;取十位

JNZ PLAY5

MOV SHOW2,#0AH

PLAY5: MOV R1,XSDW ;小数点的位数送R2

MOV A,SHOW4 ;获得当前位地址

MOV DPTR,#TAB_NU ;获得表头

MOVC A,@A+DPTR ;查表获得显示数据

MOV LED_DATA,A ;显示数据

CJNE R1,#3, PLAY6 ;小数点的位数送R2,如果是3就点亮3位的小数点

CLR P0.7

PLAY6: NOP ;不是则不点亮

CLR P2.4

LCALL DELAY2MS ;延时2 MS

SETB P2.4

相关文档
最新文档