D/A芯片MAX5812(I2C接口)无输出

[复制链接]
3720|1
 楼主| yuzq2001 发表于 2008-12-18 17:10 | 显示全部楼层 |阅读模式
&nbsp;&nbsp;&nbsp;&nbsp;近日写一个DA的驱动,用的是12位DA芯片MAX5812,芯片上标为AAYZ(对应地址0xA8),调试了好久一直无电压输出。<br />&nbsp;&nbsp;&nbsp;&nbsp;其中用的51系列单片机做仿真I2C接口,上拉电阻Rp为10K,串行电阻为10欧,SDA、SCL高电平为5V;VDD接MAX6045的输出端,也就是4.5V;ADD接地,都是按照手册上所说的接的,用示波器看SCL和SDA的波形都是正确的,芯片也换过了,两个芯片都是一样的效果,一直没有电压出来,不知道是何缘故,现附上这一段的代码,麻烦各位高人看看有什么问题没有,感激不尽!<br /><br />#include&ltreg51.h&gt<br />#include&ltabsacc.h&gt<br />#include&ltintrins.h&gt<br /><br />#define&nbsp;uchar&nbsp;unsigned&nbsp;char&nbsp;<br />#define&nbsp;uint&nbsp;unsigned&nbsp;int&nbsp;<br /><br />sbit&nbsp;SCL=P2^7;<br />sbit&nbsp;SDA=P2^6;<br /><br />bit&nbsp;cack;<br />uint&nbsp;value;<br /><br />void&nbsp;delayms(uint&nbsp;m)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint&nbsp;j;<br />&nbsp;&nbsp;&nbsp;&nbsp;uint&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&ltm;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(j=0;j&lt600;j++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_nop_();<br />}<br /><br />void&nbsp;delay2ns()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;_nop_();<br />&nbsp;&nbsp;&nbsp;&nbsp;_nop_();<br />}<br /><br />void&nbsp;delay4ns()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;_nop_();<br />&nbsp;&nbsp;&nbsp;&nbsp;_nop_();<br />&nbsp;&nbsp;&nbsp;&nbsp;_nop_();<br />&nbsp;&nbsp;&nbsp;&nbsp;_nop_();<br />}<br /><br />void&nbsp;&nbsp;Start()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;SDA=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;SCL=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay4ns();<br />&nbsp;&nbsp;&nbsp;&nbsp;SDA=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay4ns();<br />&nbsp;&nbsp;&nbsp;&nbsp;SCL=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay4ns();<br />}<br /><br /><br />void&nbsp;Stop()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;SDA=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay4ns();<br />&nbsp;&nbsp;&nbsp;&nbsp;SCL=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay4ns();<br />&nbsp;&nbsp;&nbsp;&nbsp;SDA=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />void&nbsp;Writebyte(uchar&nbsp;byte)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt8;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SDA=(bit)(byte&0x80);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay4ns();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SCL=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay4ns();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SCL=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay4ns();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte&lt&lt=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;delay4ns();<br />}<br /><br />void&nbsp;Sent_ack()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;SDA=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay4ns();<br />&nbsp;&nbsp;&nbsp;&nbsp;SCL=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay4ns();<br />&nbsp;&nbsp;&nbsp;&nbsp;SCL=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay4ns();&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />void&nbsp;Sent_noack()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;SDA=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay4ns();<br />&nbsp;&nbsp;&nbsp;&nbsp;SCL=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay4ns();<br />&nbsp;&nbsp;&nbsp;&nbsp;SCL=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay4ns();&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />void&nbsp;Wait_ack(&nbsp;)<br />{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SCL=0;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SDA=1;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay4ns();<br />&nbsp;&nbsp;&nbsp;&nbsp;SCL=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay4ns();<br />&nbsp;&nbsp;&nbsp;&nbsp;cack=SDA;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(cack)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cack=SDA;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SCL=0;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SDA=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay4ns();&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />main()&nbsp;<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;SCL=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;SDA=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;value=0x0AAA;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;delayms(500);<br />&nbsp;&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//presskey();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Start();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writebyte(0xA8);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wait_ack();&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writebyte((value&gt&gt8)|0xC0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wait_ack();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writebyte(value&0x00FF);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wait_ack();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stop();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delayms(100);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}<br /><br /> 相关链接:<a href='https://bbs.21ic.com/upfiles/img/200812/200812181756444.pdf'>https://bbs.21ic.com/upfiles/img/200812/200812181756444.pdf</a>
 楼主| yuzq2001 发表于 2008-12-19 09:30 | 显示全部楼层

搞好了,无须回答了哈

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

59

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部