本帖最后由 P0.0 于 2010-5-8 10:46 编辑
//DA转换TLC5615
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar i;
uint da,shu;
sbit din=P1^0;//数据输入
sbit sclk=P1^1;//时钟
sbit cs=P1^2;//片选
void main()
{
TMOD=0X01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
sclk=0;
while(1)
{
}
}
void timeint() interrupt 1
{
cs=0;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
shu++;
da=shu;
da <<= 6;
for(i=0;i<12;i++)
{
din =(bit)(da & 0x8000);
sclk=1;
da<<=1;
sclk=0;
}
cs = 1;
sclk = 0;
}
在TLC5615第7引脚端能得到0-5.5V之间变化的电压.但我不明白的是,TLC5615是10位D/A转换,按理应该i=10才对,每次运算得到1位,10次就是10位。为何此处要i=12 |