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

📄 tmp175.c

📁 基于TI公司的温度传感器TMP175
💻 C
字号:
/**************************************************************************************************
文件名:tmp175.c
编写者:zm
描述:tmp175。用于135、145、147、149。

版本变更:2008年8月22日   	1.0
          2008年11月   		1.3
          每次读写一个字节改为每次读写多字节
*****************************************************************************************************/
#include  <msp430x14x.h>
#include "tmp175.h"
#include "IIC.h"
#include "general.h"


/***************************************************************************
向tmp175中写一个字节
psrc_data:指向要写入数据数组的指针
adr:tmp175中要写入数据的首地址
返回值:  0:执行完毕;1:执行出现错误
***************************************************************************/
unsigned char Writetmp175t(unsigned char psrc_data,unsigned char psrc_data1,unsigned char adr)
{

	Start();			//启动IIC总线
	Write8Bit(W_DEVICE_ADR);	//写tmp175的芯片地址以及确定下面执行写操作
	if(TestAck()==1)		//检验应答
		return 1;		//若应答错误,则退出函数,返回错误
	Write8Bit(adr);			//写对tmp175操作的地址
	if(TestAck()==1)
		return 1;

	Write8Bit(psrc_data);		//向tmp175中写数据
	if(TestAck()==1)
	        return 1;           
	Write8Bit(psrc_data1);		//向tmp175中写数据
        if(TestAck()==1)
		return 1; 
	Stop();				//停止IIC总线

	return 0;
}

/***************************************************************************
向tmp175中写一个字节
psrc_data:指向要写入数据数组的指针
adr:tmp175中要写入数据的首地址
返回值:  0:执行完毕;1:执行出现错误
***************************************************************************/
unsigned char Writetmp175(unsigned char psrc_data,unsigned char adr)
{

	Start();			//启动IIC总线
	Write8Bit(W_DEVICE_ADR);	//写tmp175的芯片地址以及确定下面执行写操作
	if(TestAck()==1)		//检验应答
		return 1;		//若应答错误,则退出函数,返回错误
	Write8Bit(adr);			//写对tmp175操作的地址
	if(TestAck()==1)
		return 1;

	Write8Bit(psrc_data);		//向tmp175中写数据
	if(TestAck()==1)
	        return 1;
	Stop();				//停止IIC总线

	return 0;
}

/***************************************************************************
向tmp175中写多个字节
psrc_data:指向要写入数据数组的指针
adr:tmp175中要写入数据的首地址
nbyte:写入的字节数
返回值:  0:执行完毕;1:执行出现错误
***************************************************************************/
unsigned char Writetmp175Seq(unsigned char* psrc_data,unsigned char adr,unsigned char nbyte)
{
  	for(;nbyte!=0;nbyte--)
	{
		Start();			//启动IIC总线
		Write8Bit(W_DEVICE_ADR);	//写tmp175的芯片地址以及确定下面执行写操作
		if(TestAck()==1)		//检验应答
			return 1;		//若应答错误,则退出函数,返回错误
		Write8Bit(adr);			//写对tmp175操作的地址
		if(TestAck()==1)
			return 1;

		Write8Bit(*psrc_data);		//向tmp175中写数据
		if(TestAck()==1)
			return 1;
		psrc_data++;			//指向待写数据的指针加1
		adr++;				//对tmp175的操作地址加1
		Stop();				//停止IIC总线
		DelayMs(10);			//写入延时
	}
	return 0;
}

/***************************************************************************
从tmp175中读一个字节
pdin_data:指向要保存读出数据的变量的指针
adr:tmp175中要读出数据的地址
返回值:  0:执行完毕;1:执行出现错误
***************************************************************************/
unsigned char Readtmp175(unsigned char *pdin_data,unsigned char adr)
{
	Start();			//启动IIC总线
	Write8Bit(W_DEVICE_ADR);	//写tmp175的芯片地址以及确定下面执行写操作
	if(TestAck()==1)
		return 1;
	Write8Bit(adr);			//写对tmp175操作的地址
	if(TestAck()==1)
		return 1;

	Start();			//再次启动IIC总线
	Write8Bit(R_DEVICE_ADR);	//写tmp175的芯片地址以及确定下面执行读操作
	if(TestAck()==1)
		return 1;
	*pdin_data=Read8Bit();		//从tmp175中读数据,存入pdin_data所指的存储器中
	Ack();			//IIC无应答操作
        pdin_data++;
        *pdin_data=Read8Bit();
        NoAck();	
	Stop();				//停止IIC总线

	return 0;
}

/***************************************************************************
从tmp175读多个字节
pdin_data:指向要保存读出数据的数组的指针
adr:tmp175中要读出数据的首地址
nbyte:读出的字节数
返回值:  0:执行完毕;1:执行出现错误
***************************************************************************/
unsigned char Readtmp175Seq(unsigned char *pdin_data,unsigned char adr,unsigned char nbyte)
{
	Start();			//启动IIC总线
	Write8Bit(W_DEVICE_ADR);	//写tmp175的芯片地址以及确定下面执行写操作
	if(TestAck()==1)
		return 1;
	Write8Bit(adr);			//写对tmp175操作的地址
	if(TestAck()==1)
		return 1;

	Start();			//再次启动IIC总线
	Write8Bit(R_DEVICE_ADR);	//写tmp175的芯片地址以及确定下面执行读操作
	if(TestAck()==1)
		return 1;
	while(nbyte!=1)
	{
		*pdin_data=Read8Bit();	//循环从tmp175中读数据,存入pdin_data所指的存储器中
		Ack();			//IIC应答
		pdin_data++;		//指向存储读入数据的存储器指针加1
		nbyte--;		//剩余要读入的字节减1
	};

	*pdin_data=Read8Bit();		//读入最后一个字节
	NoAck();			//IIC无应答操作
	Stop();
	return 0;
}

⌨️ 快捷键说明

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