0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于51单片机+TLC549芯片的简易电压采集系统设计

CHANBAEK 来源:逗比小憨憨 作者:逗比小憨憨 2023-06-16 16:28 次阅读

一,TLC549简介

TLC549是美国德州仪器公司生产的8位串行A/D转换器芯片,可与通用微处理器控制器通过CLK、CS、DATAOUT三条口线进行串行接口。具有4MHz片内系统时钟和软、硬件控制电路,转换时间最长17μs,TLC549为40000次/s。总失调误差最大为±0.5LSB,典型功耗值为6mW。采用差分参考电压高阻输入,抗干扰,可按比例量程校准转换范围,VREF-接地,VREF+-VREF-≥1V,可用于较小信号的采样。

图片

引脚定义:

  1. REF+:正基准信号输入端
  2. ANALOG IN:模拟信号输入端
  3. REF-:负基准电压输入端
  4. GND:接地端
  5. #CS:片选信号,低电平有效
  6. DATA OUT:转换结果串行输出端
  7. I/O CLOCK:外接时钟输入端
  8. VCC:电源输入端

通信协议:

图片

TLC549均有片内系统时钟,该时钟与I/O CLOCK是独立工作的,无需特殊的速度或相位匹配。其工作时序如图2所示。当CS为高时,数据输出(DATA OUT)端处于高阻状态,此时I/O CLOCK不起作用。当CS为低时,AD前一次转换的数据A的最高位A7立马出现在数据线DATA OUT上,其余七位在I/O CLOCK的下降沿依次由时钟同步输出,,因此可在I/O CLOCK的上升沿读取数据,其中值得注意的是:1.图中他tsu(cs)至少要1.4us;2.I/O CLOCK不能超过1.1MHz。读完8位数据后,AD开始转换这一次转换的采样数据B,以便下一次读取转换时,片选信号CS置高,每次转换不超过17us,开始于CS拉低后的第八个I/O CLOCK的下降沿,没有转换完成标志,没有启动控制端,只要读取前一次数据后就马上可以开始新的AD转换,转换完成进入保持状态。

(翻译-摘自TLC549官方芯片参考手册)

二,Proteus仿真

图片

Proteus连线图

三,程序源代码

/*
*@brief:    51系列单片机+TLC549制作简单的电压采集系统
*@author: 逗比小憨憨
*@website:  https://space.bilibili.com/314404732
*/
#include < reg52.h >
#include < intrins.h >

#define uchar unsigned char 
#define uint  unsigned int  

sbit	dout=P1^0;//数据输出端
sbit 	clock=P1^2;//时钟线
sbit	cs=P1^1;//片选(低电平有效)

uchar TLC549_Obtain(void);
uchar TLC549_Read(void);
void Display_Data(uchar dat);
void Uart_Init(void);
void delay_xms(uint t);


void delay_xms(uint xms)
{
	uint i,j;
	for(i = 0; i < xms; i++)
		for(j = 0; j < 115; j++);
}                                      


void main(void)
{ 
	uchar TLC549_Data;   
 	Uart_Init();

	while(1)
	{
		TLC549_Data = TLC549_Obtain(); 
		Display_Data(TLC549_Data);     
		delay_xms(500);	 
	}						 
}


void Uart_Init(void)
{
	TMOD |= 0X20; 
	TL1 = 0XFD;
	TH1 = 0XFD;	  
	SCON = 0x50;
	PCON = 0;
	EA = 1;
	PS = 1;
	TR1 = 1;
}

uchar TLC549_Read(void)
{
	uchar n=0, tmp;	
	cs = 1;                     //CS置高,片选无效
	clock = 0;
	cs = 0;                     //CS置低,片选有效,同时DO输出高位
	_nop_();
	_nop_();                     //适当延迟时间1.4us Setup Time	

	for(n = 0; n < 8; n++) //串行数据移位输入
	{ 
	    tmp < <= 1;			
	    tmp |=  dout;
	    clock = 1;        //0.4us
	    _nop_();        //延迟0.1us
	    clock = 0;        //0.4us
	}
	cs = 1;            //CS置高,片选无效
	for(n = 17; n != 0; n--) 
		_nop_();  //下一次转换需要延迟17us
	return tmp;
}

/*
*	TLC549数据获取
*/
uchar TLC549_Obtain(void)
{
	uchar dat;
	dat=TLC549_Read();
	return dat;
}

void Display_Data(uchar dat)
{
	int disdat;
	uchar dis[4];
	uchar i = 0;
  	disdat = (int)(5.0*dat / 256 * 100);
	dis[0] = disdat/100+'0';
	dis[1] = 0x2e;
	dis[2] = disdat%100/10+'0';
	dis[3] = disdat%10+'0';
	while(i < 4)
	{
		SBUF = dis[i];
		while(!TI);
		TI = 0;	
		i ++;
	}
	SBUF = 0x0a;
	while(!TI);
	TI = 0;	
	SBUF = 0x0d;
	while(!TI);
	TI = 0;		
}

四,运行效果图

图片

运行效果图

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 转换器
    +关注

    关注

    27

    文章

    8621

    浏览量

    146828
  • 控制器
    +关注

    关注

    112

    文章

    16185

    浏览量

    177333
  • 通信协议
    +关注

    关注

    28

    文章

    854

    浏览量

    40250
  • 51单片机
    +关注

    关注

    273

    文章

    5697

    浏览量

    123127
  • 电压采集
    +关注

    关注

    2

    文章

    21

    浏览量

    14170
