;输入电压经89k电阻和10k精密电位器分压
;测试电压为0~51v,可用表校对
DO BIT P1.4
DI BIT P1.5
CLK BIT P1.3
CS BIT P1.6
MOV DPTR,#TABLE
MOV R4,#30
MAIN:DJNZ R4,LOOD
MOV R4,#30
CALL CADB ;调用转换程序
MOV 36H,A
CALL L1
CALL L3
CALL DISP
LOOD:CALL SCAN ;调用显示扫描
JMP MAIN
CADB:CLR CS
MOV A,#03h
MOV R7,#01h ;写3位指令
LOOPB1:CLR CLK
RRC A
MOV DI,C
NOP
SETB CLK
DJNZ R7,LOOPB1
CLR CLK
NOP
SETB CLK
MOV R7,#08H ;读8位数据
LOOPB2:CLR CLK
MOV C,DO
RLC A
SETB CLK
DJNZ R7,LOOPB2
SETB CS
RET
L1: CLR C ;十进制转换
MOV 30H,#00
MOV 31H,#00
MOV R2,#08H
NEXT:RLC A
MOV R3,A
MOV A,30H
ADDC A,30H
DA A
MOV 30H,A
MOV A,31H
ADDC A,31H
MOV 31H,A
MOV A,R3
DJNZ R2,NEXT
L2: MOV A,30H
ADD A,30H
DA A
MOV 30H,A
MOV A,31H
ADDC A,31H
DA A
MOV 31H,A
RET
L3: MOV A,31H
MOV B,#10H
DIV AB
MOV 21H,A
MOV 22H,B
MOV A,30H
MOV B,#10H
DIV AB
MOV 23H,A
MOV 24H,B
RET
SCAN: MOV p2,#11110111b ;扫描子程序
MOV a,22H
MOV C A,@A+DPTR
MOV p0,a
call delay1
MOV p2,#11111011b
MOV a,22H
MOV c a,@a+dptr
ORL A,#80H
MOV p0,a
call delay1
MOV P2,#11111101B
MOV A,23H
MOV C A,@A+DPTR
MOV P0,A
CALL DELAY1
MOV P2,#11111110B
MOV A,24H
MOV C A, @A+DPTR
MOV P0,A
CALL DELAY1
RET
DISP:
RET
DELAY1: MOV R6,#5 ;扫描延时
D3: MOV R7,#248
DJNZ R7,$
DJNZ R6,D3
RET
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;共阳字码表
END
数字电压表程序