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

📄 main.c

📁 基于MC908LK24 MCU的热量表程序
💻 C
📖 第 1 页 / 共 2 页
字号:
 	LDAT_15=0X00;
  	LDAT_16=0X00;
  	LDAT_17=0X00;
  	
  	while((MODE==1)&(sec<20))
  	{

		read_18b20();
		
		if(olddata!=data[0]){LCD_CL(6);LCD_CL(7);LCD_CL(8);olddata=data[0];}
		LCD_TEMP(data[0]);
		
		sec++;
	}
	
		
//	MODE=0;

}


void OUT_TEMP(void)
{	
	char sec;

	unsigned int olddata=0;

	sec=0;

	

	LDAT_1=0X00;
  	LDAT_2=0X00;
  	LDAT_3=0X00;
  	LDAT_4=0X10;
  	LDAT_5=0X00;
  	LDAT_6=0X00;
  	LDAT_7=0X00;
  	LDAT_8=0X10;
  	LDAT_9=0X00;
  	LDAT_10=0X02;
  	LDAT_11=0X00;
  	LDAT_12=0X00;
  	LDAT_13=0X00;
  	LDAT_14=0X00;
 	LDAT_15=0X00;
  	LDAT_16=0X00;
  	LDAT_17=0X00;
  	
  	while((MODE==2)&(sec<20))
  	{

		read_18b20();
			

		if(olddata!=data[1]){LCD_CL(6);LCD_CL(7);LCD_CL(8);olddata=data[1];}
		LCD_TEMP(data[1]);
		
		sec++;
	}
	
//	MODE=0;		
	


}





void read_18b20(void)
{	unsigned int datb;

	PORTF=PORTF|0x01;
	delay(1000);

	data[0]=0;
	data[1]=0;
//	data[2]=0;
	
	
	
    w1_init(1);
    w1_write(0XCC,1);
	w1_write(0X44,1); 
	
    w1_init(2);
    w1_write(0XCC,2);
	w1_write(0X44,2); 

    w1_init(3);
    w1_write(0XCC,3);
	w1_write(0X44,3); 
	
	 
	delay(9500);


   	w1_init(1);
    w1_write(0XCC,1);
	w1_write(0XBE,1);  
	datb=w1_read(1);
	data[0]=w1_read(1);
	
	data[0]=(((data[0]<<8)|datb)*5)>>3;
	
	if(data[0]>=999){data[0]=999;}

   	w1_init(2);
    w1_write(0XCC,2);
	w1_write(0XBE,2);  
	datb=w1_read(2);
	data[1]=w1_read(2);


	data[1]=(((data[1]<<8)|datb)*5)>>3;
	
	if(data[1]>=999){data[1]=999;}



/*   	w1_init(3);
    w1_write(0XCC,3);
	w1_write(0XBE,3);  
	datb=w1_read(3);
	data[2]=w1_read(3);

	data[2]=(((data[2]<<8)|datb)*5)>>3;
	
	if(data[2]>=999){data[2]=999;}	
	
	*/
	
	PORTF=PORTF&(~0X01);


}







void LCD_TIME(unsigned char d,char x)
{
	unsigned char i;

	
	i=d%10;
	LCD_DISP(i,x+1);
	d=d/10;
	i=d%10;
	LCD_DISP(i,x);
	



}










void TIME(void)
{	
	char sec;

	unsigned char old_second=99;
	unsigned char old_min=0;
	unsigned char old_hour=0;
	
	
	
	sec=0;
	
	
	
	hour=RTC_HRR;
	min=RTC_MINR;
	second=RTC_SECR;

	LDAT_1=0X00;
  	LDAT_2=0X00;
  	LDAT_3=0X00; 
  	LDAT_4=0X00;
  	LDAT_5=0X10;
  	LDAT_6=0X00;
  	LDAT_7=0X10;
  	LDAT_8=0X00;
  	LDAT_9=0X00;
  	LDAT_10=0X20;
  	LDAT_11=0X00;
  	LDAT_12=0X00;
  	LDAT_13=0X00;
  	LDAT_14=0X00;
 	LDAT_15=0X00;
  	LDAT_16=0X00;
  	LDAT_17=0X00;
  	
  	while((MODE==3)&(sec<20))
  	{

		hour=RTC_HRR;
		min=RTC_MINR;
		second=RTC_SECR;

		if((old_hour!=hour))
		{	LCD_CL(3);
			LCD_CL(4);
			old_hour=hour;
			LCD_TIME(hour,3);
		}

		if((old_min!=min))
		{	LCD_CL(5);
			LCD_CL(6);
			old_min=min;
			LCD_TIME(min,5);
		}

		if((old_second!=second))
		{	LCD_CL(7);
			LCD_CL(8);
			old_second=second;
			LCD_TIME(second,7);
		}
	
		 __RESET_WATCHDOG(); /* kicks the dog */
		
		sec++;
	}
	
//		MODE=0;


}



