打印

请教一下TLC2574驱动的问题

[复制链接]
2170|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
313409689|  楼主 | 2010-1-10 15:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TLC, AD, TE, spi, pi
我在写tlc2574时碰到了下面的问题,单独采集一路或两路信号时,没有问题,但要把一路信号采集很多次时,就会影响其他的采集,而且很不稳定。下面是我写的程序,大家来看看。麻烦大家把问题提出来,谢谢!
void temp_measure(unsigned int Address,unsigned char Y)
{
  unsigned int AD_temp,AD_temp1;

//    AD_spi_init(0X3b00);                  //选择第四通道11

  TRISC0=0;  
  TRISC=0X12;                               //设置SDI为输入方向,其他的方向为输出
//  PORTC=0XF4;                             //时钟设置为时钟脚为低电平,片选禁止,

  AD_STAR=1;   
  AD_CS=1;
  AD_SCK=0;
                              //先把复位脚电平拉高,
  SSPSTAT=0X00;                             //数据在中间接收,CKP=0 DATA transmitted on rising edge of SCK
  NOP();
  SSPCON=0X20;                              //设置RC为SPI的硬件部分,总线的时钟为低电平,
                                            //0000=SPI master mode ,clock=Fosc/4,
  NOP();
  PORTC=0X01;                               //拉低时钟信号,片选使能,
  AD_CS=0;                                  //加的
  NOP();
  SSPBUF=(Address/256);                     //发送高8位数据
  NOP();
  while(!SSPIF);                            //发送结束标志位为1时发送结束,为0还在发送数据
  NOP();
  SSPIF=0X00;                               //发送结束标志位清0,等待下次发送数据
  NOP();
  AD_temp=SSPBUF;                           //把接收到到的高8位数据临时放在temp中,
  
  NOP();
  SSPBUF=(Address%256);                     //把要发送的低8位数据放在sspbuf中
  NOP();
  while(!SSPIF);                            //发送结束标志位为1时发送结束,为0还在发送数据
  AD_temp1=SSPBUF;                          //把接收到到的低8位数据临时放在temp1中,
  SSPIF=0X00;                               //发送结束标志位清0,等待下次发送数据
  NOP();

  AD_CS=1;                                  //片选拉到,禁止AD2574工作
         
  NOP();   
// AD_CS=0;
  AD_STAR=0;                                //等数据转换完成后,把复位脚电平拉低复位
  delay(1);                                 //复位时间要延时
  AD_STAR=1;                                //然后把复位脚电平拉高,一次的采集就完成了
  delay(5);   

///////////////////////////////////////////////////////////////////////

  locateXY(0x0C,Y);                         //要显示的行
  
  lcd_datawrite((((AD_temp)-127)/10)+48);     //TLCAD2574可以测量-10v到+10v电压信号,当测量的电压为0v时,AD_temp为128.   
  lcd_datawrite((((AD_temp)-127)%10)+48);     //要写入的数据
  locateXY(0x10,Y);                         //显示小数部分的数值
  lcd_datawrite(((AD_temp1)/26)+48);        //只有它的高四位才是有效的数据
}

相关帖子

沙发
313409689|  楼主 | 2010-1-10 15:07 | 只看该作者
发送数据,SPI通信没有问题,在示波器中能够看到。谢谢。用pic16f877a单片机自带的spi通信硬件

使用特权

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

本版积分规则

1

主题

9

帖子

1

粉丝