TLC2543驱动程序

电子常识

2640人已加入

描述

  TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。由于是串行输入结构,能够节省51系列单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。

  TLC2543的特点

  (1)12位分辩率A/D转换器;

  (2)在工作温度范围内10μs转换时间;

  (3)11个模拟输入通道;

  (4)3路内置自测试方式;

  (5)采样率为66kbps;

  (6)线性误差±1LSBmax;

  (7)有转换结束输出EOC;

  (8)具有单、双极性输出;

  (9)可编程的MSB或LSB前导;

  (10)可编程输出数据长度。

  接下来大家一起了解一下关于TLC2543的驱动程序。

  TLC2543驱动程序

  #include

  #define uint unsigned int

  #define uchar unsigned char

  sbit clock = P0^0; //输入、输出时钟端

  sbit input = P0^1; //数据输入端

  sbit output = P0^2; //数据输出端

  sbit CS = P0^3; //片选端,负电平有效

  void delay(uchar N)

  {

  while(N--);

  }

  uint read2543(uchar CON_WORD) //CON_WORD为选择的通道,为0--10

  {

  uint ad=0;

  uchar i;

  CON_WORD〈〈=4;

  clock=0; CS=0;

  for(i=0;i《12;i++)

  {

  if(output==1) //读取DATAOUT

  ad=ad|0x01;

  if(CON_WORD&0x80) //读取控制字到

  INPUT input=1;

  else

  input=0;

  clock=1;

  delay(10);

  clock=0;

  delay(10);

  CON_WORD《《=1;

  ad《《=1;

  }

  CS=1;

  ad》》=1;

  return(ad);

  }

  void init_serial() //初始化串口

  {

  TMOD=0x20; //定时器T1使用工作方式2

  TH1=250; //设置初值

  TH0=250;

  TR1=1; //开始计时

  PCON=0x80; //SMOD=1;

  SCON=0x50; //工作方式1,波特率9600bit/s,允许接收 TI=1;

  }

  void main()

  {

  uint ad=0;

  float fVoltage1;

  uchar buf[5],i;

  init_serial();

  IE=0; //屏蔽中断

  while(1)

  {

  ad=read2543(0);

  fVoltage1=(float)ad/0x0fff*5;

  buf[0]=(uchar)fVoltage1;

  buf[0]=buf[0]+0x30;

  buf[1]=‘’.‘

  buf[2]=(uchar)(fVoltage1*10)%10;

  buf[2]=buf[2]+0x30;

  buf[3]=(uchar)(fVoltage1*100-

  buf[0]*100)%10;

  buf[3]=buf[3]+0x30;

  buf[4]=(uchar)((fVoltage1*1000)-buf[0]*1000-

  buf[1]*100)%10;

  buf[4]=buf[4]+0x30; i=0;

  while(i《5)

  {

  if(TI==1)

  {

  SBUF=buf[i];

  TI=0;

  i++;

  }

  }

  }

  }

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
爱漂_windy 2018-04-10
0 回复 举报
请问在read2543函数中,最后一部分 _CS=1; ad>>1; return(ad);为什么还要对ad再右移一位呢? 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分