A/D的D/A转换器是架设在单片机一被控实体之间的桥梁。
基于ADC0809的数据采集系统电路设计图如下
基于ADC0809的数据采集系统ADC0809部分
基于ADC0809的数据采集系统中间接口
程序
******************************************************************************
程序功能比较简单,通过AD转换芯片ADC0809实现对模拟电压信号的采样以及数字化转换,将数字量存储到51单片机内存。ADC0809启动A/D转换完成后,触发51单片机外部中断0,在中断服务程序当中,实现A/D数据的读取。
******************************************************************************
//控制变量设定
COUT DATA 30H
DBUF DATA 39H 39H~40H的8个单元用于存储8个电压数字量
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT0
ORG 0030H
MAIN: MOV SP,#70H //堆栈设置
MOV COUT,#08H
MOV R7, 100
SETB EA //开外部中断0
SETB EX0
MOV DPTR,#7FF0H //指向AD通道0
MOV R1, #DBUF //存储指针指向首地址
MOVX @DPTR, A /启动通道0A/D转换
SJMP $
INT0: CLR EX0 //关闭外部中断0
PUSH PSW
PUSH ACC //压栈
DJNZ COUT,NEXT //8次AD判断
MOV COUT, #08H
LCALL NEW //数据更新
MOVX @DPTR, A //启动AD转换
POP ACC
POP PSW //堆栈数据弹出
SETB EX0 //开外部中断0
RETI
NEXT: MOVX A, @DPTR //读取AD数据
MOV @R1, A
INC R1 //指针向下移动
INC DPTR //通道加1
LCALL DELAY200 //延时
MOVX @DPTR, A //启动AD
POP ACC
POP PSW //堆栈数据弹出
RETI
//AD转换恢复到通道0
NEW: MOV DPTR,#7FF0H //AD通道指向0
RET
//延时子程序
DELAY200:DJNZ R7, DELAY200 //延时200微秒
MOV R7, 100
RET
END |