原创 模数转换芯ADC-TLC0834的Proteus电路仿真

2007-1-24 06:32 6902 9 15 分类: MCU/ 嵌入式

调试笔记:


1、TLC0834为逐次逼近ADC,精度8bit ,四通道模拟量输入(0~5V),可设置成四通道单端方式或二通道差分方式;转换后的8bit为无符号整型值 !当单端方式时,模拟输入量与模拟地相差后送入比较器,输出值在0~255之间(对应0~Vref);当差分输入方式时,两输入端的正负极电压相差后送入比较器,该值达到Vref时则输出满刻度值255,当差分输入正极端电压小于负极端电压时,一律输出为0;参见DatShts:


...... When the signal input applied to the assigned positive terminal is less than the signal on the negative terminal, the converter output is all zeros.


2、CLK引脚的时钟输入既是TLC0834与CPU通讯的串行时钟脉冲,同时也是ADC内部比较器的工作脉冲。本仿真中采用AT89C52单片机,设置的晶振频率为12.0mHz,则软件模拟方式最大发出的方波频率为500kHz(两条引脚置位复位指令交替循环,一个脉冲周期2us,f=500kHz) ! 这个频率仍在TLC0834内部比较器的工作频率之内(fclk =10khz~600khz);


3、照TLC0834与CPU串行通讯时序要求,CPU发送启动位及通道选择位——后,再发送8个工作时钟脉冲毕,TLC0834一次AD转换结束,其完成一次转换需要的时间为13.3333us(600khz);16us(500khz);32us(250khz)为典型值;


点击看大图


TLC0834的操作时序


点击看大图


通道选择的地址表


4、接口连线:CPU拉低CS片选开始启动AD转换时,由DI写在时钟上升沿触发,4bit发送后再经过一个时钟脉冲,正在转换中的数据也同时由比较器经DO发出(在时钟的下降沿触发),读写发生在两个不同的时段,故完全可以将DI、DO引脚用引线片外短接再连至CPU的IO口,本仿真就是这样。参见DatShts上的解释:


....DI and DO can be tied together and controlled by a bidirectional processor I/O bit received on a single wire. This is possible because DI is only examined during the multiplexer-addressing interval and DO is still in the high-impedance state.


5、TLC0834的AD转换启动,可参照时序,也见DatShts:


On each successive low-to-high transition of
the clock input, the start bit and assignment word are shifted through the shift register. When the start bit is shifted into the start location of the multiplexer register, the input channel is selected and conversion starts. The SAR status output (SARS) goes high to indicate that a conversion is in progress, and DI to the multiplexer shift register is disabled for the duration of the conversion.


6、子程序例程:


#include "Includes.h"   //文件包含


/*******************************************************************************
*** 函 数 名: extern int8u TLC0834_Start(bool sgl,bool odd,bool sel)
*** 功能描述: 启动ADC转换,同时返回转换后的8Bit数据;
*** 全局变量: NO !
*** 输  入: bool sgl:1-单端方式;0-差分方式;
       bool odd:1-单端方式下选通奇数通道;差分方式下奇数通道(1,3)为+;
            0-单端方式下选通偶数通道;差分方式下偶数通道(0,2)为+;
       bool sel:1:在前两种通道选通的基础上选择高位通道;反之低位通道;
*** 输  出: 8bitAD转换值;
*** 创 建 人:huangtiexiong     日期:2006-11-28
*** 修 改 人:           日期:2006-11-28
*** 函数说明: 外部函数;
/******************************************************************************/
extern int8u TLC0834_Start(int8u sgl,int8u odd,int8u sel)
{
 int8u i;
 int8u tmp = 0;
 
 ADC_CLK = 0;
 ADC_CS  = 1;  //准备启动ADC;
 
 ADC_CS  = 0;  //启动数据串行传输;
 ADC_DIO = 1;  //发送启动位;
 ADC_CLK = 1; _nop_();
 
 ADC_CLK = 0;  //发送sgl位;
 ADC_DIO = sgl; ADC_CLK = 1; _nop_();
 
 ADC_CLK = 0;  //发送odd位;
 ADC_DIO = odd; ADC_CLK = 1; _nop_();
 
 ADC_CLK = 0;  //发送sel位;
 ADC_DIO = sel; ADC_CLK = 1; _nop_(); ADC_CLK = 0;
 _nop_();    //Mux settling time;
 
 for(i=0;i<8;i++)//发送八个转换时钟脉冲;
 {
  ADC_CLK = 1;  _nop_();  ADC_CLK = 0;  _nop_();
  }
 
 for(i=0;i<8;i++)  //12个时钟脉冲下降沿,此时数据线上已发出LSB信号;
 {
  tmp >>= 1;
  if(ADC_DIO)   {    tmp |= 0x80;    }
  ADC_CLK = 1;  ADC_DIO = 1;   //先写1后再读,否则读数将不预期;
  _nop_();  ADC_CLK = 0;   //转换数据在时钟下降沿发出;
                                                //第19个时钟下降沿末数据发送完毕;第20个clk无效;  
  }
 
 ADC_CS = 1;   //结束本次操作; 
 return tmp;
 }
