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

📄 tlc5620.c

📁 TLC5620芯片的驱动程序
💻 C
字号:
/*
 *	Copyright (C) 2006, 华中科技大学电气与电子科技创新中心
 *	All Rights Reserved.
 *	
 *	文件名:		tlc5620.c
 *	文件描述:	DA转换芯片TLC5620驱动文件
 *			
 *	当前版本:	1.0
 *	作者:		SangWei(swkyer@gmail.com)
 *	完成日期:	2005年12月12日
 *	
*/
#include "89c51rd2.h"
#include <INTRINS.H>
#include "TLC5620.h"

/**************************************
说明:	TLC5620初始化
**************************************/
void TLC5620_Init(void)
{
	TLC5620_CLK = 0;
	TLC5620_DATA = 1;
	TLC5620_LOAD = 1;
	TLC5620_LDAC = 1;
}

/**************************************
说明:	输出单个通道的电压
chl:	通道号, 0--3
dat:	通道数据, 0--255
**************************************/
void TLC5620_SetOutput(unsigned char chl, unsigned char dat)
{
	unsigned char i;

	/* 四个通道,只有低两位有效 */
	chl &= 0x03;
	/* 左移一位,加上RNG位 */
	chl <<= 1;
	chl |= RNG;
	/* 将数据移到高3位 */
	chl <<= 5;

	for(i=3; i>0; i--)
	{
		/* 从高位到低位依次移出数据 */
		TLC5620_DATA = (bit)(chl&0x80);
		/* 等待数据稳定 */
		TLC5620_CLK = 1;
		chl <<= 1;
		/* 下降沿将数据锁存 */
		TLC5620_CLK = 0;
	}
	for(i=8; i>0; i--)
	{
		/* 从高位到低位依次移出数据 */
		TLC5620_DATA = (bit)(dat&0x80);
		/* 等待数据稳定 */
		TLC5620_CLK = 1;
		dat <<= 1;
		/* 下降沿将数据锁存 */
		TLC5620_CLK = 0;
	}
	/* LOAD下降沿将数据锁入寄存器 */
	TLC5620_LOAD = 0;
	_nop_();
	_nop_();
	TLC5620_LOAD = 1;
	_nop_();
	_nop_();
	/* LDAC下降沿将更新输出电压值 */
	TLC5620_LDAC = 0;
	_nop_();
	_nop_();
	TLC5620_LDAC = 1;
}

/**************************************
说明:	同时刻输出四个通道电压 
chl1--chl4:	4个通道的数据
**************************************/
void TLC5620_AllOutput(unsigned char dat[])
{
	unsigned char i, j, chl;

	for(j=0; j<4; j++)
	{
		chl = j;
		/* 左移一位,加上RNG位 */
		chl <<= 1;
		chl |= RNG;
		/* 将数据移到高3位 */
		chl <<= 5;
	
		for(i=3; i>0; i--)
		{
			/* 从高位到低位依次移出数据 */
			TLC5620_DATA = (bit)(chl&0x80);
			/* 等待数据稳定 */
			TLC5620_CLK = 1;
			chl <<= 1;
			/* 下降沿将数据锁存 */
			TLC5620_CLK = 0;
		}
		for(i=8; i>0; i--)
		{
			/* 从高位到低位依次移出数据 */
			TLC5620_DATA = (bit)(dat[j]&0x80);
			/* 等待数据稳定 */
			TLC5620_CLK = 1;
			dat[j] <<= 1;
			/* 下降沿将数据锁存 */
			TLC5620_CLK = 0;
		}
		/* LOAD下降沿将数据锁入寄存器 */
		TLC5620_LOAD = 0;
		_nop_();
		_nop_();
		TLC5620_LOAD = 1;
		_nop_();
		_nop_();
		_nop_();
		_nop_();
	}
	/* LDAC下降沿将四个通道同时刻更新输出电压值 */
	TLC5620_LDAC = 0;
	_nop_();
	_nop_();
	TLC5620_LDAC = 1;
}

⌨️ 快捷键说明

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