收藏 人收藏

    评论

    相关推荐

    基于单片机TLC549的数控直流电流源的设计

    基于单片机TLC549的数控直流电流源的设计,单片机通过D/A转换器来控制功率放大器输出电压,通过取样电阻和A/D转换器回检负载电流,采用积分控制方法,调节电流输出。通过取样电阻采样
    发表于 02-19 09:59 3423次阅读
    基于<b class='flag-5'>单片机</b>和<b class='flag-5'>TLC549</b>的数控直流电流源的设计

    基于TLC549数字电压表的设计

    本文对基于TLC549数字电压表的设计进行了分析,主要介绍了TLC549A/D转换器引脚图及功能、TLC549内部结构、TLC549时序逻辑
    发表于 02-19 10:23 1.1w次阅读
    基于<b class='flag-5'>TLC549</b>数字<b class='flag-5'>电压</b>表的设计

    基于TLC549工作时序编程技术研究

    【摘要】:以单片机为核心的控制系统,利用汇编语言程序设计实现整个系统的控制过程。在软件方面,结合TLC549串行8位A/D转换器的工作时序,给出AT89C
    发表于 04-24 10:00

    求8086通过8255读取TLC549的汇编!!

    这个TLC549是用在SPI总线下的串行AD转换器,网上多是51单片机模拟SPI总线的程序(c和汇编),所以我也用8086+8255模拟了一下,却总是出不来正确结果,求一段8086汇编
    发表于 04-29 22:13

    求8086通过8255读取TLC549的汇编!!

    这个TLC549是用在SPI总线下的串行AD转换器,网上多是51单片机模拟SPI总线的程序(c和汇编),所以我也用8086+8255模拟了一下,却总是出不来正确结果,求一段8086汇编{:3:}{:3:}
    发表于 04-29 22:15

    基于TLC549电压表 (测试程序)

    在前天,我还不知道有TLC549这款芯片,不得不说是孤陋寡闻了,本来是帮朋友 做的,可惜我也是菜鸟,还没帮他搞定。不过仿真通过了,小弟我不敢藏私,特地献出来与大家共享,不足之处还请拍砖这是仿真结果这是程序,我放在附件里了。[groupid=618]
    发表于 08-10 21:29

    TLC549的仿真与逻辑代码问题

    基于TLC549电压表 (测试程序)用TLC549ADC和ZLG7290设计一个简易数字电压表对特权FPGA控制ADC
    发表于 08-29 17:08

    基于TLC549工作时序编程技术研究

      以单片机为核心的控制系统,利用汇编语言程序设计实现整个系统的控制过程。在软件方面,结合TLC549串行8位A/D转换器的工作时序,给出AT89C
    发表于 02-11 12:40 98次下载

    TLC549英文

    TLC549数据手册,有需要的下来看看。
    发表于 12-16 22:19 0次下载

    TLC549程序

    TLC549工作原理TLC549是TI 公司生产的- 一种性价比非常高的8位A/D 转换器,它以8位开关电容逐次逼近的方法实现A/D 转换,其转换速度小于17us,它能方便地采用三线串行接方式与各种微处理器连接,构成各种廉价的测控应用
    发表于 11-22 18:14 2584次阅读
    <b class='flag-5'>TLC549</b>程序

    tlc549单片机连接图

    TLC549 是采用IinCMOSTM 技术并以开关电容逐次逼近原理工作的8 位串行A / D7 芯片,可与通用微处理器、控制器通过I/0 CLOCK、CS、DATA OUT.三条口线进行串行接口
    发表于 11-23 10:14 6564次阅读
    <b class='flag-5'>tlc549</b>与<b class='flag-5'>单片机</b>连接图

    tlc549中文资料汇总_tlc549引脚图及功能_工作原理_特性参数及典型应用电路程序

    主要介绍了tlc549中文资料汇总_tlc549引脚图及功能_工作原理_特性参数及典型应用电路程序。TLC549是8位串行A/D转换器芯片,可与通用微处理器、控制器通过CLK、CS、D
    发表于 12-19 09:08 5.4w次阅读
    <b class='flag-5'>tlc549</b>中文资料汇总_<b class='flag-5'>tlc549</b>引脚图及功能_工作原理_特性参数及典型应用电路程序

    基于单片机TLC549的多功能智能照明系统

    主要介绍了基于单片机TLC549的多功能智能照明系统,以单片机为控制芯片,光敏电阻采集光信号并
    发表于 02-19 09:41 5268次阅读
    基于<b class='flag-5'>单片机</b>和<b class='flag-5'>TLC549</b>的多功能智能照明<b class='flag-5'>系统</b>

    基于TLC549的数据采集系统设计

    本文分析了基于TLC549的数据采集系统设计,分析了TLC549芯片的主要参数和工作原理,利用了TLC5
    发表于 12-19 11:35 6670次阅读
    基于<b class='flag-5'>TLC549</b>的数据<b class='flag-5'>采集</b><b class='flag-5'>系统</b>设计

    如何使用状态实现对TLC549的采样控制

    本文档的主要内容详细介绍的是如何使用状态实现对TLC549的采样控制。
    发表于 08-07 17:39 9次下载
    如何使用状态<b class='flag-5'>机</b>实现对<b class='flag-5'>TLC549</b>的采样控制