日志档案

发表于 2008-8-7 18:20:47

3

标签: 单片机  AD模数转换  

串行AD转换器TLC0834的驱动程序

TLC0834是TI公司生产的八位逐次逼近模数转换器,具有输入可配置的多通道多路器和串行输入方式。文中以AT89C51 CPU为核心,采用LTC0834八位串行A/D转换器设计了一个可将模拟信号转换为数字信号的电路。

                                                   

CH0~CH3为模拟输入端;
CS 为片选端;
DI为串行数据输入,该端仅在多路器寻址时(MUX Settling Time)才
被检测;
DO为A/D转换结果的三态串行输出端;
CLK为时钟;
SARS为转换状态输出端,该端为高电平时,表示转换正在进行,为低电平则表示转换
完成;REF为参考电压输入端;
VCC为电源;
DGTL GND为数字地,
ANGL GND为模拟地。

点击看大图

                                                        转换时序图

依照时序写程序如下:

#include<reg51.h>

#define uchar unsigned char

sbit cs="P1"^0;    //0834片选信号,低电平开始一次转换,高电平结束转换
sbit clk="P1"^1;    //0834时钟信号
sbit dat="P1"^2;    //0834模拟输入端进行配置及输出转换所得的数据


/****************************************
                      TLC0834
*****************************************/
uchar tlc_read(bit SGL,bit ODD,bit Bit1)
{

    uchar i,dig1,dig2;
  
 clk=0;          //发送输入配置端信号时为上升沿触发
 cs=0;
 dat=1;           //发送start bit
 clk=1;

 clk=0;
 dat=SGL;         //发送SGL
 clk=1;

 clk=0;
 dat=ODD;         //发送ODD
 clk=1;

 clk=0;
 dat=Bit1;        //发送Bit 1
 clk=1;

 clk=0;           //时钟交换变成下降沿触发
 
 for(i=8;i>0;i--)
 {
  dig1=dig1|dat;    //第一次输出数据是高位在前低位在后
  dig1=dig1<<1;
  clk=1;            //输出数据为下降沿触发
  dat=1;            //先写1后再读,否则读出的数据不可预期 这一点很重要!!!
  clk=0;
 }

dig1=dig1|dat;    //上面循环差最后一次赋值,同时这个值也是下一个循环的第一位数据!!!

 for(i=8;i>0;i--)
 {
  dig2=dig2>>1;   //第二次输出数据是低位在前高位在后
  if(dat)
  {
   dig2=dig2|0x80;
  }
  clk=1;
  dat=1;          //先写1后再读,否则读出的数据不可预期 很重要的一点!!!
  clk=0;
 }


 cs=1;           //结束转换

 if(dig1==dig2)       //判断两次输出结果是否一致
 return(dig1);         //一致就输出

}

/************************************
                      主函数
*************************************/
void main(void)    
{
 while(1)
 {
 P2=tlc_read(1,0,0);   //选择CH0端口输入模拟信号
 }
}
  

资料、程序及仿真都在附件里,如果觉得可以别忘了顶一下,对了再提醒一次,在写数据前一定要先写入 1!(我也是开始写时也不知道,幸好在网上找到了)点击下载

系统分类: 单片机   |   用户分类: 实验   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(177)    回复(3)  

投一票您将和博主都有获奖机会!

  • 446793636

    2008-8-8 15:11:21

    有没DAC0832的

  • lmjxf

    2008-8-9 12:47:31

    暂时还没用过,怎么兄弟现在在用?

  • wangjushi

    2008-8-10 14:28:38

    dadadadad 一看