#include <reg51.h>
#include "TLC549.c"
code uchar seven_seg[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; //0--9
uchar cp, j;
uint dat_ad; //模拟信号
void timer0_init(void); //声明中断初始化函数
void timer0_isr(void); //声明中断服务函数
/**************************主函数***************************/
void main(void)
{
timer0_init(); // 中断初始化函数
tlc549_init(); //tlc549初始化函数
while(); //循环
}
/**********************中断初始化函数***********************/
void timer0_isr(void) interrupt
{
TH0 = 0xf8;
TL0 = 0x2f;
cp++;
if(cp >= ) // 0.5秒让ADC0832转换一次
{
cp = ;
dat_ad = tlc549_ad() * 1.96; // ,模拟信号转化为数字信号
}
P0 = 0xff;
switch(j)
{
case : P0 = seven_seg[dat_ad % ]; P2 = ~0x01; break; //模拟信号
case : P0 = seven_seg[dat_ad % / ]; P2 = ~0x02; break;
case : P0 = seven_seg[dat_ad / ] & 0x7f; P2 = ~0x04; break; //模拟信号三位
case : P0 = seven_seg[tlc549_ad() % ]; P2 = ~0x08; break; //数字信号
case : P0 = seven_seg[tlc549_ad() % / ]; P2 = ~0x10; break;
case : P0 = seven_seg[tlc549_ad() / ]; P2 = ~0x20; break; //数字信号三位
}
j++;
if(j >= ) //共六位
j = ;
} void timer0_init(void) //中断初始化函数
{
TMOD = 0x01; //方式一
TH0 = 0xf8;
TL0 = 0x2f; //对机器脉冲计数,2000个计满溢出引发中断
EA = ; //总中断
ET0 = ; //T0中断
TR0 = ; //启动定时器T0
} /****************************************************************************************/
/*************************************TLC549的驱动程序***********************************/
/*TLC549模数转换将连续变化的模拟信号转换为离散的数字信号V = 5 / 256 = 0.01953v = 19.53mv*/
/****************************************************************************************/
#define uchar unsigned char //宏定义用uchar 代替 unsigned char (0--255)
#define uint unsigned int //宏定义用uint 代替 unsigned int (0--65535) sbit SCLK = P3^; //I/O时钟
sbit CS = P3^;      //片选
sbit SDO = P3^; //数据线
/***********************TLC549初始化**************************/
void tlc549_init(void)
{
CS = ; //初始化,启动
SCLK = ;
CS = ;
}
/**********************TLC549数据转换*************************/
uchar tlc549_ad(void)
{
uchar i, dat_temp = ;
tlc549_init();
for(i = ; i < ; i++) //读取采集数据,读取的是上一次采集的数据
{
SCLK = ;
dat_temp <<= ;
if(SDO)dat_temp |= 0x01;
SCLK = ;
}
CS = ;
return(dat_temp);
}
TLC549应用
() TLC的作用
TLC549是 TI公司生产的一种低价位、高性能的8位 A/D转换器,采用了CMOS工艺,它以8位开关电容逐次逼近的方法实现 A/D转换,其转换速度小于 17us,最大转换速率为 40000HZ,4MHZ典型内部系统时钟,电源为 3V至 6V。它能方便地采用三线串行接口方式与各种微处理器连接,构成各种廉价的测控应用系统。能够实现模拟信号到数字信号的转换。 () 对TLc549的认识
模拟信号到数字信号的转换。
()工作原理
当/CS变为低电平后, TLC549芯片被选中, 同时前次转换结果的最高有效位MSB (A7)自 DATA OUT 端输出,接着要求自 I/O CLOCK端输入8个外部时钟信号,前7个 I/OCLOCK信号的作用,是配合 TLC549 输出前次转换结果的 A6-A0 位,并为本次转换做准备:在第4个 I/O CLOCK 信号由高至低的跳变之后,片内采样/保持电路对输入模拟量采样开始,第8个 I/O CLOCK 信号的下降沿使片内采样/保持电路进入保持状态并启动 A/D开始转换。转换时间为 个系统时钟周期,最大为 17us。直到 A/D转换完成前的这段时间内,TLC549 的控制逻辑要求:或者/CS保持高电平,或者 I/O CLOCK 时钟端保持36个系统时钟周期的低电平。由此可见,在自 TLC549的 I/OCLOCK 端输入8个外部时钟信号期间需要完成以下工作:读入前次A/D转换结果;对本次转换的输入模拟信号采样并保持;启动本次 A/D转换开始。
()器件的作用
Pot-hg:产生0~5V的电压,作为模拟信号,传递给tlc549.
数码管:显示数字信号和模拟信号的数值
Respack_8:驱动,电流不够,加排阻增加电流,排阻一般有九个脚,一个脚接VCC,其他脚接单片机I/o口,比如说P0口,一般需要加排阻。
7404反相器:增大电流
Tlc549: 模拟信号到数字信号的转换。


tlc549的更多相关文章

  1. AD_TLC549采集模拟信号

    AD_TLC549采集模拟信号 实验原理 芯片介绍 TLC549是 TI公司生产的一种低价位.高性能的8位A/D转换器,它以8位开关电容逐次逼近的方法实现 A/D转换,其转换速度小于 17us,最大转 ...

  2. 基于FPGA的电压表与串口通信(上)

    实验原理 该实验主要为利用TLC549采集模拟信号,然后将模拟信号的数字量通过串口发送到PC上上位机进行显示,使用到的TLC549驱动模块在进阶实验已经使用到了,串口模块在基础实验也已经使用到了,本实 ...

  3. 目前常用AD/DA芯片简介

    目前生产AD/DA的主要厂家有ADI.TI.BB.PHILIP.MOTOROLA等,武汉力源公司拥有多年从事电子产品的经验和雄厚的技术力量支持,已取得排名世界前列的模拟IC生产厂家ADI.TI公司代理 ...

  4. verilog实验3:AD转换后串口输出到PC端

    一.实验任务 通过tcl549AD转换芯片将模拟电压信号转换为数字信号,并通过串口显示到电脑上.此AD转换芯片为串行转换芯片,且转换速率要和串口选择的速率匹配.等待串口发送完后,再进行下一次AD转换. ...

  5. 学习AD、DA的体会

    AD转换器的转换是指模拟信号输入转化为数字信号输出,而DA转换器是把数字信号转换为模拟信号,在ADC0832.TLC549和TLC5615程序设计中,通过使用中断服务函数每0.5s对ADC0832进行 ...

  6. FPGA/SOPC学习转载

    转自小時不識月http://www.cnblogs.com/yuphone/archive/2010/08/27/docs_plan.html 新网址为:http://andrewz.cn [连载计划 ...

随机推荐

  1. Appium+python自动化(三十二)- 代码写死一时爽,框架重构火葬场 - PageObject+unittest(超详解)

    简介 江湖有言:”代码写死一时爽,框架重构火葬场“,更有人戏言:”代码动态一时爽,一直动态一直爽

  2. Redis 5.0.5集群搭建

    Redis 5.0.5集群搭建 一.概述 Redis3.0版本之后支持Cluster. 1.1.redis cluster的现状 目前redis支持的cluster特性: 1):节点自动发现 2):s ...

  3. c中自增自减的妙用

    #include <stdio.h> int main() { ; printf("%d,%d,%d,%d",i++;i--;++i;--i); /*运算从右往左运算 ...

  4. js中的数据类型,以及如何检测数据类型

    基本数据类型:string,number,boolean,null,undefined,symbol 引用数据类型:object(array,function...) 常用的检测数据类型的方法一般有以 ...

  5. 第一个Javaweb应用程序

    第一个Javaweb应用程序 一.Javaweb应用程序结构 一个 web 应用程序是由一组 Servlet,HTML 页面,类,以及其它的资源组成的运行在 web 服务器上的完整的应用程序,以一种结 ...

  6. Java IO体系之RandomAccessFile浅析

    Java IO体系之RandomAccessFile浅析 一.RandomAccessFile综述: 1.1RandomAccessFile简介 RandomAccessFile是java Io体系中 ...

  7. Oracle数据库测试和优化最佳实践: OTest介绍 (转)

    当前Oracle数据库最佳测试工具OTest *  Otest是用于Oracle数据库测试.优化.监控软件. *  Otest是免费提供给Oracle客户和广大DBA工程师使用的软件.由原厂技术专家王 ...

  8. P1963 [NOI2009]变换序列 倒叙跑匈牙利算法

    题意 构造一个字典序最小的序列T,使得 Dis(i, Ti) = di,其中i是从0开始的,Dis(x,y)=min{∣x−y∣,N−∣x−y∣} ,di由题目给定. 思路 二分图匹配,把左边的看成i ...

  9. bzoj 1146 网络管理Network (CDQ 整体二分 + 树刨)

    题目传送门 题意:求树上路径可修改的第k大值是多少. 题解:CDQ整体二分+树刨. 每一个位置上的数都会有一段持续区间 根据CDQ拆的思维,可以将这个数拆成出现的时间点和消失的时间点. 然后通过整体二 ...

  10. lightoj 1060 - nth Permutation(组合数+贪心)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1060 题解:如果是不重复数的这些操作可以用康托展开的逆来求,如果是有重复数字出 ...