标题:
基于AT89S52与TLC5615产方波,波形不稳定,老闪
[打印本页]
作者:
18877546144
时间:
2016-4-30 21:29
标题:
基于AT89S52与TLC5615产方波,波形不稳定,老闪
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit CS=P0^2;
sbit SCLK=P0^1;
sbit DIN=P0^0;
uint num=1, wave;
/********延时**********/
/*void delayus(uint t)
{
uint i,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
} */
/*************************************************************
函数:TLC5615数据转换函数
功能:先后输入十位有效位和两位填充位,两位填充位数据任意
Vref=2.46V
*************************************************************/
void tlc5615(uint dat)
{
uchar i;
_nop_();
CS=0;
_nop_();
dat<<=2;
for(i=0;i<12;i++)
{
//k=20;
//while(k--);
dat<<=1;
DIN=(bit)(dat&0x800);
SCLK=1;
SCLK=0;
}
SCLK=0;
CS=1;
}
/*void tlc5615(unsigned int port)
{
uchar i=0;
SCLK=0;
CS=0;
port=port&0x3ff;
for(i=0;i<12;i++) //十二位数据按位发送
{
if(port&0x200) //如果10有效位的最高位为1则输出高电平0010 0000 0000
{ // 0010 0000 0000(填充位)
DIN=1;
}
else
{
DIN=0; //否则为低
}
port<<=1; //左移一位,接着输出下一位
SCLK=1;
SCLK=0;
}
CS=1;
} */
void TLC_init()
{
CS=1;
SCLK=0;
DIN=0;
}
void T0_init()
{
TMOD=0x01;
TH0=(65536-458)/256;
TL0=(65536-458)%256;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
T0_init();
TLC_init();
while(1)
{
if(num>10)
{
wave=0;
}
else
{
wave=300;
}
tlc5615(wave) ;
}
}
void T0_time() interrupt 1
{
TH0=(65536-458)/256;
TL0=(65536-458)%256;
num++;
if(num>20)
{
num=1;
}
} 老闪且不稳定,求大神帮帮忙,感谢万分
作者:
Action
时间:
2016-4-30 23:46
主函数 tlc5615(wave)后加延时2s 试试
作者:
18877546144
时间:
2016-5-1 08:41
Action 发表于 2016-4-30 23:46
主函数 tlc5615(wave)后加延时2s 试试
延时两秒,波形就不出了
作者:
Action
时间:
2016-5-1 23:28
原理图发我邮箱我给你看一下 201792056@qq.com 还有interrupt1 后面加using 2
作者:
liuzhaoxin1020
时间:
2017-1-2 15:46
结合原理图分析
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1