本采集系统中采样间隔的控制是通过可编程控制芯片82C54的脉冲输出来完成的,而数据转换结束的判断则是通过BUSY信号的状态来判断。当转换结束时,BUSY信号将从低电平转为高电平。当该信号通过D触发器将状态信号送到MCU的一个I/O引脚后,系统可通过查询该引脚的状态来判断读出转换结束时刻,这里使用查询方式而没有用中断方式的原因是为了提高读数的速度,以使数据读出速度能与AD的转换速度相匹配,多通道采集的程序流程图如图6所示。以下给出采集部分的子程序:
SETB P1.3 ;启动82C54
MOV R5, SAMP DSH
MOV R6, SAMP DSL ;设置采样点数
CLR P1.5 ;置ADC锁存器读
使能有效
MOV DPTR,#CJD Add ; 设置采集数据存
放初始地址
MOVX A,@DPTR ;消D触发器
CLR P1.0 ;置通道1
CLR P1.1
R AD3 JNB P1.2$ ;查询BUSY状态
SETB P1.0
CLR P1.1 ;转换结束先切换到通道2
MOVX A,@DPTR ;读通道1的低8位数
MOVX @DPTR,A ;存入RAM
INC DTPR
MOVX A,@DPTR ;读通道1的高8位数
MOVX @DPTRA ;存入RAM
INC DPTR ;修改地址
………………
DJNZ R6,R AD3
DJNZ R5,R AD3
CLR P1.3 ;82C54停止工作
SETB P1.5 ;停止采集
RET
3 结束语
本设计利用有源晶体振荡器和可编程计数器相结合的方法,实现了采样间隔的精确控制和灵活修改,同时利用锁存器和地址分配技巧实现了最高吞吐率下数据的正确读出,从而实现了100ksps单通道采样的最高速率。三通道同时采集时的采样间隔可达40μs通道间切换后,放大器有一定的建立时间 ,完全可以达到使用要求。
上一篇:ADuC812内部ADC的应用