- 1、本文档共69页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MCS-51与DA、AD的接口-杭电课案
8.3.1 DAC的转换原理及分类 1.转换原理 DAC的基本原理是把数字量的每一位按照权重转换成相应的模拟分量,然后根据叠加定理将每一位对应的模拟分量相加,输出相应的电流或电压。 2.DAC的分类 1)根据DAC内部结构不同 权电阻网络型 “T”型电阻网络型 2)根据输出结构的不同 电压输出型(如TLC5620) 电流输出型 (如THS5661A) 3)根据与单片机接口方式不同 并行接口DAC(如DAC0832、DAC0808) 串行接口DAC(TLC5615等) 1.权电阻型DAC 权电阻型DAC核心思想在于用等比例的电阻在参考电压的作用下产生和权重对应的权电流,权电流在数字开关的作用下进行合成模拟信号。 权电阻网络型DAC优缺点: 优点:是电路结构简单,使用电阻数量较少;各位数码同时转换,速度较快。 缺点:是电阻译码网络中电阻种类较多、取值相差较大,随着输入信号位数的增多,电阻网络中电阻取值的差距加大;在相当宽的范围内保证电阻取值的精度较困难,对电路的集成化不利。该电路比较适用于输入信号位数较低的场合。 2. T型电阻网络型DAC T型电阻网络型DAC克服了权电阻型DAC电阻阻值较多的缺点,如图8.3.3所示,S0~S3为模拟开关,R—2R电阻解码网络呈倒T形,运算放大器A构成求和电路。 D/A转换器的主要技术指标: 1)分辩率(Resolution) 指最小模拟输出量(对应数字量仅最低位为‘1’)与最大量(对应数字量所有有效位为‘1’)之比。 分辨率也可以用D/A转换器的最小输出电压与最大输出电压的比值来表示。10位D/A转换器的分辨率为: 2)建立时间(Setting Time) 是将一个数字量转换为稳定模拟信号所需的时间,也可以认为是转换时间。D/A中常用建立时间来描述其速度,而不是A/D中常用的转换速率。 一般地,电流输出D/A建立时间较短,电压输出D/A则较长。 其他指标还有线性度(Linearity)、转换精度、温度系数/漂移等。 8.3.2 并行接口DAC 并行DAC按照转换位数分为8位、10位、12位、16位等,考虑单片机接口便利程度这里以经典的DAC0832 D/A转换器介绍并行接口DAC。 四、电压输出方法 DAC0832是一个电流输出型DAC,要想输出电压要增加电流/电压变换环节,常用运算放大器实现转换(如图8.3.6所示,图中DAC0832工作于直通方式),图中 直通方式举例 程序实例1:输出正锯齿波 Main() { While(1) P1++;//这里假设P1口接数据输入 } 程序实例2:输出负锯齿波 Main() { While(1) P1--; //这里假设P1口接数据输入 } 程序实例3:输出三角波 Main() { P1=0; While(1) { While(1) { If(P1!=0xFF) P1++; //这里假设P1口接数据输入 Else Break; } While(1) { If(P1!=0x00) P1--; //这里假设P1口接数据输入 Else Break; } } } 8.3.3 串行接口DAC 近年来,随着串行总线(SPI、IIC、QSPI等)的飞速发展及串行总线在单片机的普及,采用串行接口的低成本DAC越来越多。这里以TLC5615为例介绍串行接口DAC。 结论: 要想串行输入数据和输出数据必须满足两个条件: 1、时钟SCLK的有效跳变; 2、片选CS为低电平。 Note:为了使时钟的内部馈通最小,当片选为高电平时,输入时钟SCLK应当为低电平。 例:在电路中,AT89S51单片机的P3.0-P3.2分别控制TLC5615的片选,串行时钟输入SCLK和串行数据输入DIN。电路的连接采用非级联方式(12位方式),参考电压2V,最大输出电压4V。 //TI 10位DAC TLC5615的示例程序 #define SPI_CLK P3_1 #define SPI_DATA P3_2 #define CS_DA P3_0 void da5615(unsigned int dat) { un
文档评论(0)