打印

请教ADC0832初始化问题!!请用过的前辈指点一下!!

[复制链接]
2898|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
单片机:STC89C52RC
模数转换:ADC0832CCN
本人第一次使用模数转换,自己做了一个最小系统,CH0单通道工作,数码管显示,可是在使用过程中数码管一直显示0;不清楚什么原因,测量ADC0832CCN电压状态全部正常,怀疑是ADC0832CCN初始化不正常或数据转换有问题,希望使用过的前辈帮帮忙!!指点一下;
还想请教一下,看模数或数模转换芯片的DATASHEET时除了看时序图外,还需要看那个部分,那部分对芯片初始话有影响!是否需要一定的延时处理!

部分代码:
unsigned char A_D()
{
unsigned char i;
unsigned char dat=0;

DI=1;
_nop_();

CLK=0;
_nop_();
     
CS=0;//片选有效  

CLK=0;//时钟初始化     
_nop_();

DI=1;//起始位
_nop_();
      
CLK=1;//时钟1上升沿

CLK=0;//时钟1下降沿   
_nop_();

DI=1;//单通道选择 CH0
_nop_();
     
CLK=1;//时钟2上升沿

CLK=0;//时钟2下降沿   
_nop_();

DI=0;//单通道选择 CH0
_nop_();
     
CLK=1;//时钟3上升沿
CLK=0;//时钟3下降沿   
_nop_();
DI=1;
CLK=1;//时钟4上升沿
for(i=0;i<8;i++)   //处理读入8位数据   
{   
CLK=0;   
_nop_();   
dat=(dat<<1)|DO;   
_nop_();   
CLK=1;   
}  
CS=1;//片选无效
return(dat); //返回转换值
}

主函数:
main(void)
{
  float AD_val;    //储存A/D转换后的值
   unsigned int x[3];
   while(1)
      {   
     AD_val=A_D();  //进行A/D转换   
     x[0]=(int)(AD_val*(5/256))%10;
     x[1]=(int)((AD_val*(5/256))*10)%10;
     x[2]=(int)((AD_val*(5/256))*100)%10;
     P2=DSY_CODE[x[0]];
     P3=DSY_CODE[x[1]];
     P0=DSY_CODE[x[2]];      
   }
}

相关帖子

沙发
amwrdfe| | 2012-5-8 15:27 | 只看该作者
拿上示波器,对着datasheet慢慢看~。

使用特权

评论回复
板凳
kinglinlin88|  楼主 | 2012-5-8 15:30 | 只看该作者
条件有限!手里没有示波器,比较郁闷!!!

使用特权

评论回复
地板
kinglinlin88|  楼主 | 2012-5-9 15:09 | 只看该作者
等待指点!!!

使用特权

评论回复
5
kinglinlin88|  楼主 | 2012-5-10 23:03 | 只看该作者
顶!

使用特权

评论回复
6
kinglinlin88|  楼主 | 2012-5-11 21:56 | 只看该作者
顶!

使用特权

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

本版积分规则

7

主题

48

帖子

1

粉丝