| 本帖最后由 芯圣电子官方QQ 于 2023-7-19 16:42 编辑 
 今天搞了一下TLC5615,这是个DAC芯片。
 DIN接P0.1,SCLK接P0.0,CS接P1.0
 代码:
 
 效果图:#define ALLOCATE_EXTERN
#include "HC89S105AC8.h"
#define uchar unsigned char  
#define uint unsigned int
/** @addtogroup 425_GPIO_led_toggle GPIO_led_toggle
  * @{
  */
#define _nop_()    i=i
#define DIN_1 P0_1=1
#define DIN_0 P0_1=0
#define sclk_1 P0_0=1
#define sclk_0 P0_0=0
#define cs_1 P1_0=1
#define cs_0 P1_0=0
void write_5615(uint da)
{
   uchar i;
   cs_1;
   sclk_0;
   cs_0;
   //da<<=6;//有效位位10位去掉没用的6位
   da=da&0x03ff;
   for(i=0;i<12;i++)
   {
     if((bit)(da&0x0200)==1)//送时是10位两个0是后来加的在此处加
      DIN_1;
     else
      DIN_0;
     sclk_1;
     da<<=1;
     sclk_0;
     
    }
    sclk_0;
    cs_1;
    _nop_();_nop_();
}
void delay1ms(uint x)  
{
    unsigned char a,b,c;
        while(x--)
        {
    for(c=1;c>0;c--)
        for(b=142;b>0;b--)
            for(a=2;a>0;a--);
        }
}
/***************************************************************************************
  * @实现效果        设置各个IO口的工作状态
***************************************************************************************/
void main(void)        
{        
        uint i=30;
/********************************系统初始化*******************************************/                
        WDTCCR = 0x00;                           //关闭看门狗
                                                           //本例程为方便测试关闭看门狗,实际使用中,建议客户打开看门狗,详见WDT复位例程
        CLKCON = 0x02;                           //选择内部高频RC为系统时钟, Fosc=32MHz
        CLKDIV = 0x02;                           //Fosc 2分频得到Fcpu,Fcpu=16MHz
        
/***********************************设置IO口模式***************************************/
        
        P0M0 = 0xCC;                                 //P32设置为带上拉开漏输出
        P1M0 = 0xFC;                             //P34设置为推挽输出
        
             
        while(1)
        {
                          i+=10;
                        if(i==1020)
                        i=0;
        
                    write_5615(i); 
                        delay1ms(1);
        }
}
     
 |