/*******************************************************************************
****                              End Of File
*******************************************************************************/


7、Proteus仿真抓图:


点击看大图


仿真中TLC0834对CH2、CH3构成的差分输入进行采样(每隔500ms),CH2输入1hz、峰峰值10.0v(最大正压+5.0v)的方波脉冲,CH3输入1.0的电压信号,参考电压5.0V,LED显示在0和205之间交替,计算值为:255×(5-1)÷5=204.....

PARTNER CONTENT

文章评论6条评论)

登录后参与讨论

用户423445 2012-7-9 00:40

我的protues怎么没有TLC0834啊,可以发给我吗?邮箱1093935887@qq.com 谢谢

用户423445 2012-7-8 23:46

为什么我的protues没有TLC0834啊??很急的可以发给我吗??谢谢谢 邮箱1093935887@qq。com

用户131350 2008-4-21 17:53

我都练了快四年了,除了给老婆签过,就是签给自己了。呵呵...希望有一天我也能这么爽啊!

xxmlyt 2008-4-19 14:54

我也开始练签名,争取早日派上用场。呵呵... 恭喜版主喽!

用户61232 2007-6-28 18:38

good

用户18411 2007-5-27 08:22

好认真,真是不错啊!

用户1053025 2007-1-24 14:38

好认真,真是不错啊!

用户18341 2007-1-24 06:42

不错
相关推荐阅读
用户68356 2007-06-10 09:23
canopen
我申请了恒润科技的试用光盘(VectorDemoCDV8.3),里边coe_canopen.exe因损坏无效,是不是每张光盘都这样?...
用户68356 2007-05-19 03:39
本博公告
本博暂停更新,稍后就回。欢迎访问:canopen.onlyblog.com...
用户68356 2007-03-14 22:17
ARM7TDMI-S后缀解释
T:Thumb代码支持,16bits指令结构;D:Debug硬件调试模块支持;M:加强的乘法操作支持(硬件乘法器),64位乘法结果;I:EmbededICE Logic,支持片上断点和调试点;S:sy...
用户68356 2007-03-14 04:44
老子-道德经
老子道德经--白话文注解:http://www.xet.cn/_game/lib/01_laozi/...
用户68356 2007-03-08 00:56
ARM完整定义
     ARM是英国一家电子公司的名字,全名的意思是Advanced RISC Machine。ARM首创了chipless的生产模式,即该公司既不生产芯片,也不设计芯片,而是设计出高效的IP内核,...
用户68356 2007-03-08 00:24
CPU基本概念
1.主频       主频也叫时钟频率,单位是MHz,用来表示CPU的运算速度。CPU的主频=外频×倍频系数。很多人认为主频就决定着CPU的运行速度,这不仅是个片面的,而且对于服务器来讲,这个认识也出...
EE直播间
更多
我要评论
6
9
关闭 站长推荐上一条 /3 下一条