⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tlc5618.c

📁 TLC5618 D/A 输出
💻 C
字号:
#include "C:\Cygnal\IDEfiles\C51\Inc\c8051F020.h" 
#define  NUM    50
sbit CS=P2^1;
void spi0_init(void);
void sysclock_init(void);
void port_init(void);
void delay(unsigned long time);
void write_word(unsigned int word);

main()
{
	EA=0;
	WDTCN=0x0de;
    WDTCN=0x0ad;
	EA=1;
	port_init();
	sysclock_init(); 
	spi0_init();
	while(1)
	{
		write_word(0x1200);     //仅写double buffer,存储新的DAC B的数据 0x200;
		write_word(0x8100);     //写数据到latch A,0x100同时把double buffer的数据写到latch B中
	
	}

}
void write_word(unsigned int word)
{
	CS=0; 
	delay(NUM);
	SPI0DAT=word>>8;           
	while(!SPIF);				
	SPIF=0;
 	SPI0DAT=word; 
	while(!SPIF);
	SPIF=0;
	CS=1;
	delay(NUM);
}
void spi0_init(void)
{ 
	SPI0CFG=0x47;        //CKPHA=0,CKPOL=1
	SPI0CN =0x03;       //3线方式
	SPI0CKR=0x92;      //50khz            
	EIE1=0;            //不允许SPI0中断   
}
void sysclock_init(void)
{
    OSCXCN=0x67;             //晶体振荡器方式1分频,fsysclock=14.7456mhz;
    delay(300);               //延时1ms
	while(!(OSCXCN&0x80));   //检查XTLVLD=1?
    OSCICN=0x08;             //切换到外部振荡器
}
void port_init(void)
{
	XBR0=0x06;      //UATR,SPI0           
	XBR1=0;
	XBR2=0xc0;     //弱上拉禁止
	P0MDOUT=0x15;  
	P2MDOUT=0xcf; 
}
void delay(unsigned long time)
{
	while(time--);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -