串行DA转实验.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一 串行D/A转换实验 实验目的 1、了解串行D/A TLC5615的功能与特性 2、理解串行D/A TLC5615的工作时序 3、掌握串行D/A TLC5615驱动程序编程 实验仪器 单片机开发板、万利仿真机、稳压电源、计算机 实验原理 TLC5615功能与特性 TLC5615为美国德州仪器公司1999年推出的产品,是具有串行接口的数模转换器,其输出为电压型,最大输出电压是基准电压值的两倍。带有上电复位功能,即把DAC寄存器复位至全零。其特点有: (1)10位CMOS电压输出; (2)5V单电源供电; (3)与CPU三线串行接口; (4)最大输出电压可达基准电压的二倍; (5)输出电压具有和基准电压相同极性; (6)建立时间12.5μs; (7)内部上电复位; (8)低功耗,最大仅1.75mW。 TLC5615内部结构图如图4-34所示。 图4-34 TLC5615内部结构图 TLC5615的时序 TLC5615接口时序兼容SPI、QSPI、WSPI、Microwire。如图4-35所示。 图4-35 TLC5615接口时序图 当片选信号有效时,串行接口可以输入数据。从图可知看出,当SCLK的正脉冲锁存输入的数据。串行数模转换器TLC5615的使用有两种方式,即级联方式和非级联方式。如不使用级联方式,DIN只需输入12位数据。DIN输入的12位数据中,前10位为TLC5615输入的D/A转换数据,且输入时高位在前,低位在后,后两位必须写入数值为零的低于LSB的位,因为TLC5615的DAC输入锁存器为12位宽。如果使用TL5615的级联功能,来自DOUT的数据需要输入16位时钟下降沿,因此完成一次数据输入需要16个时钟周期,输入的数据也应为16位。输入的数据中,前4位为高虚拟位,中间10位为D/A转换数据,最后2位为低于LSB的位为零。如图4-36所示。 图4-36 TLC5615数据格式 TLC5615串行D/A电路连接 实验电路如图4-37所示。TLC5615的片选信号由P2口经74LS138译码后给定。时钟线,数据线分别接P1.7、P1.5。参考电源为2.048V,这时输出电压最大值是4.096V。当需要级联时,只需把TLC5615的第4脚接到第2片的数据输入,时钟端、片选端只需并联即可。 TLC5615驱动程序设计 TLC5615的驱动程序主要是用软件模拟SPI接口(也可以用STC12C系例单片机的SPI接口输出)。首先设计出一次串行输出8位的SPI子程序,然后再按TLC5615规定的格式输出数据。流程图如图4-38所示。 图4-38 TLC5615驱动程序流程图 实验内容 1、三角波程序: #includereg52.h #includeintrins.h #define uint unsigned int #define uchar unsigned char #define CS_1 P2=0xff; //片选信号 关 #define CS_0 P2=0x00; //开 sbit SCLK=P1^7; //时钟输入位 sbit DIN=P1^5; uint DAvalue=0; //数据输入位 /********************************* DA转换函数 **********************************/ void DA_conver(uint DAdata) { uchar i; DAdata=6; //移除高6位 CS_1; //片选无效 SCLK=0; DIN=0; CS_0; //片选有效 for(i=0;i12;i++) //移入12位数据 { DIN=(bit)(DAdata0x8000); //取最高位 SCLK=1; DAdata=1; //准备下一位 SCLK=0; //准备下一个上升沿 } CS_1; //将10位有效数据压入寄存器中进行D/A转换 //P2=0xff; SCLK=0; } /**************************************** 主函数 *****************************************/ void main() { // DAvalue=512; while(1) { for(DAvalue=16;DAvalue993;DAvalue+=16)//根据电压出去=电压基准*(N/1024)得出加数规律 { DA_c

文档评论(0)

goujia + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档