打印

多通道并行A/D

[复制链接]
1762|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
a/d, AD, ov, AC, ADC
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

相关帖子

沙发
永远的不知| | 2012-4-28 09:57 | 只看该作者
谢谢分享

使用特权

评论回复
板凳
jxmzzr| | 2012-4-28 20:33 | 只看该作者
很好的分享,另个程序只是实现了8个通道电压数据的循环采集,存储电压数据时预留了8B的空间,采集的新电压数值存储时将覆盖原来的数值。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

482

主题

2214

帖子

11

粉丝