当前位置:首页 > 单片机 > 单片机
[导读]// TLC5615输出0-5V电压值// 芯片 ATMEGA16L // 时钟 4MHz 内部#include#define SCLK5615 4 // tlc5615时钟线, PD4输出 #define DATA5615 5 // tlc5615数据线, PD5输出 #define CS5615 6 // tlc5615片选线 ,PD

// 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;
}
}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