串行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文档。上传文档
查看更多
串行AD转换

《自动检测与过程控制》期末作业 姓 名 熊子良 班 级 信息082 学 号 200811513202 日 期 2011-6-3 目录 一.实验目的 3 二.题目分析 3 三.框图设计 5 四.硬件设计 6 五.程序清单 6 六.调试方法与仿真结果 9 一.实验目的 设计一个采用K分度热电偶做传感器的电子温度计电路,测温范围0—1000℃,以数字方式显示温度,显示分辨率不低于1℃。(注:K分度热电偶1000℃时的热电势为41.27毫伏)。 二.题目分析 题目要求能检测0到1000度的温度,分辨率要不小于1度。可见刻度最小为1000分度。若使用常规的8位AD转换器并不能达到题目要求,由于2^10=1024,所以使用10位的AD转换器正好能符合题目要求。经由网上查询得知,德州仪器出品的开关电容逐次逼近模数转换器器件有三个输入端和一个3态输出端[片选(CS) 、 输入/输出时钟(I/O CLOCK)、地址输入(ADDRESS) 和数据输出(DATA OUT)], ·10位分辨率A/D转换器 ·11个模拟输入通道 ·3路内置自测试方式 ·固有的采样与保持 ·总的不可调整误差 ±1LSB Max ·片内系统时钟 ·转换结束(End-of-Conversion,EOC)输出 ·采用CMOS技术 引脚排列如下图所示: 由上述文档可知,TLC1543是一块10位串行输出的AD转换器,共11个选通通道A0~A10,其选通数据也是以串行的方式输入的,所以该芯片使用比较复杂,不像控制并行AD转换器那么简单明了。考虑到单片机串行通信一次只能传输8位数据,而TLC1543一次AD转换产生10位的数据,所以在读取AD转换芯片的数据时也不能采用单片机已有的串行通信方式;必须使用并口模拟10的串行通信,同时在波特率设置时又要考虑与TLC1543同步的问题,所以程序设计起来还是非常棘手的。 三.框图设计 从文档得知,在片选信号()有效(低电平)时,4位选通信号(ADDRESS端输入,串行数据)在CLOCK端前4个上升沿被移入芯片TLC1543并锁存。 在CLOCK端输入第10个下降沿时,AD转换结束,产生“转换结束”(EOC) 四.硬件设计 综上考虑,我在硬件设计时,用P0口4端产生CLOCK信号,而P0口3端控制片选信号(),P0口1端输出选通信号,P0口1端读取串行数据。在数码管显示部分采用P2口输出字型码,P1口输出位选信号。以下是电路图: 五.程序清单 结合硬件电路,考虑好实现的具体细节,经过不断摸索,终于把程序调试的差不多,以下是单片机的C语言程序代码: #include reg51.h #define uchar unsigned char #define uint unsigned int sbit D_OUT= P0^0; sbit D_IN =P0^1; sbit _CS =P0^2 ; sbit CLOCK =P0^3 ; uchar code tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xc6} //字型码 ,display[8]={1,2,4,8,16,32,64,128}; //位选码 uchar byte[8]={1,1,1},j; uint dy; void write1543(uchar port) //从TLC1543读取采样值,形参port是采样的通道号 { uint data i; CLOCK=0; //片选允许 _CS=0; port=4; //地址数据左移四位,转换成串行数据 for (i=0;i4;i++) //把通道号打入1543 { D_IN=(bit)(port0x80);// CLOCK=1; //产生CLOCK上升沿 ,1543读入选通地址 CLOCK=0; port=1; //数据左移,产生串行数据 } for (i=0;i7;i++) //填充6个CLOCK,等待转换结束 { CLOCK=1; //CLOCK上升沿 CLOCK=0; } } uint read1543() { uint data ad; uint data i; uchar data al=0,ah=0; CLOCK=0; _CS=0; //AD转换结束 for (i=0;i2;i++) //取D9,D8 { D_OUT=1; CLOCK=1; //CLOCK上升沿读取 ah=1; //逐位移入数据 if (D_OUT) ah|=0x01

文档评论(0)

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

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

1亿VIP精品文档

相关文档