搜索
bottom↓
回复: 4

MEGA128接TLC5618模出芯片,示波器观测到时钟,数据,片选都正常,但是万用表却测不到模出

[复制链接]

出0入0汤圆

发表于 2007-4-28 09:57:47 | 显示全部楼层 |阅读模式
#define TLC_SCLK_1        PORTB|=0x02                   //B1                 

#define TLC_SCLK_0        PORTB&=~0x02                    //B1

#define TLC_DIN_1             PORTB|=0x04                     //B2

#define TLC_DIN_0                PORTB&=~0x04                    //B2

#define TLC_CS0_1         PORTB|=0x20             //B5

#define TLC_CS0_0         PORTB&=~0x20            //B5

#define TLC_CS1_1         PORTB|=0x40             //B6

#define TLC_CS1_0         PORTB&=~0x40            //B6



void port_init(void)

{

   DDRF  = 0xff;

   PORTF = 0xff;;

}





void TLC_5618(unsigned int voltage0_da,unsigned int Voltage1_da)

{

        unsigned char i,j;

        unsigned char Hibyte , Lobyte;

        unsigned char Hibyte0 , Lobyte0;

        unsigned char voltage00_da, Voltage01_da;



        Hibyte = voltage0_da / 256;

        Lobyte = voltage0_da %256;

        Hibyte = Hibyte | 0x10;                       



        Hibyte0 = Voltage01_da / 256;

        Lobyte0 = Voltage01_da %256;

        Hibyte0 = Hibyte | 0x80;                       

       

        TLC_SCLK_0;

        TLC_CS0_0;//将U17CS置为0;

        TLC_CS1_1;

           for (i=0; i<8; i++)

           {

                TLC_SCLK_1;

                if (Hibyte & 0x80)

                    TLC_DIN_1;

                else

                         TLC_DIN_0;

                NOP();

                TLC_SCLK_0;

                Hibyte <<= 0x01;

        }

   for (j=0; j<8; j++)

   {

                TLC_SCLK_1;

                if (Lobyte & 0x80)

                    TLC_DIN_1;

                else

                        TLC_DIN_0;

                NOP();

                TLC_SCLK_0;

                Lobyte <<= 0x01;

        }

       

   for (i=0; i<8; i++)

   {

                TLC_SCLK_1;

                if (Hibyte0 & 0x80)

                    TLC_DIN_1;

                else

                        TLC_DIN_0;

                NOP();

                TLC_SCLK_0;

                Hibyte0 <<= 0x01;

        }

   for (j=0; j<8; j++)

   {

                TLC_SCLK_1;

                if (Lobyte0 & 0x80)

                    TLC_DIN_1;

                else

                        TLC_DIN_0;

                NOP();

                TLC_SCLK_0;

                Lobyte0 <<= 0x01;

        }

        TLC_SCLK_1;

        TLC_CS0_0;

        TLC_CS1_0;

}



void main(void)

{

   port_init();



   while (1)

   {



        TLC_5618(819,1025);

                  

   }

}

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2007-4-29 11:21:34 | 显示全部楼层
哪位大侠知道?

出0入0汤圆

发表于 2007-4-30 15:31:05 | 显示全部楼层
我用TLC5617也出现类似问题。请问你调出来了吗?

出0入0汤圆

发表于 2011-7-22 16:55:53 | 显示全部楼层
有谁知道的回答一下呀~我也遇到类似的问题
#include "DA.h"
void Global_Delay_Us(unsigned int n);
//DA GPIOE OUT 输出!!
#define  GPIOE_Mode_Out_DA(All)  {        \
                                                                  GPIO_InitTypeDef GPIO_InitStructure;\
                                                                  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11 |GPIO_Pin_12;        \
                                                                  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        \
                                                                  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; \
                                                                  GPIO_Init(GPIOA, &GPIO_InitStructure); \
                                                                  }
///*-------------------这是第一种宏定义方法-----------------------------------*/
//#define CS_538_1 GPIOB->BSRR=GPIO_Pin_3 //         GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7
//#define CS_538_0 GPIOB->BRR =GPIO_Pin_3 //
//
//#define DIN_538_1 GPIOB->BSRR=GPIO_Pin_4 //
//#define DIN_538_0 GPIOB->BRR =GPIO_Pin_4 //
//
//#define SCLK_538_1 GPIOB->BSRR=GPIO_Pin_6 //  
//#define SCLK_538_0 GPIOB->BRR =GPIO_Pin_6 //
/*-------------------这是第二种宏定义方法-----------------------------------*/


#define  DIN_538_0 GPIO_WriteBit(GPIOA, GPIO_Pin_10,Bit_RESET)
#define  DIN_538_1 GPIO_WriteBit(GPIOA, GPIO_Pin_10,Bit_SET)

#define  SCLK_538_0 GPIO_WriteBit(GPIOA, GPIO_Pin_11,Bit_RESET)
#define  SCLK_538_1 GPIO_WriteBit(GPIOA, GPIO_Pin_11,Bit_SET)

#define  CS_538_0  GPIO_WriteBit(GPIOA, GPIO_Pin_12,Bit_RESET)
#define  CS_538_1  GPIO_WriteBit(GPIOA, GPIO_Pin_12,Bit_SET)

#define DA_DATAOUT GPIOA->ODR   //ODR 端口输出的数据寄存器  //GPIO_Write(GPIOE, date) //PD[0..7]--(LCD)D0~D7

/*****************************************************************
函数名称:void DA_GPIOE_Output(void)
输入参数:NULL
输出参数:dat
函数功能:向电阻网络输出DA的值 12位的DA的数值有4096个值         所以dat的
值可以从0变到4096
*******************************************************************/

void DA_GPIOE_Output(unsigned int dat)
{
        unsigned long date;
        float dattt;
        dattt=(dat/3.3)*1000;
        date=dattt*4096;
        date=date<<4;       
        GPIOE_Mode_Out_DA(All);
        DA_DATAOUT=0xffff;
}

//MAX538
void Delay_538(unsigned int t)
{
  while(t--);
}
/*****************************************************************
函数名称:void DAC_538(unsigned int dat)
输入参数:NULL
输出参数:dat
函数功能:538的驱动程序
*******************************************************************/
void DAC_538(unsigned int dat)
{
        unsigned int volt;
        unsigned char i;       
        volt=dat|0x1000;        
        GPIOE_Mode_Out_DA(All);
        SCLK_538_0;
        CS_538_0;
        Global_Delay_Us(5);
        for(i=0;i<16;i++)
        {            
           SCLK_538_1;
           Global_Delay_Us(5);
           if(volt&0x8000)
             DIN_538_1;
           else
             DIN_538_0;
           SCLK_538_0;
           Global_Delay_Us(5);
           volt<<=1;
        }
        CS_538_1;
        SCLK_538_1;       
        Global_Delay_Us(5);
}
/*****************************************************************
函数名称:
输入参数:NULL
输出参数:
函数功能:
*******************************************************************/
void DA_Output_Date(unsigned int dat)
{
        static float voltage;
        float date;
        voltage=4.16;
        date=(float)dat/1000*voltage/4096;
        DAC_538((unsigned int)dat);
}

出0入0汤圆

发表于 2011-8-22 18:46:15 | 显示全部楼层
一次传16位就OK啦,问题出在片选段
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 07:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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