void FLOW(void)
{	
	char sec=0,i=0;

	unsigned long flow_t;
	
/*	unsigned char old_min=0;
	unsigned char old_hour=0;
	
	
	
	
*/
	LDAT_1=0X00;
  	LDAT_2=0X00;
  	LDAT_3=0X00; 
  	LDAT_4=0X00;
  	LDAT_5=0X00;
  	LDAT_6=0X10;
  	LDAT_7=0X00;
  	LDAT_8=0X00;
  	LDAT_9=0X40;
  	LDAT_10=0X10;
  	LDAT_11=0X00;
  	LDAT_12=0X00;
  	LDAT_13=0X00;
  	LDAT_14=0X00;
 	LDAT_15=0X00;
  	LDAT_16=0X00;
  	LDAT_17=0X00;
  	
  	while((MODE==4)&(sec<20))
  	{
  		flow_t=flow;
  	
  	
	  	i=flow_t%10;
  		LCD_CL(8);
		LCD_DISP(i,8);
  	
	
		flow_t=flow_t/10;  	
  		i=flow_t%10;
  		LCD_CL(7);
		LCD_DISP(i,7);
  	

		flow_t=flow_t/10;  	
  		i=flow_t%10;
  		LCD_CL(6);
		LCD_DISP(i,6);
  	
  	
		flow_t=flow_t/10;  	
  		i=flow_t%10;
  		LCD_CL(5);
		LCD_DISP(i,5);




		flow_t=flow_t/10;  	
  		i=flow_t%10;
  		LCD_CL(4);
		if(flow_t>=1){LCD_DISP(i,4);}

		flow_t=flow_t/10;  	
  		i=flow_t%10;
  		LCD_CL(3);
		if(flow_t>=1){LCD_DISP(i,3);};

		flow_t=flow_t/10;  	
  		i=flow_t%10;
  		LCD_CL(2);
		if(flow_t>=1){LCD_DISP(i,2);}

		flow_t=flow_t/10;  	
  		i=flow_t%10;
  		LCD_CL(1);
		if(flow_t>=1){LCD_DISP(i,1);}

  	
		 __RESET_WATCHDOG(); /* kicks the dog */
		
		sec++;
	}
	
//		MODE=0;


}


void KWH(void)
{	
	char i=0;
	unsigned char old_flow=99;
	unsigned long kwh_t;
	
	LDAT_1=0X00;
  	LDAT_2=0X00;
  	LDAT_3=0X00; 
  	LDAT_4=0X00;
  	LDAT_5=0X00;
  	LDAT_6=0X00;
  	LDAT_7=0X10;
  	LDAT_8=0X00;
  	LDAT_9=0X80;
  	LDAT_10=0X08;
  	LDAT_11=0X00;
  	LDAT_12=0X00;
  	LDAT_13=0X00;
  	LDAT_14=0X00;
 	LDAT_15=0X00;
  	LDAT_16=0X00;
  	LDAT_17=0X00;
  	
  	while((MODE==0))
  	{
  	
  		if(!temp2_flow)
  		{
  			CAL_KWH();
  			
  		}
  	
  		kwh_t=kwh;
  	
  	
	  	i=kwh_t%10;
  		LCD_CL(8);
		LCD_DISP(i,8);
  	
	
		kwh_t=kwh_t/10;  	
  		i=kwh_t%10;
  		LCD_CL(7);
		LCD_DISP(i,7);
  	

		kwh_t=kwh_t/10;  	
  		i=kwh_t%10;
  		LCD_CL(6);
		LCD_DISP(i,6);
  	
  	
		kwh_t=kwh_t/10;  	
  		i=kwh_t%10;
  		LCD_CL(5);
		LCD_DISP(i,5);




		kwh_t=kwh_t/10;  	
  		i=kwh_t%10;
  		LCD_CL(4);
		if(kwh_t>=1){LCD_DISP(i,4);}

		kwh_t=kwh_t/10;  	
  		i=kwh_t%10;
  		LCD_CL(3);
		if(kwh_t>=1){LCD_DISP(i,3);};

		kwh_t=kwh_t/10;  	
  		i=kwh_t%10;
  		LCD_CL(2);
		if(kwh_t>=1){LCD_DISP(i,2);}

		kwh_t=kwh_t/10;  	
  		i=kwh_t%10;
  		LCD_CL(1);
		if(kwh_t>=1){LCD_DISP(i,1);}

  	
		 __RESET_WATCHDOG(); /* kicks the dog */


	//	kwh++;
	
//		delay(10);
	    
		

	}
	



}





