|
采用adc0804来进行模数转换.
由于算法原因,显示到160v时,数码管动态显示会很不稳定,所以将其量程限制到150v,误差精度为(±1v),误差原因:adc0804 参考电压悬空,导致其测量精度为19.53mv,为了计算方便,选取19.5mv,导致误差~
汇编程序如下:
- AD_RD BIT P3.3
- AD_WR BIT P3.4
- AD_INTR BIT P3.5
- ORG 00H
- SETUP:
- MOV R6,#0
- MOV 30H,#0
- MOV 31H,#0
- MOV 32H,#0
- MAIN:
- MOV P1,#0FFH
- CLR AD_WR
- SETB AD_WR
- D5:
- JB AD_INTR,D5
- CLR AD_RD
- MOV A,P1
- CALL START
- CALL DIS
- SETB AD_RD
- JMP MAIN
- START:
- MOV A,P1
- MOV B,#195
- MUL AB
- MOV R0,A
- MOV R1,B
- MOV R2,#0
- AA:
- CLR C
- MOV A,R0
- SUBB A,#200
- MOV R0,A
- MOV A,R1
- SUBB A,#0
- MOV R1,A
- JC BB
- INC R2
- JMP AA
- BB:
- MOV A,R2
- MOV B,#100
- DIV AB
- MOV 30H,A
-
- MOV A,B
- MOV B,#10
- DIV AB
- MOV 31H,A
- MOV 32H,B
-
- RET
- DIS:
- MOV DPTR,#TAB
- MOV A,30H
- CJNE A,#0,D9
- INC R6
- JMP D10
- D9: MOVC A,@A+DPTR
- MOV P0,A
- CLR P2.0
- CALL DEL
- D10: SETB P2.0
- MOV A,31H
- CJNE R6,#1,D8
- CJNE A,#0,D8
- JMP D7
- D8: MOVC A,@A+DPTR
- MOV P0,A
- CLR P2.1
- CALL DEL
- D7: SETB P2.1
- MOV R6,#0
-
- MOV A,32H
- MOVC A,@A+DPTR
- MOV P0,A
- CLR P2.2
- CALL DEL
- SETB P2.2
- MOV A,#0C1H
- MOV P0,A
- CLR P2.3
- CALL DEL
- SETB P2.3
- RET
- DEL:
- MOV R7,#20
- DJNZ R7,$
- RET
-
- TAB:
- DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
- END
复制代码
|
|