发布网友 发布时间:2022-04-23 13:26
共2个回答
热心网友 时间:2023-10-15 15:06
最高输入280V经衰减100得到ad采样读取数
(ad采样读取数/255)*5V+0.4V
结果转换为BCD码,数码管显示280V。
--------------------
这里就是说,ad采样读取数最大是122。
按照楼主给出的公式,就可以得出 2.80V。
(ad采样读取数122 / 255)* 5V + 0.4V = 2.80V
推导:
= ad采样读取数122 × 5 / 255 + 04
= ad采样读取数122 / 51 + 04 = 280
程序如下:
MOV A, P1
MOV B, #51
DIV AB ;采样数据除以51
MOV B, #10
DIV AB ;除以10,余数是个位数
MOV R7, B ;保存余数,即个位数
ADD A, #4 ;加上0.4V
MOV B, #10
DIV AB ;除以10,余数是十位数
MOV R6, B ;保存余数,即十位数
MOV R5, A ;保存百位数
转换结果在R5 R6 R7中。
热心网友 时间:2023-10-15 15:06
:
ORG 0000H
LJMP START
START:
MOV B, #0
MOV DPTR, #D_table
M_LOOP:
MOV P0, #0
MOV P2, B
MOV A, B
MOVC A, @A+DPTR
MOV P0, A
INC B
ANL B, #7
CALL Delay
SJMP M_LOOP
Delay:
MOV R7, #0
DJNZ R7, $
DJNZ R7, $
RET
D_table:
DB 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
END
用PROTEUS软件仿真运行效果如下图所示。
热心网友 时间:2023-10-15 15:06
最高输入280V经衰减100得到ad采样读取数
(ad采样读取数/255)*5V+0.4V
结果转换为BCD码,数码管显示280V。
--------------------
这里就是说,ad采样读取数最大是122。
按照楼主给出的公式,就可以得出 2.80V。
(ad采样读取数122 / 255)* 5V + 0.4V = 2.80V
推导:
= ad采样读取数122 × 5 / 255 + 04
= ad采样读取数122 / 51 + 04 = 280
程序如下:
MOV A, P1
MOV B, #51
DIV AB ;采样数据除以51
MOV B, #10
DIV AB ;除以10,余数是个位数
MOV R7, B ;保存余数,即个位数
ADD A, #4 ;加上0.4V
MOV B, #10
DIV AB ;除以10,余数是十位数
MOV R6, B ;保存余数,即十位数
MOV R5, A ;保存百位数
转换结果在R5 R6 R7中。
热心网友 时间:2023-10-15 15:06
:
ORG 0000H
LJMP START
START:
MOV B, #0
MOV DPTR, #D_table
M_LOOP:
MOV P0, #0
MOV P2, B
MOV A, B
MOVC A, @A+DPTR
MOV P0, A
INC B
ANL B, #7
CALL Delay
SJMP M_LOOP
Delay:
MOV R7, #0
DJNZ R7, $
DJNZ R7, $
RET
D_table:
DB 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
END
用PROTEUS软件仿真运行效果如下图所示。