IIC实现温度传感器(TMP1XX,LM75X)测量与显示

IIC调试学习

            ----------------------应用于TMP1XX等一系列IIC温度传感器--------------------------------

由于项目要用到温度传感器,所以就挑选了TI的一款温度传感器Tmp102,这款温度传感器和TI的很多温度传感器都类似,比如Tmp112,lm75,lm75a等。这款温度传感器所用到的通信方式为IIC,之前仅仅了解过IIC并没有进行实际的操作,借着这个机会进行实际的IIC运用和学习。
其中IIC的基础知识点就不详细说明了,想要进行IIC的编程和学习,首先学习的应该是他的基本知识,只有知道了他的基础知识才能够进行有条不紊的应用。

我用的单片机是STM32F103ZET6,IIC为软件的形式是实现

IIC协议软件实现

  1. 产生开始信号
void IIC_Start(void)
{
   
   
	SDA_OUT();     //sdaÏßÊä³ö
	IIC_SDA=1;	  	  
	IIC_SCL=1;
	delay_us(4);
 	IIC_SDA=0;//START:when CLK is high,DATA change form high to low 
	delay_us(4);
	IIC_SCL=0;//ǯסI2C×ÜÏߣ¬×¼±¸·¢ËÍ»ò½ÓÊÕÊý¾Ý 
}

2.产生停止信号

void IIC_Stop(void)
{
   
   
	SDA_OUT();//SDA设置为输出
	IIC_SCL=0;
	IIC_SDA=0;//STOP:when CLK is high DATA change form low to high
 	delay_us(4);
	IIC_SCL=1; 
	IIC_SDA=1;//钳住IIC线准备发送或者接受数据
	delay_us(4);							   	
}

3.主机等待从机应答

u8 IIC_Wait_Ack(void)
{
   
   
	u8 ucErrTime=0;
	SDA_IN();       
	IIC_SDA=1;delay_us(1);	   
	IIC_SCL=1;delay_us(1);	 
	while(READ_SDA)
	{
   
   
		ucErrTime++;
		if(ucErrTime>250)
		{
   
   
			IIC_Stop();
			printf("device no ack\r\n");
			return 1;
		}
	}
		IIC_SCL=0;	   
	return 0;  
} 

4.主机不产生应答

void 
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值