⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tlc549.c

📁 tlc549的c语言51驱动程序
💻 C
字号:
/****************************************************************
 * 文件名:TLC549.c
 * 文件描述: 
 * 
 * **************************************************************/
 
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
#include "TLC549.h"

static alt_u8 out=0xff;

/**************************************************************
 * 注意:由于在FPGA和TLC549之间接了一片反相器,所以对芯片引脚的设置都将相
 * 反。
 * 例如:TLC549_SET_CLK()函数,实际上FPGA输出低电平。
 * ***********************************************************/
 
 /*******************************
  * 说明:设置TLC549芯片clk脚高电平
  ******************************/
void TLC549_SET_CLK(void)
{
   out = out & 0xFE;
   IOWR_ALTERA_AVALON_PIO_DATA(PIO_ADC_OUT_BASE, out);
}

/********************************
 * 说明:设置TLC549芯片clk脚低电平
 *******************************/
void TLC549_CLR_CLK(void)
{
    out = out | 0x01;
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_ADC_OUT_BASE, out);
}

/*********************************
 * 说明:设置TLC549芯片ce脚高电平
 * ******************************/
void TLC549_SET_CE(void)
{
    out = out & 0xFD;
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_ADC_OUT_BASE, out);
}

/***********************************
 * 说明:设置TLC549芯片ce脚低电平
 * ********************************/
void TLC549_CLR_CE(void)
{
    out = out | 0x02;
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_ADC_OUT_BASE, out);
}

void TLC549_delay(alt_u16 time)
{
    alt_u16 i;
    for(i=0; i<time; i++);
}

/**************************************
 * 说明:  AD读函数,从TLC594读取A/D转换值
 *return: 8bit AD转换值
 * ***********************************/
alt_u8 TLC549_get_AD(void)
{
    alt_u8 i;
    alt_u8 rt=0;
    
    TLC549_CLR_CLK();
    TLC549_CLR_CE();
    TLC549_delay(20);
    if(IORD_ALTERA_AVALON_PIO_DATA(PIO_ADC_IN_BASE) & 0x01)
        rt=rt | 0x80;
    TLC549_SET_CLK();
    TLC549_delay(20);
    TLC549_CLR_CLK();
    TLC549_delay(20);
    
    for(i=6; i>0; i--)
    {
        TLC549_SET_CLK();
        TLC549_delay(20);
        if(IORD_ALTERA_AVALON_PIO_DATA(PIO_ADC_IN_BASE) & 0x01)
            rt = rt | (1<<i);
        TLC549_CLR_CLK();
        TLC549_delay(20);
    }
    
    TLC549_SET_CLK();
    TLC549_SET_CE();
    
    return(rt);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -