先介绍下TLC2543芯片的一些基本资料。(1)12位分辨率,10us转换时间 (2)11路模拟输入通道,3路内置自测模式 (3)固有取样和保持功能,线性误差最大为1LSB(4)片上系统时钟,转换结束(EOC)输出(5)单级或双极输出操作 (6)可设计的输出数据最高位或最低位在前,可设计的电源中断,可设计输出数据长度。TLC2543的引脚如下图所示
其中(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)可设计的输出数据最高位或最低位在前,可设计的电源中断,可设计输出数据长度。
- #include<reg51.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit cs=P1^0;
- sbit clk=P1^3;
- sbit sdi=P1^4;
- sbit sdo=P1^5;
- sbit bit7=B^7;
- sbit freq_out=P3^7;
- bit cy;
- uint adval,volt,froq;
- uchar temp;
- uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,
- 0x92,0x82,0xf8,0x80,0x90};
- void delayms(uint ms)
- {
- uchar j;
- while(ms--)
- {
- for(j=0;j<120;j++);
- }
- }
- void delay()
- {
- uint i=5;
- while(i--);
- }
- void readADC(int ch)
- {
- uchar i;
- clk=0;
- cs=1;
- delay();
- cs=0;//CS=0开始转换
- B=ch;
- for(i=8;i>0;i--)
- {
- cy=sdo;
- sdi=bit7;
- clk=1;
- B=B<<1;
- clk=0;
- temp=temp<<1;
- if(cy==1)
- temp++;
- }
- adval=temp;
- adval=adval<<4;
- for(i=4;i>0;i--)
- {
- cy=sdo;
- temp=temp<<1;
- if(cy==1)
- temp++;
- clk=1;
- clk=0;
- }
- cs=1;//十二位读数完毕,结束转换。
- adval +=temp;
- volt=adval;
- froq=adval;
- }
- void resultvolt()
- {
- volt=volt*5000.0/4334;//转换成电压显示
- }
- void resultfroq()
- {
- froq=1000000.0/froq*2/2.0;//转换频率数值
- }
- void displayvolt(uint dat)
- {
- P2=0x10;
- P0=tab[dat/1000]&0x7f;
- delayms(1);
- P0=0xff;
- P2=0x20;
- P0=tab[dat%1000/100];
- delayms(1);
- P0=0xff;
- P2=0x40;
- P0=tab[dat%100/10];
- delayms(1);
- P0=0xff;
- P2=0x80;
- P0=tab[dat%10];
- delayms(1);
- P0=0xff;
- }
- void displayfroq(uint dat)
- {
- P2=0x01;
- P0=tab[dat/1000]&0x7f;
- delayms(1);
- P0=0xff;
- P2=0x02;
- P0=tab[dat%1000/100];
- delayms(1);
- P0=0xff;
- P2=0x04;
- P0=tab[dat%100/10];
- delayms(1);
- P0=0xff;
- P2=0x08;
- P0=tab[dat%10];
- delayms(1);
- P0=0xff;
- }
- void t0_int() interrupt 1
- {
- TH0=-froq/256;
- TL0=-froq%256;
- }
- void t0_init(void)
- {
- TMOD=0x01;
- ET0=1;
- TR0=1;
- EA=1;
- }
- void main()
- {
- t0_init();
- P2=0xff;
- P0=0xff;
- while(1)
- {
- readADC(0);
- delayms(1);
- resultvolt();
- resultfroq() ;
- displayfroq(froq);
- displayvolt(volt);
- }
- }
复制代码
全部资料(压缩包)下载:
TLC2543 中文使用手册.doc
(109 KB, 下载次数: 27)
|