;TLC1549数字电压表程序数字电压表:量程为 5V,精度为0.1V (不带字库12864显示)
CS1 BIT P2.3
CS2 BIT P2.4
D_I BIT P3.6 ;4
R_W BIT P2.5 ;5
E BIT P2.6 ;6
DB0_DB7 EQU P0
X EQU 22H ;页地址
Y EQU 23H ;列地址
COM EQU 24H
DAT EQU 24H
COUNT EQU 25H ;代码倒计数单元
CODE0 EQU 26H ;表格起始地址,赋0值后与DPTR合成查表指针地址
MUL_ EQU 26H ;显示数字时,暂存单元(要显示的数是几就在里面存几)
CLK1 BIT P3.4
DATA1 BIT P3.5
CS BIT P3.7
ORG 0000H
JMP MAIN
ORG 0030H
MAIN: MOV SP,#60H
ACALL INT
SETB CS1
SETB CS2
ACALL CLEAR
ACALL SY
BEGIN: ACALL TLC1549
MOV R3,58H ;;********
MOV R2,59H
MOV R7,#0AH
MOV R6,#00H
ACALL MULD
MOV R7,#0CCH
ACALL D457
MOV A,R3
ACALL HBCD
MOV R3,A
CALL TUBCD
CALL DSP1
ACALL DEL
JMP BEGIN
TUBCD: MOV A,R3
ANL A,#0FH
MOV 30H,A ;低位
MOV A,R3
SWAP A
ANL A,#0FH
MOV 31H,A
RET
HBCD: MOV B,#100 ;分离出百位,存放在R3中
DIV AB
MOV R3,A
MOV A,#10 ;余数继续分离十位和个位
XCH A,B
DIV AB
SWAP A
ORL A,B ;将十位和个位拼装成BCD码
RET
HB2: CLR A ; 双字节十六进制转BCD码
MOV R3,A
MOV R4,A
MOV R5,A
MOV R2,#10H ; 转换双字节十六进制整数
HB3: MOV A,R7 ; 从高端移出待转换数的一位到CY中
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5 ;BCD码带进位自身相加,相当于乘2
ADDC A,R5;
DA A ; 十进制调整
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
MOV R3,A ; 双字节十六进制数的万位数不超过6,不用调整
DJNZ R2,HB3 ; 处理完16bit
RET
MULD: MOV A,R3 ;计算R3乘R7
MOV B,R7
MUL AB
MOV R4,B ;暂存部分积
MOV R5,A
MOV A,R3 ;计算R3乘R6
MOV B,R6
MUL AB
ADD A,R4 ;累加部分积
MOV R4,A
CLR A
ADDC A,B
MOV R3,A
MOV A,R2 ;计算R2乘R7
MOV B,R7
MUL AB
ADD A,R4 ;累加部分积
MOV R4,A
MOV A,R3
ADDC A,B
MOV R3,A
CLR A
RLC A
XCH A,R2 ;计算R2乘R6
MOV B,R6
MUL AB
ADD A,R3 ;累加部分积
MOV R3,A
MOV A,R2
ADDC A,B
MOV R2,A
RET
D457: CLR C
MOV A,R4
SUBB A,R7
JC DV50
SETB OV ;商溢出
RET
DV50: MOV R6,#8 ;求平均值(R4R5/R7-→R3)
DV51: MOV A,R5
RLC A
MOV R5,A
MOV A,R4
RLC A
MOV R4,A
MOV F0,C
CLR C
SUBB A,R7
ANL C,/F0
JC DV52
MOV R4,A
DV52: CPL C
MOV A,R3
RLC A
MOV R3,A
DJNZ R6,DV51
MOV A,R4 ;四舍五入
ADD A,R4
JC DV53
SUBB A,R7
JC DV54
DV53: INC R3
DV54: CLR OV
RET
TLC1549: SETB CLK1 ;读AD数据
SETB CS
SETB DATA1
CLR CS
CLR CLK1
MOV C,DATA1
MOV 22H.1,C
SETB CLK1
NOP
NOP
CLR CLK1
NOP
NOP
MOV C,DATA1
MOV 22H.0,C
SETB CLK1
NOP
NOP
CLR CLK1
NOP
NOP
MOV C,DATA1
MOV ACC.7,C
SETB CLK1
NOP
NOP
CLR CLK1
NOP
NOP
MOV C,DATA1
上一篇:TLC1549数码管显示程序