基于TLC549的串行AD转换实例.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于TLC549的串行AD转换实例

基于TLC549的串行A/D转换实例 ????? 本文为《51基础与应用实例》的部分内容,浅显易懂,《51基础与应用实例》为三恒星科技公司公司编写,新华书店公开发行,未经许可不得转载 ????? 实例说明 ????? 单片机已经广泛应用于智能仪表和数据采集领域,促进了测量仪表和测量系统的自动化、智能化。在A/D转换系统设计中,实现了将模拟量转换为单片机能识别的数字量的过程。设计者的主要任务是根据用户对A/D转换通道的技术要求,合理地选择通道的结构并按一定的技术准则等因素恰当地选择所需的各种集成电路。? ?????? 本例主要介绍8位A/D转换芯片TLC549在51单片机系统中的应用,在分析TLC549的结构、特点和工作原理的基础上,提供一个硬件连接和软件编程。 ? ????? 硬件电路设计 ????? 单片机和A/D转换器之间的接口设计是硬件电路设计的关键。TLC549芯片可方便地与具有串行外围接口(SPI)的单片机或微处理器配合使用,也可与51系列通用单片机连接使用。 串行A/D转换电路单片机部分原理图如图7-9所示。 图7-9? 串行A/D转换原理图 ?????? 由硬件电路设计可以看出在本例中驱动TLC549芯片实现A/D转换时,单片机AT89C52采用异步串行接口。单片机AT89C52采用的时钟晶振大小为12MHz,其引脚P1.0与TLC549芯片的输入/输出时钟I/O CLOCK相连,引脚P1.1与TLC549芯片的数据输出脚DATA OUT相连,P1.2与TLC549芯片的片选脚/CS相连,从TLC549芯片转换的数据经数据输出脚DATA OUT送入单片机AT89C52中。 ?????? 单片机AT89C52的P1.0、P1.1具有双重功能:标准I/O口或模拟比较器。在用作模拟比较器时,它们作为内部模拟比较器的输入端AIN1和AIN2,是集电极开路电路,因此在用作标准I/O使用时,应外接上拉电阻。电路中正基准电压REF+接+5V,负基准电压REF-接地,因此测量范围是0V~5V,对应输出数字量是0~255。 ????? 软件设计 ????? 软件的设计思想是:在主程序中,通过置(P1.2)端为低选中芯片,调用读入8位转换结果子程序,启动A/D转换开始,置(P2.2)端为高并延时17μs等待A/D转换结束,当A/D转换结束,置(P1.2)端为低再次调用读入8位转换结果子程序,则可读入本次A/D转换结果。在读入8位转换结果子程序中,通过程序语句读入前次转换结果的最高位,接着用循环程序在P1.1上发出7个I/O CLOCK脉冲,同时读入转换结果的其余7位,最后通过程序语句在P1.1口发出第8个I/O CLOCK脉冲,从而启动本次A/D转换。 ????? 程序流程? ?????? 单片机实现串行A/D转换程序的流程如图7-10所示。 图7-10? 单片机实现串行A/D转换程序流程 ????程序说明? ?????? #include reg52.h // 引用标准库的头文件 ?????? #include intrins.h ?????? #define uchar unsigned char ?????? uchar DResult; // 存放转换后数据 ?????? sbit IOCLK = P1^0; // 输入输出时钟 ?????? sbit DATAOUT = P1^1; // 数据输出 ?????? sbit CS = P1^2; // 片选信号 ?????? void main()? ?????? { ?????? EA = 1; ?????? EX0 = 1; //开中断 ?????? while(1); ?????? } ?????? void int0svr(void) interrupt 0 using 1 ?????? { ?????? uchar? count; ?????? uchar? tmp; ?????? uchar? t; ?????? EX0 = 0; // 关中断 ?????? tmp = 0; ?????? CS = 1; // 片选无效 ?????? IOCLK = 0; ?????? CS = 0; // 片选有效 ?????? _nop_(); // 空指令延时 ?????? for (count=0;count8;count++) ?????? { ?????? IOCLK = 1; ?????? if (DATAOUT) ?????? tmp++; ?????? tmp = tmp1; ?????? IOCLK = 0; ?????? } ?????? CS = 1; // 片选无效 ?????? DResult = tmp; ?????? for(t=0

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档