网站大量收购独家精品文档,联系QQ:2885784924

数模转换器与模数转换器精讲.ppt

  1. 1、本文档共105页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
*/105 数据传输过程 首先器件必须使能CS。 然后在FS的下降沿启动数据的移位,在SCLK的下降沿一位接一位地传入内部寄存器。 在16位已传送后或者当FS升高时,移位寄存器中的内容被移到DAC锁存器,它将输出电压更新为新的电平。 */105 TLV5616的串行接口可以用于两种基本的方式: 4线(带片选) 3线(不带片选) 4、数据格式 TLV5616的16位数据字包括两部分: 控制位 D15-D12 DAC新值 D11-D0 */105 X:任意值 SPD:速度控制位 1→快速方式 0→慢速方式 PWR:功率控制位 1→掉电方式 0→正常工作 注:在掉电方式时,TLV5616中的所有放大器都被禁止。 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 X SPD PWR X DAC新值 */105 4、TLV5616与单片机的接口电路及应用编程 TLV5616与单片机的接口连接相对简单,注意应在VDD和AGND之间应当连接一个0.1μF的陶瓷旁路电容,且应当用短引线安装在尽可能靠近器件的地。 使用缺氧体环(ferrite beads)可以进一步隔离系统模拟电源与数字电源。 */105 【例9-4】使用STC15F2K60S2控制TLV5616输出正弦波。 解:TLV5616与STC15F2K60S2接口的电路图如图所示。 图9-13 TLV5616与单片机的接口电路图 */105 串行的DAC输入数据和外部控制信号由单片机的P3口完成:串行数据由RxD引脚送出,串行时钟由TxD引脚送出。P3.4和P3.5分别向TLV5616提供片选和帧同步信号。 使用定时器以固定的频率产生中断。在中断服务子程序中提取和写入下一个数据样本(两个字节)到DAC中。数据样本储存在常数表格中,描述了一个正弦波的全周期。 */105 单片机的串行口工作于方式0,在RxD脚发送8位数据,同时TxD脚上送出同步时钟。需要连续两次写入才能写一个完整的字到TLV5616。 输出DAC的数据是正弦波数据,一个周期的32个正弦波数据(双字节数)保存在SINEVALS为首地址的单元中(共64个字节)。 */105 汇编语言程序代码如下: ROLL_PTR EQU 30H ORG 0000H LJMP START ORG 000BH LJMP INT_T0 ORG 0100H START: MOV SP,#0F0H MOV DPTR,# SINEVALS ;设置数据常数表格的首地址 CLR A MOV SCON,A ;设置串口1工作与模式0 MOV TMOD,#02H ;设置定时器0工作方式2 MOV TH0,#0C8H SETB T1 ;置FS = 1 SETB T0 ;置= 1 SETB ET0 ;允许定时器0中断 SETB EA ;允许CPU中断 MOV ROLL_PTR,A ;循环计数清“0” SETB TR0 ;启动定时器0 SJMP $ */105 ;定时器0中断服务程序 INT_T0: PUSH PSW PUSH ACC CLR T0 ;将CS置为低电平 CLR T1 ;将FS置为低电平 MOV A, ROLL_PTR ;将循环计数装入累加器A MOVC A,@A+DPTR ;从数据表格中读取高位字节 ORL A, #00H ;设置控制位 MOV SBUF,A ;送出高位字节 MOV A, ROLL_PTR ;将循环计数装入累加器A INC A MOVC A,@A+DPTR ;读取低位字节 */105 MSB_TX: JNB TI, MSB_TX ;等待高位传输结束 CLR TI MOV SBUF,A ;送出低位字节 LSB_TX: JNB TI, LSB_TX ;等待低位传输结束 CLR TI SETB T1 ;置 FS = 1 MOV A, ROLL_PTR INC A ;修正计数,以得到下一个数据样本 INC A ANL A,#03FH ;如果大于64,则重新赋值为0 MOV ROLL_PTR,A SETB T0 ;置=1 POP ACC POP PSW RETI */105 ;正弦常数表格 SINEVALS: DW 01000H DW 0903EH DW 05097H DW 0305CH DW 0B086H DW 070CAH DW 0F0E0H DW 0F06EH DW 0F039H DW 0F06EH DW 0F0E0H DW 070CAH

文档评论(0)

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

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

1亿VIP精品文档

相关文档