资源描述
______________________________________________________________________________________________________________
串行AD实验预习报告
一.实验目的
学习使用串行模数转换芯片TLC549进行电压采集和数据处理。
二.实验原理
TLC549是美国德州仪器(TI)公司生产的8位串行逐次比较型A/D转换芯片。通用微处理器通过串行控制线可实现对该芯片的控制。该芯片具有4MHz片内系统时钟和软、硬件控制电路,转换时间最长17μs, 转换速度为40 000次/s。总失调误差最大为±0.5LSB,典型功耗值为6mW。管脚封装如图1所示:
图1 TLC549管脚封装图
管脚定义为:4、8脚为电源输入和接地;2脚AIN模拟采样电压的输入;5脚-CS为片选信号,当-CS为高时,数据输出DATA_OUT 端处于高阻状态;7脚I/OCLK为时钟信号的输入;6脚DOUT为转换后的串行数据输出;1、3脚为参考电压输入,其中1脚REF+,3脚REF-,通常为保证器件工作良好,REF+电压应高于REF-电压至少1V,为减少误差,建议相差4.75V以上。
TLC549的工作时序如图2所示:
图2 TLC549工作时序图
如上图所示,首先将CS置低,内部电路在测得CS下降沿后,等待ten后自动将前一次转换结果的最高位(D7)位输出到DATA OUT端上。前四个IO_CLOCK 周期的下降沿依次移出第2、3、4 和第5 个位(D6、D5、D4、D3),片上采样保持电路在第4个IO_CLOCK 下降沿开始采样模拟输入。接下来的3个IO_CLOCK 周期的下降沿移出第6、7、8(D2、D1、D0)个转换位。最后,片上采样保持电路在第8个I/O CLOCK 周期的下降沿后,开始A/D转换。第8个IO_CLOCK后,CS 必须为高,或IO_CLOCK保持低电平,这种状态需要维持tconv以等待保持和转换工作的完成。
三.实验设备及器件
PC机,DP-51PROC单片机综合仿真试验仪。
四.实验内容
1. 实验要求
1.1 REF+连基准源的+5V(通过可调电阻调整),CLK、DAT和-CS分别连P10、P11和P12。D2区电位器的输出连ANIN。通过单片机P1口控制串行AD转换芯片TLC549实现模拟电压信号的采集,并存入内部数据存储器。记录10组不同的电压转换值,并分析误差。
1.2 使用信号源产生0~+5V区间的正弦波,使用串行A/D转换芯片TLC549实现信号采集,并利用采样定律分析采样频率与输入信号频率的关系。
2. 实验设计
TLC549在进行本次转换时,所读取的实际上是上次转换的值,这一点在编程时需要注意。另外,由于AD采样时可能会受到噪声的干扰,所以最终的AD转换结果与实际模拟值之间存在一定的误差,只要这一误差足够小且满足误差允许的范围,则可以认为AD转换是精确的。在利用采样定律分析采样频率与信号频率的关系时,可以利用定时器产生固定的时间间隔,即采样间隔。利用采样得到的数据进行拟合,或者用matlab进行频谱分析,就可以得知波形是否有失真,进而得知该情况下的采样频率是否合理。由于可能需要多次测量,所以选定一适合的信号频率,在该信号频率下,采样频率应该满足采样定律,然后上下调整信号频率,这样就免去了每次测量都要修改定时中断的麻烦,所以固定采样频率,调整信号频率,这样就比较简单。假设适合的信号频率为5KHz,则采样频率定为10.24KHz(采样频率取得稍大),定时器计数值为921.6K/10.24K = 90D,则计数初值为256-90=166D=A6H,计数器工作在方式2,且开放中断。
3. 程序流程图
图3 实验要求1流程图
图4 实验要求2流程图
4. 电路连接图
图5 AD转换硬件连接图
5. 程序清单
5.1 记录10组不同电压的转换值
CS BIT P1.2 ;定义使能信号CS
DAT BIT P1.1 ;定义数据输入管脚
CLK BIT P1.0 ;定义时钟信号
AD_DATA DATA 30H ;AD转换结果缓冲区
ORG 8000H ;伪指令,定义代码存放开始地址,硬件仿真
LJMP MAIN
ORG 8100H ;伪指令,以下代码从8100H开始存放
MAIN:
ACALL TLC549_ADC ;首次启动AD转换
MOV R7, #0FFH ;延时,等待转换结束
DJNZ R7, $
ACALL TLC549_ADC ;读取上次ADC值,再次启动转换
MOV AD_DATA, A ;转换结果送缓冲区
SJMP $
TLC549_ADC:
CLR A ;清零寄存器
CLR CLK ;准备提供上升沿,送出结果
CLR CS ;选中TLC549
MOV R6, #8
TLCAD_L1:
SETB CLK ;送出转换结果的一位
NOP
NOP
MOV C, DAT
RLC A
CLR CLK ; DAT=0,为读出下一位数据做准备
NOP
DJNZ R6, TLCAD_L1 ;等待8位转换结果全部送出
SETB CS ;禁止TLC549,再次启动A/D转换
SETB CLK ;拉高时钟信号
RET ;函数返回
;
END
5.2 分析采样频率与信号频率的关系
CS BIT P1.2 ;定义使能信号CS
DAT BIT P1.1 ;定义数据输入管脚
CLK BIT P1.0 ;定义时钟信号
AD_DATA DATA 30H ;AD转换结果缓冲区首地址
ORG 8000H ;伪指令,定义代码存放开始地址,硬件仿真
LJMP MAIN
ORG 800BH ;伪指令,存储T0中断的服务函数入口地址
LJMP INTT0
ORG 8100H ;伪指令,以下代码从8100H开始存放
MAIN:
MOV R1, #AD_DATA ;取缓冲区首地址
ACALL TLC549_ADC ;首次启动AD转换
MOV TMOD, #02H ;T0工作在方式2
MOV TH0, #A6H
MOV TL0, #A6H ;设置采样频率,10.24K
SETB ET0 ;允许T0中断
SETB EA ;开放CPU中断
SETB TR0 ;启动T0
SJMP $
TLC549_ADC:
CLR A ;清零寄存器
CLR CLK ;准备提供上升沿,送出结果
CLR CS ;选中TLC549
MOV R6, #8
TLCAD_L1:
SETB CLK ;送出转换结果的一位
NOP
NOP
MOV C, DAT
RLC A
CLR CLK ; DAT=0,为读出下一位数据做准备
NOP
DJNZ R6, TLCAD_L1 ;等待8位转换结果全部送出
SETB CS ;禁止TLC549,再次启动A/D转换
SETB CLK ;拉高时钟信号
RET ;函数返回
ORG 8400H
INTT0:
ACALL TLC549_ADC ;读取上次转换结果,启动下次转换
MOV @R1, A ;将转换结果写入缓冲区
INC R1 ;地址指针加1
CJNE R1, #50H, LAST ;20次转换是否完成
CLR EA ;20次转换完成,禁止中断
CLR TR0 ;T0停止
LAST:
RETI
;
END
Welcome To
Download !!!
欢迎您的下载,资料仅供参考!
精品资料
展开阅读全文