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

📄 lm75.h

📁 嵌入式单片机开发,嵌入式单片机开发,嵌入式单片机开发
💻 H
字号:
// lm75
unsigned int lm75_remain_clk;// bu cang sheng xia de ge shu(clk)
#define eeprom_rtc8025_addclk_by_ic  EPLOCK_TIMER_8025_CLOCK

//ADD 2005-1-6----------------->START
unsigned char lm75_wrnbyte(ad,b)		
//ad word adderss,  b word counter
unsigned char ad,b;  
{unsigned char i,value;
 rtc_8025star();
 rtc_8025wbyte(0x90);
 if(1==rtc_8025chack())
    {rtc_8025wbyte(ad);
      if(1==rtc_8025chack())  //word adderss
          {value=1; 
           for (i=0;i<b;i++)
 	          {
 	            rtc_8025wbyte(rtc8025_timevalue[i]);
 	             if(0==rtc_8025chack())
 	                  {value=0;
 	                       //date
 	                    i=b;
						   }
 	            }
      	      }
 	 else 
	 	value=0;
      }
 else 
 	value=0;
 rtc_8025stop();
 return value;
}


unsigned char lm75_rdnbyte(ad,b)		//ad word adderss,  b word counter
unsigned char ad,b;
{unsigned char i,value;
value=1;
 rtc_8025star();
 rtc_8025wbyte(0x90);
 if(1==rtc_8025chack())
      {rtc_8025wbyte(ad);
        if(1==rtc_8025chack())
             {rtc_8025star();
               rtc_8025wbyte(0x91);
               if(1==rtc_8025chack())
                   for (i=0;i<b;i++)
 	                  {
                        	rtc8025_timevalue[i]=rtc_8025rbyte();
	                   if (i+1<b) rtc_8025ack();
	                   else rtc_8025noack();
 	                   }
               else value=0;
        	}
        else value=0;
 	}
else value=0;
rtc_8025stop();
return value;
}


void lm75_adset()
{rtc8025_timevalue[0]=00;
  rtc8025_timevalue[1]=00;
  lm75_wrnbyte(01,2);
}

void lm75_lowpower()
{rtc8025_timevalue[0]=01;
  rtc8025_timevalue[1]=01;
  lm75_wrnbyte(01,2);
}

//const unsigned char table_lm75[]={0,0,0,1,1,1,2,2,3,3,4,5,5,6,7,8,9,10,12,13,14,16,17,19,20,22,23,25,27,
	                                           //  29,31,33,35,37,39,42,44,46,49,52,54,57,60,62,65,68,71,74,77,80,84,
	                                            // 87,90,94,97,101,105,108,112,116,120,124,128,132,136,140};
//const unsigned int table_lm75[]={0,0,4,10,19,30,40,67,74,87,100,110,125,136,148,163,178,195,215,229,244,275,305,320,347,
//373,400,430,462,493,527,560,593,622,652,678,714,734,778,791,801,841,880,915,950,985,1025,1065,1105,1145,1185,1225,1270,
//1310,1355,1400,1445,1500,1555,1600,1660,1710,1770,1830,1900,1970};
// rtc  固定偏差	EEPROM

//#define eeprom_rtc8025_addclk_by_ic  0x7f00
void lm75_read1()  // 15 minute one time    ,one hour=4
{unsigned char l1,l3;
lm75_rdnbyte(00,2);
l1=rtc8025_timevalue[0];

lm75_rdnbyte(00,2);
l3=rtc8025_timevalue[0];

if(l1==l3)
    RAM[R_TEMP]=l1;

//RAM[0xb34]=l2;
}
/************************************************/
//ADD 2005-1-6----------------->END


void lm75_cal_clk(unsigned char a)  // 15 minute one time    ,one hour=4
{unsigned char l1,l2,l3,l4;
unsigned int i1,i2,i3;
unsigned long la;
l1=RAM[R_TEMP];
l2=l1&0x7f;
if((0x80&l1)==0) // +
	{
         	if(l2>25) 
			l2=l2-25;
         	else 
			l2=25-l2;
        }
else // -
	l2=128-l2+25;
if(l2>64) //  <=64
	l2=0;
// BU GU CHA
data_addr.addri=eeprom_rtc8025_addclk_by_ic;
if(0==read(EP1,2)) 
	{
		wr_data[0]=0;
        	 wr_data[1]=0;
       }
i1=a;
i3=l2;//  sub temp   
// tmp*tmp*6488/10000
// k=0 dot 6488  wen du bu cang xi shu
la=i3*i3;
la=la*6488;
i3=la/10000;
lm75_remain_clk=lm75_remain_clk+i1*i3;//i1*(i3+i2*i2);
i1=i1*wr_data[1];// t0
if(wr_data[0]!=0x00)//-
  	{
    		if(lm75_remain_clk<i1)
			lm75_remain_clk=0;
    		else 
			lm75_remain_clk=lm75_remain_clk-i1;
   	}
else//+
      	lm75_remain_clk=lm75_remain_clk+i1;
}

//  power on   lm75set,,power down  lm75lowpower
unsigned char rtc8025_addonesecond()
{unsigned char value,l;
value=0;
// second pulse(8025) pin low continue time
 if(0!=time_pd51_low)// >9ms   <450ms
 	if(time_pd51_low<45)
 		if(lm75_remain_clk>=32768)// one second==32768 clk
                   if(1==rtc8025_read_check())	               
		              if(rtc8025_timevalue[0]<0x59)
			            {
			            		l=rtc8025_timevalue[0];
		                     	l=value_hex_from_bcd(l)+1;// second add one
		                     	rtc8025_timevalue[0]=one_byte_hex_to_bcd(l);//((l/10)<<4)+(l%10);
		                     	delay_1ms();
		                     	delay_1ms();// delay 18us
						timenotchanged=1;
		                     	value=rtc8025_write();	
		                     	delay_1ms();// delay 18us
		                     	if(1==rtc8025_read_check())
	                                   	move_rtc8025_to_softrtc();
					timenotchanged=0;// xu liang cal, no change minute
			              }
if(value==1)
	 lm75_remain_clk=lm75_remain_clk-32768+328*time_pd51_low+163;// ii163  --5ms
return value;
}
		        

unsigned char lm75usesecond;
unsigned int numlm75second;
unsigned char num_lm75read;
void lm75_main_mode()
{
  if(RSOFT_RTC_SECOND!=lm75usesecond)
      {
      		lm75usesecond=RSOFT_RTC_SECOND;
		num_lm75read=num_lm75read+1;
		if(num_lm75read>9)// ll  10 second read lm75
			{
				num_lm75read=0;
				lm75_read1();
			}
        	numlm75second= numlm75second+1;
        	if(numlm75second>=900)// ii900    15 minute
   	    		{
   	    			numlm75second=0;
             			lm75_cal_clk(1);
   	     		}
        }
rtc8025_addonesecond();   	  
}

































⌨️ 快捷键说明

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