void main(void) {
//	unsigned long temp1,temp2,temp3;
	unsigned int i=255;
	
	EnableInterrupts; /* enable interrupts */
	/* include your code here */	
	
	P_TCL=0X00;
	P_BWC=0X80;
	P_MSH=0X00;
	P_MSL=0XF5;
	P_MRS=0XD1;
	P_MDS=0X01;
	P_TCL=0X30;	
	P_TCL=0X30;		
	
	RTC_COMR=0x00;
	RTC_COMR=0x01;
	RTC_COMR=0x03;
	RTC_COMR=0x02;
	
	
	RTC_CDTA=0x00;
	RTC_CR1=0x00;
	RTC_CR2=0x10;


	RTC_ALMR=0x00;
	RTC_ALHR=0x00;
	
	
	RTC_YRR=year;
	RTC_MTHR=month;
	RTC_DAYR=day;
	RTC_HRR=hour;
	RTC_MINR=min;
	RTC_SECR=second;
	RTC_DOWR=week;
		
	RTC_COMR=0x02;
	RTC_COMR=0x02;		
		
		
	RTC_COMR=0x00;
	RTC_COMR=0x01;
	RTC_COMR=0x03;
	RTC_COMR=0x02;
	
	
	RTC_CDTA=0x00;
	RTC_CR1=0x00;
	RTC_CR2=0x10;


	RTC_ALMR=0x00;
	RTC_ALHR=0x00;
	
	
	RTC_YRR=year;
	RTC_MTHR=month;
	RTC_DAYR=day;
	RTC_HRR=hour;
	RTC_MINR=min;
	RTC_SECR=second;
	RTC_DOWR=week;
		
	RTC_COMR=0x02;
	RTC_COMR=0x02;		
		
		
		
		
	DDR_F=DDR_F|0X01;  	
	LED_F=LED_F|0X01;
	PORTF=PORTF|0X01;
	DDR_A=DDR_A&0XF0;
	DDR_D=DDR_D&~(0x0e);
	PORTD=PORTD|0x0e;
	  	
  	KB_IER=0X0F;
  	KB_SCR=0X00;
  	
  	INT_SCR=0x04;
  	xxi=0;
  	
  //	LED_F=0X02;
  	CONFIG_2=(CONFIG_2|0X8C);
  	LCD_CR=0X90+0X00;
  	LCD_CLK=0X40+0X10+0X00;

	LDAT_1=0X00;
  	LDAT_2=0X00;
  	LDAT_3=0X00;
  	LDAT_4=0X00;
  	LDAT_5=0X00;
  	LDAT_6=0X00;
  	LDAT_7=0X00;
  	LDAT_8=0X00;
  	LDAT_9=0X00;
  	LDAT_10=0X00;
  	LDAT_11=0X00;
  	LDAT_12=0X00;
  	LDAT_13=0X00;
  	LDAT_14=0X00;
 	LDAT_15=0X00;
  	LDAT_16=0X00;
  	LDAT_17=0X00;
  	
//	i=1;
  	
	while(1)
	
	{
/*
	LDAT_1=0X00;
  	LDAT_2=0X00;
  	LDAT_3=0X00;
  	LDAT_4=0X00;
  	LDAT_5=0X00;
  	LDAT_6=0X00;
  	LDAT_7=0X00;
  	LDAT_8=0X00;
  	LDAT_9=0X00;
  	LDAT_10=0X00;
  	LDAT_11=0X00;
  	LDAT_12=0X00;
  	LDAT_13=0X00;
  	LDAT_14=0X00;
 	LDAT_15=0X00;
  	LDAT_16=0X00;
  	LDAT_17=0X00;

	LCD_DISP(i,i);
	i++;
	if(i>8){i=1;}
	
	delay(5000);
*/	
/*	year=RTC_YRR;
	month=RTC_MTHR;
	day=RTC_DAYR;
	hour=RTC_HRR;
	min=RTC_MINR;
	second=RTC_SECR;
	week=RTC_DOWR;
*/	

	if(MODE==0){KWH();}
	if(MODE==1){IN_TEMP();}
	if(MODE==2){OUT_TEMP();}
	if(MODE==3){TIME();}
	if(MODE==4){FLOW();}
	if(flow>99999999){flow=0;}
	
	if(kwh>99999999){kwh=0;}
	

  
    __RESET_WATCHDOG(); /* kicks the dog */
  } /* loop forever */
}

⌨️ 快捷键说明

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