当前位置:主页 > AVR单片机 > TLC5615的ICC程序
201709/06

TLC5615的ICC程序

AVR单片机 Comments 围观:
// TLC5615输出0-5V电压值

// 芯片 ATMEGA16L 
// 时钟 4MHz 内部

#include

#define SCLK5615    4   // tlc5615时钟线, PD4输出
#define DATA5615    5   // tlc5615数据线, PD5输出
#define CS5615     6   // tlc5615片选线 ,PD6输出  

//TLC5615数据线置1
#define DATA5615_SET      PORTD |= 1< //TLC5615数据线清0 
#define DATA5615_CLR      PORTD &= ~(1< //TLC5615时钟线置1 
#define SCLK5615_SET      PORTD |= 1< //TLC5615时钟线清0 
#define SCLK5615_CLR      PORTD &= ~(1< //TLC5615片选线置1 
#define CS5615_SET        PORTD |= 1< //TLC5615片选线清0 
#define CS5615_CLR        PORTD &= ~(1<

void delay_nms(unsigned int);   //延时 n ms  
void tlc5615(unsigned int dat);
void main()
{
  delay_nms(200);
  DDRD=0xff;
  tlc5615(200);  //  转换输出电压=2*Vref*code/1024,输出电压最大为电源电压。当前输出1.77V。
  while(1);

}
void tlc5615(unsigned int dat)
{
  unsigned char i;
  CS5615_SET;
  DATA5615_CLR;
  SCLK5615_CLR;         // CS高电平期间,SCLK为低电平
  dat<<=6;            // 数字量dat左移6位,保留原dat低10位。新dat的高10位有效,低6位全0。
  CS5615_CLR;           // CS片选有效,开始接收数据
  SCLK5615_CLR;
  for(i=0;i<12;i++)   // 发送10位数据和2位0,从最高位开始发送。
  {                   // 非级联方式,只需要输入12位数据。
    
    if((dat&0x8000)==0x8000)
      DATA5615_SET;
    else
      DATA5615_CLR;;
    SCLK5615_SET;       // SCLK上升沿,数据输入
    dat<<=1;
    SCLK5615_CLR;       // SCLK恢复低电平
  }
  CS5615_SET;           // CS上升沿,数据送到DAC寄存器
                      // CS的上升沿和下降沿只有在SCLK为低的时候有效
  SCLK5615_CLR;
  DATA5615_CLR;         // 拉高片选端,拉低时钟端与数据端,回到初始状态
  
}
void delay_nms(unsigned int k)  //延时 n ms
{
  while(k)   //4M晶振,一个循环1ms
  {
  int i;
  i=700;
  while(i--);
  k=k-1;
  }
}


文章作者:
本文地址:
版权所有 © 未注明“转载”的博文一律为原创,转载时必须以链接形式注明作者和原始出处!
如果你觉得文章不错,您可以推荐给你的朋友哦!

发表评论:                              


验证码:点击我更换图片

来看看其他人说了些什么?-----------------------------------------------------------------> 进入详细评论页