用ADC0809做A/D转换器,编制程序,将模拟量变成数字量,并用数码管显示其结果。
发布网友
发布时间:2022-05-14 09:41
我来回答
共1个回答
热心网友
时间:2023-10-13 02:46
0809利用实验台上的ADC0809做A/D转换器,实验箱上的电位器提供模拟电压信号输入,编制程序,将模拟量转换成数字量,用数码管显示模拟量转换的结果。
PORT
EQU
0CFA0H
CSEG
AT
0000H
LJMP
START
CSEG
AT
4100H
START:
MOV
DPTR,#PORT
;启动通道0
MOVX
@DPTR,A
MOV
R0,#0FFH
LOOP1:
DJNZ
R0,LOOP1
;等待中断
MOVX
A,@DPTR
MOV
R1,A
DISP:
MOV
A,R1
;从R1中取转换结果
SWAP
A
;分离高四位和低四位
ANL
A,#0FH
;并依次存放在50H到51H中
MOV
50H,A
MOV
A,R1
ANL
A,#0FH
MOV
51H,A
LOOP:
MOV
DPTR,#0CFE9H
;写显示RAM命令字
MOV
A,#90H
MOVX
@DPTR,A
MOV
R0,#50H
;存放转换结果地址初值送R0
MOV
R1,#02H
MOV
DPTR,#0CFE8H
;8279数据口地址
DL0:
MOV
A,@R0
ACALL
TABLE
;转换为显码
MOVX
@DPTR,A
;送显码输出
INC
R0
DJNZ
R1,DL0
SJMP
DEL1
TABLE:
INC
A
MOVC
A,@A+PC
RET
DB
3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB
7FH,6FH,77H,7CH,39H,5EH,79H,71H
DEL1:
MOV
R6,#255
;延时一段时间使显示更稳定
DEL2:
MOV
R5,#255
DEL3:
DJNZ
R5,DEL3
DJNZ
R6,DEL2
LJMP
START
;循环
END