找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2199|回复: 4
打印 上一主题 下一主题
收起左侧

基于AT89S52与TLC5615产方波,波形不稳定,老闪

[复制链接]
跳转到指定楼层
楼主
ID:117728 发表于 2016-4-30 21:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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;
        }
}             老闪且不稳定,求大神帮帮忙,感谢万分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:114189 发表于 2016-4-30 23:46 来自手机 | 只看该作者
主函数  tlc5615(wave)后加延时2s 试试
回复

使用道具 举报

板凳
ID:117728 发表于 2016-5-1 08:41 | 只看该作者
Action 发表于 2016-4-30 23:46
主函数  tlc5615(wave)后加延时2s 试试

延时两秒,波形就不出了
回复

使用道具 举报

地板
ID:114189 发表于 2016-5-1 23:28 来自手机 | 只看该作者
原理图发我邮箱我给你看一下  201792056@qq.com 还有interrupt1 后面加using 2
回复

使用道具 举报

5#
ID:153199 发表于 2017-1-2 15:46 | 只看该作者
结合原理图分析
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表