TLC2543芯片AD转换例子

原创 2007年10月11日 16:40:00
/**//*
    TLC2543芯片AD转换例子,采集第2通道AIN2的电压数据,并通过串口发送转换结果
    发送格式为:“转换结果,毫伏数值”。每隔150ms闪亮LED灯。
*/

#include 
<mega8535.h>
#include 
<delay.h>
#include 
<stdio.h>

#define uchar unsigned char
#define uint unsigned int

#define _LED          PORTD.6
#define  TXEN         3

#define TCL2543_EOC     PINB.4      // EOC输出信号   
#define TCL2543_CLK     PORTB.3     // 时钟信号
#define TCL2543_ADIN    PORTB.2     // 数据输入端
#define TCL2543_DOUT    PINB.1      // 数据输出端
#define TCL2543_CS      PORTB.0     // 片选信号
#define TCL2543_DDR     0x0D        // 0000 1101

uchar ct
=0;
void Init(void)
...{
    DDRD 
= 0xFF;
    PORTD 
= 0xFF;
    DDRB 
= TCL2543_DDR;
    PORTB 
= 0xFF;
    
    
// T = 1024*108/11.0592 = 10000us = 10ms
    TCCR0 = 0x05;       // 1024分频, 11.0592M, 10ms定时
    TCNT0 = 148;        // 初值。计数=256-148 = 108
    TIMSK |= 0x01;      // T/C0 溢出中断使能 
    
    UBRRH 
= 0;
    UBRRL 
= 71;            // 9600bps, 11.0592MHz
    UCSRB = (1<<TXEN);  // 发送器使能
    
    SREG.
7 = 1;         // 全局中断使能

    TCL2543_CS 
= 0;     //初始化TLC2543 
    TCL2543_CS = 1;
    TCL2543_CLK 
= 0;
}
   

void delay(uchar   n)   
...{   
    uchar i;   
    
for(i=0; i<n; i++)   
        #asm(
"nop");   
}
   

//    功能:TLC2543驱动模块   
//    输入参数:port通道号   
//    输出参数:ad转换值   
uint read2543(uchar port)   
...{   
    
uint ad=0, i;
    
if(TCL2543_EOC == 0return 0;    // 转换没有结束或不允许转换
    TCL2543_CLK=0;   
    TCL2543_CS
=0;   
    port
<<=4;

    
for(i=0;i<12;i++)   
    
...{   
        
if(TCL2543_DOUT)   ad |= 0x01;   
        
        
if(port&0x80)  TCL2543_ADIN = 1;
        
else    TCL2543_ADIN = 0;
        
        TCL2543_CLK
=1;   
        delay(
3);   
        TCL2543_CLK
=0;   
        delay(
3);   
        port
<<=1;   
        ad
<<=1;   
    }
   
    TCL2543_CS
=1;   
    ad
>>=1;   
    
return(ad);   
}
   

void main(void)
...{      
    
uint t;
    
float p;
    Init();
        
    
while(1)
    
...{
        delay_ms(
250);
        t 
= read2543(2);// 得到转换结果
        
        p 
= (float)t; 
        p 
= p/4096.0;
        p 
= 5000.0*p;   // 转换为毫伏数值,参考电压为5000mV

        printf(
"%d,", t);
        t 
= (uint)p;
        printf(
"%d ", t);        
    }
  
}


// 10ms定时
interrupt [TIM0_OVF] void Timer0(void
...{
    TCNT0 
= 148;
    
if(++ct == 15)  // 150ms
    ...{
        ct 
= 0;
        _LED 
= ~_LED;
    }

}

 

基于STM32的TLC2543驱动程序

这个驱动程序是基于3.0固件库来写的,所以具体的配置都很明确,需要注意两点:1、读写速度不能太高,否则会读取不到数据。2、注意数据的读取方式,TLC2543有8位、12位、16位三种数据方式,这里快使...
  • haozi_1989
  • haozi_1989
  • 2011-01-01 21:24:00
  • 3749

TQ2440 AD中断方式采集数据

经过不懈的努力  发现自己的错误在于不知道ADC的中断有两个子中断  2440的ADC中断包括INT_ADC_S和INT_TC  需要先处理一下子中断INT_ADC_C  再处理INT_ADC 另外...
  • hntanguo
  • hntanguo
  • 2011-11-03 11:59:15
  • 532

开关电源在模拟量采集系统中应用

   尽管在模拟量采集系统中,对ADC芯片等的供电一般建议最好不用电源 target=_blank>开关电源 ,以避免其固有的纹波大、噪声等问题,但电源 target=_blank>开关电源...
  • yuweixian
  • yuweixian
  • 2010-09-23 21:48:00
  • 749

单片机AD转换程序 TLC2543

单片机AD转换程序 TLC2543目前电子大赛在如火如荼的进行着,本人现在把自己在大学期间调试的一些东西贡献出来,希望能够帮到需要的人谢谢!完成功能:将TLC2543的通道0进行AD转换并以静态显示方...
  • Baiduluckyboy
  • Baiduluckyboy
  • 2010-11-01 10:52:00
  • 1622

12位AD转换芯片TLC2543与51接口

  • 2012年05月20日 17:33
  • 165KB
  • 下载

模拟信号采样与AD转换

1 著名的Nyquist采样定理 尽管大家都知道,但还是提一提。大牛奥本海姆的《信号与系统》中是这样描述的: Let x(t) be a band-limited signal with X(j...
  • godloveyuxu
  • godloveyuxu
  • 2017-08-02 15:14:40
  • 299

<em>TLC2543</em>keil程序 - 下载频道

<em>TLC2543</em> KEIL驱动程序,c语言编写。... <em>TLC2543</em> KEIL驱动程序,c语言编写。...iOS程序员的C语言<em>教程</em> C语言及程序设计...fpga操作tlv2543 AD<em>采样</em>的verilog程序 下载...
  • 2016年12月17日 00:00

AD转换原理,器件与参数

1 内容简介对AD芯片基本原理,分类与关键技术参数指标进行整理介绍。2 模数转换2.1 转换原理类别AD转换就是模数转换。顾名思义,就是把模拟信号转换成数字信号。主要包括积分型、逐次逼近型、并行比较...
  • tbtbtbtbtbtbtb
  • tbtbtbtbtbtbtb
  • 2018-01-13 18:28:43
  • 612

TLC2543的12位串口AD转换 TLC2543的12位串口AD转换

  • 2010年03月30日 18:44
  • 479KB
  • 下载

TLC2543AD转换程序

  • 2012年02月29日 15:42
  • 23KB
  • 下载
收藏助手
不良信息举报
您举报文章:TLC2543芯片AD转换例子
举报原因:
原因补充:

(最多只允许输入30个字)