#include
#include
#include
sbit din5618=P1^3;
sbit clk5618=P1^2;
sbit cs5618=P1^1;
#define uchar unsigned char
#define uint unsigned int
/**************************************************
TLC5618驱动程序
函数名write5618(void)
说明:无参数,无返回值
*************************************************/
void write5618(void)
{ uchar n="0",j,k;
uint iicon,icon,vvcon,vcon;
iicon="0x0500"; //设定阶梯电压初始值0(写入缓冲器,B通道输出)
vvcon="0xC000"; //设定锯齿电压初始值0(A通道输出)
while(1)
{ icon="iicon";
clk5618=1;
cs5618=0;
for(j=0;j<16;j++) //传送阶梯电压数据
{ din5618=icon&0x8000; //从高位开始传送16位数据
icon<<=1;
clk5618=0; //时钟下降沿转移数据
clk5618=1;
}
cs5618=1;
clk5618=0;
for(k=40;k>0;k--) //锯齿电压设定为40个阶梯
{ vcon="vvcon";
clk5618=1;
cs5618=0;
for(j=0;j<16;j++) //从高位开始传送16位数据
{ din5618=vcon&0x8000;
vcon<<=1;
clk5618=0; //时钟下降沿转移数据
clk5618=1;
}
cs5618=1;
clk5618=0;
vvcon+=102; //每一阶梯含有102个小阶梯
}
n++;
iicon+=819;
if(n==5) //第四个阶梯输出后复位
{ n="0";
iicon="0x0500";
}
vvcon="0xC000"; //锯齿电压一周期后复位
}
}
文章评论(0条评论)
登录后参与讨论