找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5046|回复: 2
收起左侧

51单片机驱动TLC2543 12位串行A/D转换器

[复制链接]
ID:124161 发表于 2016-6-7 17:44 | 显示全部楼层 |阅读模式

先介绍下TLC2543芯片的一些基本资料。(1)12位分辨率,10us转换时间 (2)11路模拟输入通道,3路内置自测模式 (3)固有取样和保持功能,线性误差最大为1LSB(4)片上系统时钟,转换结束(EOC)输出(5)单级或双极输出操作 (6)可设计的输出数据最高位或最低位在前,可设计的电源中断,可设计输出数据长度。TLC2543的引脚如下图所示
0.png

其中(1)AIN0~AIN10:11路模拟输入引脚(2)CS:片选引脚(3)DATA INPUT:串行数据输入引脚(4)DATA OUT:串行输出引脚(5)EOC:为转换结束引脚(6)I/O CLOCK:时钟引脚(7)REF+:基准电压正引脚,通常为VCC(8)REF-:基准电压负引脚,通常为GND (9)VCC:正电源引脚(10)GND:地信号引脚。


TLC2543芯片的一些基本资料。(1)12位分辨率,10us转换时间 (2)11路模拟输入通道,3路内置自测模式 (3)固有取样和保持功能,线性误差最大为1LSB(4)片上系统时钟,转换结束(EOC)输出(5)单级或双极输出操作 (6)可设计的输出数据最高位或最低位在前,可设计的电源中断,可设计输出数据长度。


  1. #include<reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit cs=P1^0;
  5. sbit clk=P1^3;
  6. sbit sdi=P1^4;
  7. sbit sdo=P1^5;
  8. sbit bit7=B^7;
  9. sbit freq_out=P3^7;
  10. bit cy;
  11. uint adval,volt,froq;
  12. uchar temp;
  13. uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,
  14.              0x92,0x82,0xf8,0x80,0x90};
  15. void delayms(uint ms)
  16. {
  17. uchar j;
  18. while(ms--)
  19.     {
  20. for(j=0;j<120;j++);
  21. }
  22. }
  23. void delay()
  24. {
  25. uint i=5;
  26. while(i--);
  27. }
  28. void readADC(int ch)
  29. {
  30. uchar i;
  31. clk=0;
  32. cs=1;
  33. delay();
  34. cs=0;//CS=0开始转换
  35. B=ch;
  36. for(i=8;i>0;i--)
  37.       {
  38.    cy=sdo;
  39.    sdi=bit7;
  40.    clk=1;
  41.    B=B<<1;
  42.    clk=0;
  43.    temp=temp<<1;
  44.    if(cy==1)
  45.      temp++;
  46.    }
  47.     adval=temp;
  48. adval=adval<<4;
  49. for(i=4;i>0;i--)
  50.     {
  51.     cy=sdo;
  52.     temp=temp<<1;
  53.     if(cy==1)
  54.       temp++;
  55.    clk=1;
  56.    clk=0;
  57.     }
  58.    cs=1;//十二位读数完毕,结束转换。
  59.    adval +=temp;
  60.    volt=adval;
  61.    froq=adval;
  62.    }
  63. void resultvolt()
  64.    {
  65.    volt=volt*5000.0/4334;//转换成电压显示
  66.    }
  67. void resultfroq()
  68.    {
  69.     froq=1000000.0/froq*2/2.0;//转换频率数值
  70.    }
  71. void displayvolt(uint dat)
  72.    {
  73.    P2=0x10;
  74.    P0=tab[dat/1000]&0x7f;
  75.    delayms(1);
  76.    P0=0xff;
  77.    P2=0x20;
  78.    P0=tab[dat%1000/100];
  79.    delayms(1);
  80.    P0=0xff;
  81.    P2=0x40;
  82.    P0=tab[dat%100/10];
  83.    delayms(1);
  84.    P0=0xff;
  85.    P2=0x80;
  86.    P0=tab[dat%10];
  87.    delayms(1);
  88.    P0=0xff;
  89.    }
  90. void displayfroq(uint dat)
  91.    {
  92.    P2=0x01;
  93.    P0=tab[dat/1000]&0x7f;
  94.    delayms(1);
  95.    P0=0xff;
  96.    P2=0x02;
  97.    P0=tab[dat%1000/100];
  98.    delayms(1);
  99.    P0=0xff;
  100.    P2=0x04;
  101.    P0=tab[dat%100/10];
  102.    delayms(1);
  103.    P0=0xff;
  104.    P2=0x08;
  105.    P0=tab[dat%10];
  106.    delayms(1);
  107.    P0=0xff;
  108.    }
  109. void t0_int() interrupt 1
  110.    {
  111.    TH0=-froq/256;
  112.    TL0=-froq%256;
  113.    }
  114. void t0_init(void)
  115.    {
  116.    TMOD=0x01;
  117.    ET0=1;
  118.    TR0=1;
  119.    EA=1;
  120.    }
  121. void main()
  122. {
  123.    t0_init();
  124.    P2=0xff;
  125.    P0=0xff;
  126.    while(1)
  127.    {
  128.    readADC(0);
  129.    delayms(1);
  130.    resultvolt();
  131.    resultfroq() ;
  132.   displayfroq(froq);
  133.    displayvolt(volt);
  134.    }
  135. }
复制代码
0.png
全部资料(压缩包)下载:
TLC2543 中文使用手册.doc (109 KB, 下载次数: 27)
回复

使用道具 举报

ID:304667 发表于 2018-4-9 19:30 | 显示全部楼层
你好 sbit bit7=B^7;这句话什么意思
回复

使用道具 举报

ID:538025 发表于 2019-5-14 18:31 来自手机 | 显示全部楼层
freebike 发表于 2018-4-9 19:30
你好 sbit bit7=B^7;这句话什么意思

你也不知道是吧,我也弄不懂,应该是他自己定义的吧,不过我试了,精度偏差0.4V,你下载了电路图么,我想要看一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表