打印

求解:使用pcf85917作DA转换,大家帮忙看看

[复制链接]
1612|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zjr075017|  楼主 | 2012-4-12 22:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define  PCF8591 0x90    //PCF8591 地址
sbit SCL=P2^0;//时钟脉冲
sbit SDA=P2^1;//双向输入输出数据端
//bit ack;
void delay(uint cnt)
{
while(--cnt);
}
void init()
{
  SCL=1;
delay(2);
SDA=1;
delay(2);
}
void Start_I2c()
{
  SDA=1;        
delay(1);
  SCL=1;
delay(5);   
  SDA=0;        
delay(5);      
  SCL=0;      
  delay(2);
}
void respons ( )
{
  uchar i=0;
  SCL=1;
  delay(3);
  while((SDA==1)&&(i<255))
   i++;
  SCL=0;
  delay(5);
     
}
void Stop_I2c()
{
  SDA=0;      
  delay(1);      
  SCL=1;      
  delay(5);
  SDA=1;      
  delay(4);
}
void write(uchar date)
{
uchar i,temp;
temp=date;
for(i=0;i<8;i++)
  {
   temp=temp<<1;
   SCL=0;
   delay(5);
   SDA=CY;
   delay(2);
   SCL=1;
   delay(3);
  }
  SCL=0;
  delay(2);
  SDA=1;
  delay(2);
}
void DACconversion(unsigned char sla,unsigned char c,  unsigned char Val)
{
   Start_I2c();              //启动总线
   write(sla);
   respons ( );            //发送器件地址
   //if(ack==0)return(0);
   write(c);
   respons ( );              //发送控制字节
  // if(ack==0)return(0);
   write(Val);
   respons ( );            //发送DAC的数值  
   //if(ack==0)return(0);
   Stop_I2c();               //结束总线
  //return(1);
}
void main()
{
init();
while(1)
{
    DACconversion(0x90,0x40, 0xff);
}

}

相关帖子

沙发
zjr075017|  楼主 | 2012-4-13 08:31 | 只看该作者
大家给看看,再次请求

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

8

帖子

1

粉丝