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

📄 复件 tlc2543.c

📁 AD芯片TLC2543的转换例程。
💻 C
字号:
#include <reg51.h>
#include <math.h>
#include <stdlib.h>
#include <intrins.h>
#include <stdio.h>

sbit TLC2543_CLK	= P1^0;
sbit TLC2543_DIN	= P1^1;
sbit TLC2543_DOUT	= P1^2;
sbit TLC2543_CS		= P1^3;

unsigned int Convert(unsigned int uiChannel);

unsigned char AD_INPUT[] =
{
	/* 12 bits / MSB first / unipolar */
	0x00,        /* AD channel 00 select */
	0x10,        /* AD channel 01 select */
	0x20,        /* AD channel 02 select */
	0x30,        /* AD channel 03 select */
	0x40,        /* AD channel 04 select */
	0x50,        /* AD channel 05 select */
	0x60,        /* AD channel 06 select */
	0x70,        /* AD channel 07 select */
	0x80,        /* AD channel 08 select */
	0x90,        /* AD channel 09 select */
	0xA0,        /* AD channel 0a select */
	0xB0,        /* AD channel 0b select */
	0xC0         /* AD channel 0c select */
};

unsigned int Convert(unsigned int uiChannel)
{
	unsigned int	i;
	unsigned int	dout;		/*存放从DOUT端接收到的数*/
	unsigned char	din;		/*通道控制字*/

	din = AD_INPUT[uiChannel];
	TLC2543_CLK = 0;
	TLC2543_CS = 1;
	_nop_();
	_nop_();
	TLC2543_CS = 0;
	dout = TLC2543_DOUT;
	for (i = 0; i < 8; i++)			/*读高8位*/	
	{			
		if (din & 0x80)				/*将通道方式控制字最高位打入TLC2543*/
            TLC2543_DIN = 1;
        else
            TLC2543_DIN = 0;
        din <<= 1; 
        dout <<= 1;
		if (TLC2543_DOUT == 1)
			dout |= 0x0001;  
        TLC2543_CLK = 1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
		TLC2543_CLK = 0;
	}	
	
	for (i = 0; i < 4; i++)			/*读低4位*/
	{
		dout <<= 1;
		if (TLC2543_DOUT == 1)
			dout |= 0x0001; 
		TLC2543_CLK=1;
		_nop_();
        _nop_();
        _nop_();
        _nop_();
		TLC2543_CLK = 0;
	}	
	
	TLC2543_CS = 1;
	return dout;
}

⌨️ 快捷键说明

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