TLC549是TI公司的一款串行8位串行ADC模数转换芯片,该芯片有一个模拟输入端口,3态的数据串行输出接口可以方便的和微处理器或外围设备连接。 TLC549仅仅使用输入/输出时钟(I/O CLOCK)和芯片选择(/CS)信号控制数据。最大的输入输出时钟(I/O CLOCK)为1.1MHz。
产品特点:
CMOS技术 | 低功耗数据采集系统 | ||
8位转换结果 | 电池供电系统 | ||
与微处理器或外围设备接口 | 工业控制 | ||
差分基准电压输入 | 工厂自动化系统等 | ||
转换时间:最大17us | |||
每秒访问和转换次数:达到40000 | |||
片上软件控制采样和保持功能 | |||
全部非校准误差:±0.5LSB | |||
宽电压供电:3~6V 封装及引脚 | |||
低功耗:最大15mW | |||
5V供电时输入范围:0~5V | |||
输入输出完全兼容TTL和CMOS电路 | |||
全部非校准误差:±1LSB | |||
工作温度范围:0℃~70℃(TLC549); -40℃~85℃(TLC549I) |
以下是TLC549的引脚图:
各引脚功能如下:
以下是TLC549的51单片机程序,仅供参考!!!
/********************************************************
程序:TLC549 AD转换演示程序(基于TLC549的数字电压表设计)
制作:威智普电子
日期:2010年9月11日
功能:通过TLC549 AD转换芯片进行电压采集,将采集到的信号
以电压的形式通过数码显示出来。
备注:STC89C52RC 11.0592M晶振
说明:学习TLC549 AD转换芯片的和51内部定时器的使用
********************************************************/
/* 头文件和必要声明及数码管的值 */
#include<reg52.h>
#include<intrins.h>
#define led P0
#define uchar unsigned char
#define uint unsigned int
uint Volt; //电压换算并扩大1000倍
uchar num;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
/** 0 1 2 3 4 5 6 7 8 9 */
uchar code table1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
/** 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. */
/* TLC549和数码管为选声明 */
sbit CLK = P2^6; //时钟
sbit DO = P2^5; //数据输出
sbit CS = P2^4; //片选
sbit w1 = P2^0;
sbit w2 = P2^1;
sbit w3 = P2^2;
sbit w4 = P2^3;
/* 延时1ms函数 */
void delay(uint z) // 延时函数
{
uint x,y;
for(x = z; x > 0; x--)
for(y = 110; y > 0; y--);
}
/* 串口初始化函数 */
void init()
{
TMOD=0x01; //设置定时器0为工作方式1(0000 0001)
TH0=(65536-45872)/256; //装初值50ms一次中断
TL0=(65536-45872)%256;
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //启动定时器0
}
/* TLC549芯片AD转换模块 */
uchar TLC549_ADC(void) //TLC549转换函数
{
uchar i, tmp;
CS = 1; //CS置高,片选无效
CLK = 0;
CS = 0; //CS置低,片选有效 ,同时DO输出最高位
_nop_();
_nop_(); //适当延迟时间1.4us 等待启动(大概需要内部系统时钟的两个上升沿和其后的下降沿)
for(i = 0; i < 8; i++) //串行数据移位输入
{
tmp <<= 1;
tmp |= DO;
CLK = 1; //在CLK的下降沿读取数据
_nop_(); //CLK保持低电平一段时间等待数据读出
CLK = 0;
}
CS = 1; //CS置高,DO处于高阻状态,且CLK禁止 (转换完成系统必须马上把CS置高
for(i = 17; i != 0; i--) _nop_(); //转换周期最大17us
return (tmp);
}
/* AD 读数转十进制函数 */
void Data_Conversion(void)
{
uchar AD_Data;
AD_Data = TLC549_ADC();
Volt = 5.0 / 256 * AD_Data * 1000; //扩大1000倍以输出小数
}
/* 数码管显示函数 */
void display()
{
uchar i,j,k;
i = Volt / 1000 ; //个位加小数点
j = Volt / 100 % 10; //十分位
k = Volt / 10 % 10; //百分位
//l = Volt % 10; //个位
w1=0;
led=table1;
delay(1);
w1=1;
w2=0;
led=table[j];
delay(1);
w2=1;
w3=0;
led=table[k];
delay(1);
w3=1;
w4=0;
led=0xc1; //V符号,电压单位
delay(1);
w4=1;
}
/* 主函数 */
void main()
{
init();
while(1)
{
display();
}
}
/* 定时器0服务函数 */
void T0_time() interrupt 1
{
TH0=(65536-45872)/256; //重装初值
TL0=(65536-45872)%256;
num++;
if(num==10) //0.5进行一次采样
{
num=0; //然后把num清0重新计时
Data_Conversion();
}
}
深圳市威智普电子有限公司
销售热线: 0755-83675696 / 83566110-818
传 真: 0755-83675696
QQ: 41540050
地 址: 深圳市福田区滨河大道9003号湖北大厦北座24楼A2
更多产品信息请登录http://www.wellchips.com
文章评论(0条评论)
登录后参与讨论