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

📄 +++

📁 可设置温度上下限的温控
💻
字号:
#ifndef _2402_h_
#define _2402_h_
#define uchar unsigned char
#define uint unsigned int
sbit sda=P1^2;
sbit scl=P1^3;
//sbit sda=P1^6;
//sbit scl=P1^5;
void nop()
{ ; ; }

void start()	  //功能:启动I2C 总线,即发送I2C 起始条件。
{
	sda=1;
	nop();
	scl=1;
	nop();
	sda=0;
	nop();
}

void stop()		//功能:结束I2C 总线,即发送I2C 结束条件。
{
	sda=0;
	nop();
	scl=1;
	nop();
	sda=1;
	nop();	
}

void respons()	//功能:主控器进行应答信号,(可以是应答或非应答信号)
{
	uchar i;
	scl=1;
	nop();
	while((sda==1)&&(i<250))i++;
	scl=0;
	nop();
}

void write_byte_2402(uchar dat)		//功能:将数据dat 发送出去,可以是地址,也可以是数据,发完后等待应答
{
	uchar i,temp;
	temp=dat;
	scl=0;
	nop();
	for(i=0;i<8;i++)
	  {
	  	 temp=temp<<1;
		 scl=0;	    	/*置时钟线为低,准备接收数据位*/
		 nop();
		 sda=CY;
		 nop();
		 scl=1;	   /*置时钟线为高,通知被控器开始接收数据位*/
		 nop();
	  }
	scl=0;
	nop();
	sda=1;		   //SDA数据线空闲
	nop();
}

uchar read_byte_2402()		 //	 功能:用来接收从器件传来的数据,并判断总线错误(不发应答信号),发完后请用应答函数
{
	uchar i,k;
	scl=0;			  /*置时钟线为低,准备接收数据位*/
	nop();
	for(i=0;i<8;i++)
	  {
	  	scl=1;			 /*置时钟线为高使数据线上数据有效,保持数据的稳定*/
		nop();
		k=(k<<1)|sda;
		scl=0;
		nop();
	  }
	return k;
}

void write_add(uchar add,uchar dat)
{
		start();
		write_byte_2402(0xa0);
		respons();
		write_byte_2402(add);
		respons();
		write_byte_2402(dat);
		respons();
		stop();
}
uchar read_add(uchar add)
{
    uchar k;
	start();
	write_byte_2402(0xa0);
	respons();
	write_byte_2402(add);
	respons();
	start();
	write_byte_2402(0xa1);
	respons();
	k=read_byte_2402();
	stop();
	return k;
}
void init_2402()
{
	uint i;
	sda=1;
	nop();
	scl=1;
	nop();
	for(i=0;i<256;i++)
	{write_add(i,0);}
}
#endif

⌨️ 快捷键说明

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