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

📄 m128_alky_touch_con1.c

📁 m8做的电压检测
💻 C
📖 第 1 页 / 共 5 页
字号:
	          KEY_TEMP[5]=0;
	          KEY_TEMP[4]=0;
	          KEY_TEMP[3]=F_LDZQ_Value/1000;
	          KEY_TEMP[2]=(F_LDZQ_Value%1000)/100;
	          KEY_TEMP[1]=((F_LDZQ_Value%1000)%100)/10;
	          KEY_TEMP[0]=((F_LDZQ_Value%1000)%100)%10;
	          Set_TOUCH_KEY_DISP_F();
	          Display_TOUCH_KEY();
	          Display_TOUCH_Message(1);
         break;
         case 2:            //温度周期修改
	          MENU_NUM=2;
	          KEY_TEMP[5]=0;
	          KEY_TEMP[4]=0;
	          KEY_TEMP[3]=0;
	          KEY_TEMP[2]=0;
	          KEY_TEMP[1]=F_WDZQ_Value/10;
	          KEY_TEMP[0]=F_WDZQ_Value%10;
	          Set_TOUCH_KEY_DISP_F();
	          Display_TOUCH_KEY();
	          Display_TOUCH_Message(2);
         break;
         case 3:            //时间修改
	          MENU_NUM=3;
	          KEY_TEMP[5]=0;
	          KEY_TEMP[4]=0;
	          KEY_TEMP[3]=(Hour>>4)&0x03;
	          KEY_TEMP[2]=Hour&0x0F;
	          KEY_TEMP[1]=(Minute>>4)&0x07;
	          KEY_TEMP[0]=Minute&0x0F;
	          Set_TOUCH_KEY_DISP_F();
	          Display_TOUCH_KEY();
	          Display_TOUCH_Message(3);
         break;
         case 4:            //浓度PID修改
	          MENU_NUM=4;
	          KEY_TEMP[5]=LD_PID.Proportion/10;
	          KEY_TEMP[4]=LD_PID.Proportion%10;
	          KEY_TEMP[3]=LD_PID.Integral/10;
	          KEY_TEMP[2]=LD_PID.Integral%10;
	          KEY_TEMP[1]=LD_PID.Derivative/10;
	          KEY_TEMP[0]=LD_PID.Derivative%10;
	          Set_TOUCH_KEY_DISP_F();
	          Display_TOUCH_KEY();
	          Display_TOUCH_Message(4);
         break;
         case 5:            //温度PID修改
	          MENU_NUM=5;
	          KEY_TEMP[5]=WD_PID.Proportion/10;
	          KEY_TEMP[4]=WD_PID.Proportion%10;
	          KEY_TEMP[3]=WD_PID.Integral/10;
	          KEY_TEMP[2]=WD_PID.Integral%10;
	          KEY_TEMP[1]=WD_PID.Derivative/10;
	          KEY_TEMP[0]=WD_PID.Derivative%10;
	          Set_TOUCH_KEY_DISP_F();
	          Display_TOUCH_KEY();
	          Display_TOUCH_Message(5);
         break;
         case 6:            //日期修改
	          MENU_NUM=6;
	          KEY_TEMP[5]=Year>>4;
	          KEY_TEMP[4]=Year&0x0F;
	          KEY_TEMP[3]=(Month>>4)&0x01;
	          KEY_TEMP[2]=Month&0x0F;
	          KEY_TEMP[1]=(Date>>4)&0x03;
	          KEY_TEMP[0]=Date&0x0F;
	          Set_TOUCH_KEY_DISP_F();
	          Display_TOUCH_KEY();
	          Display_TOUCH_Message(6);
         break;
         case 7:            //标定52PPM
	          MENU_NUM=7;
	          KEY_TEMP[5]=0;
	          KEY_TEMP[4]=0;
	          KEY_TEMP[3]=0;
	          KEY_TEMP[2]=Set_LD_Value/100;
	          KEY_TEMP[1]=(Set_LD_Value%100)/10;
	          KEY_TEMP[0]=(Set_LD_Value%100)%10;
	          Set_TOUCH_KEY_DISP_F();
	          Display_TOUCH_KEY();
	          Display_TOUCH_Message(7);
	          Display_TOUCH_KEY_BD();
	          Disp_Set_LD111(12,BDLD_052);
         break;
         case 8:            //标定130PPM
	          MENU_NUM=8;
	          KEY_TEMP[5]=0;
	          KEY_TEMP[4]=0;
	          KEY_TEMP[3]=0;
	          KEY_TEMP[2]=Set_LD_Value/100;
	          KEY_TEMP[1]=(Set_LD_Value%100)/10;
	          KEY_TEMP[0]=(Set_LD_Value%100)%10;
	          Set_TOUCH_KEY_DISP_F();
	          Display_TOUCH_KEY();
	          Display_TOUCH_Message(8);
	          Display_TOUCH_KEY_BD();
	          Disp_Set_LD111(12,BDLD_130);
         break;
         case 9:            //标定208PPM
	          MENU_NUM=9;
	          KEY_TEMP[5]=0;
	          KEY_TEMP[4]=0;
	          KEY_TEMP[3]=0;
	          KEY_TEMP[2]=Set_LD_Value/100;
	          KEY_TEMP[1]=(Set_LD_Value%100)/10;
	          KEY_TEMP[0]=(Set_LD_Value%100)%10;
	          Set_TOUCH_KEY_DISP_F();
	          Display_TOUCH_KEY();
	          Display_TOUCH_Message(9);
	          Display_TOUCH_KEY_BD();
	          Disp_Set_LD111(12,BDLD_208);
         break;
         case 10:            //标定300PPM
	          MENU_NUM=10;
	          KEY_TEMP[5]=0;
	          KEY_TEMP[4]=0;
	          KEY_TEMP[3]=0;
	          KEY_TEMP[2]=Set_LD_Value/100;
	          KEY_TEMP[1]=(Set_LD_Value%100)/10;
	          KEY_TEMP[0]=(Set_LD_Value%100)%10;
	          Set_TOUCH_KEY_DISP_F();
	          Display_TOUCH_KEY();
	          Display_TOUCH_Message(10);
	          Display_TOUCH_KEY_BD();
	          Disp_Set_LD111(12,BDLD_300);
         break;
         case 11:            //标定0PPM
	          MENU_NUM=11;
	          KEY_TEMP[5]=0;
	          KEY_TEMP[4]=0;
	          KEY_TEMP[3]=0;
	          KEY_TEMP[2]=Set_LD_Value/100;
	          KEY_TEMP[1]=(Set_LD_Value%100)/10;
	          KEY_TEMP[0]=(Set_LD_Value%100)%10;
	          Set_TOUCH_KEY_DISP_F();
	          Display_TOUCH_KEY();
	          Display_TOUCH_Message(11);
	          Display_TOUCH_KEY_BD();
	          Disp_Set_LD111(12,LD_CLR_Value);
         break;
         case 12:            //返回
	          Clr_TOUCH_MENU_DISP_F();
	          Clr_TOUCH_KEY_DISP_F();
	          Display_Time_CLR();
	          Display_CON320240();
         break;
         break;
         case 13:            //空
	          k=20;
         break;
         break;
         case 14:            //温度修改
	          MENU_NUM=14;
	          KEY_TEMP[5]=0;
	          KEY_TEMP[4]=0;
	          KEY_TEMP[3]=0;
	          KEY_TEMP[2]=0;
	          KEY_TEMP[1]=Set_WenDu_Value/10;
	          KEY_TEMP[0]=Set_WenDu_Value%10;
	          Set_TOUCH_KEY_DISP_F();
	          Display_TOUCH_KEY();
	          Display_TOUCH_Message(12);
         break;
         case 15:            //风量修改
	          MENU_NUM=15;
	          KEY_TEMP[5]=0;
	          KEY_TEMP[4]=0;
	          KEY_TEMP[3]=Set_LiuLiang_Value/1000;
	          KEY_TEMP[2]=(Set_LiuLiang_Value%1000)/100;
	          KEY_TEMP[1]=((Set_LiuLiang_Value%1000)%100)/10;
	          KEY_TEMP[0]=((Set_LiuLiang_Value%1000)%100)%10;
	          Set_TOUCH_KEY_DISP_F();
	          Display_TOUCH_KEY();
	          Display_TOUCH_Message(13);
         break;
	    
	   }
	  }
          
          
		    if(!(k==20))
	        Sound_Nms(70);
    }
	   
	   
	
    //**************************************************
    //**************************************************
 if(YN_TOUCH_KEY_DISP_F)
 {
 	Display_TOUCH_KEY_VAL();
 }
 
    CON_Value_XIANSHI();
     
      Button_YN();
 TIMSK = 0x45;     
}

//******************************************
//UART0 initialize
// desired baud rate: 110
// actual: baud rate:110 (0.0%)
// char size: 8 bit
// parity: Disabled
void uart0_init(void)
{
 UCSR0B = 0x00; //disable while setting baud rate
 UCSR0A = 0x00;
 UCSR0C = 0x06;
 UBRR0L = 0xE0; //set baud rate lo
 UBRR0H = 0x00; //set baud rate hi
 UCSR0B = 0x98;
}

//******************************************
#pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC
void uart0_rx_isr(void)
{
 //uart has received a character in UDR
}

//******************************************
//ADC initialize
// Conversion time: 13uS
//右对齐,参考电压AREF
void adc_init(void)
{
 ADCSRA = 0x00; //disable adc
 ADMUX = 0x00; //select adc input 0
 ACSR  = 0x80; //模拟比较器禁用
 ADCSRA = 0x82;
}
//******************************************
uint SYS_ADC(unsigned char n)
{
  unsigned char i,j;
  ADMUX = n;           //select adc input 
  ADCSRA |= (1<<ADSC);		   //ADC 开始转换
  while(ADCSRA & (1<<ADSC))    //等待转换结束
  ;
  i=ADCL;
  j=ADCH;
  return(j*256+i);
}

//******************************************
float WENDU_TZ(uint ad_v)
{
	if(ad_v<239)  return 0;
	else
	  {
	    if(ad_v<341)  return ((ad_v-239)*0.1);              //0-10
	    else
	      {
	      	if(ad_v<567)  return ((ad_v-341)*0.075+10);    //10-27
	        else
	          {
	            if(ad_v<669)  return ((ad_v-567)*0.1+27);   //27-37
	            else
	              {
	              	if(ad_v<753)  return ((ad_v-669)*0.12+37);
	              	else
	              	  {
	              	    if(ad_v<960)  return ((ad_v-753)*0.242+47);
	              	    else return 99.9;
	              	  }
	              }
	          }
	      }
	  }
}
//******************************************
//call this routine to initialize all peripherals
void init_devices(void)
{
 //stop errant interrupts until set up
 CLI(); //disable all interrupts
 //XDIV  = 0x00; //xtal divider
 XMCRA = 0x00; //external memory
 port_init();
 timer0_init();
 timer1_init();
 timer2_init();
// timer3_init();
 uart0_init();
 adc_init();

 MCUCR = 0x00;
 EICRA = 0x00; //extended ext ints
 EICRB = 0x00; //extended ext ints
 EIMSK = 0x00;
 TIMSK = 0x45; //timer interrupt sources
// ETIMSK = 0x04; //extended timer interrupt sources
 ETIMSK = 0x00; //extended timer interrupt sources
 //SEI(); //re-enable interrupts
 //all peripherals are now initialized
}
//******************************************
//******************************************
//******************************************
void XG_F_Set(unsigned char kkk)
{
  unsigned char k,Temp,Temp1;
  
  k=kkk;
  
 switch(F_FLAG1)
 {
   case 1: //温控
      if(k<10)
       {
        switch(F_FLAG2)
        {
          case 1:
            if(k<2)
              {
 	           Temp=F_WDZQ_Value%10;		//取低位
 	           F_WDZQ_Value=k*10+Temp;
 	           if(F_WDZQ_Value>16)  F_WDZQ_Value=16;
 	           F_FLAG2=2;
 	          }
 	         break;
          case 2:
 	         Temp=F_WDZQ_Value/10;		//
 	         F_WDZQ_Value=Temp*10+k;
 	         if(F_WDZQ_Value>16)  F_WDZQ_Value=16;
 	    }
 	  }
   break;
   case 2: //注样
      if(k<10)
       {
        switch(F_FLAG2)
        {
          case 1:
 	         Temp=F_LDZQ_Value%1000;		//
 	         F_LDZQ_Value=k*1000+Temp;
 	         F_FLAG2=2;
 	         break;
          case 2:
 	         Temp=F_LDZQ_Value/1000;		//
 	         Temp1=F_LDZQ_Value%100;		//
 	         F_LDZQ_Value=Temp*1000+k*100+Temp1;
 	         F_FLAG2=3;
 	         break;
          case 3:
 	         Temp=F_LDZQ_Value/100;		//
 	         Temp1=F_LDZQ_Value%10;		//
 	         F_LDZQ_Value=Temp*100+k*10+Temp1;
 	         F_FLAG2=4;
 	         break;
          case 4:
 	         Temp=F_LDZQ_Value/100;		//
 	         Temp1=(F_LDZQ_Value%100)/10;		//
 	         F_LDZQ_Value=Temp*100+Temp1*10+k;
 	    }
 	    if(F_LDZQ_Value>4000)    F_LDZQ_Value=4000;
 	  }
   break;
   case 3: //换算因子
        if(k==11)
        {
        switch(F_FSYZ_FLAG)
        {
          case 0:
               F_FSYZ_FLAG=1;
               break;
          case 1:
               F_FSYZ_FLAG=2;
               break;
          case 2:
               F_FSYZ_FLAG=0;
        }
       }
   break;
   case 4: //系统时间
      if(k<10)
       {
	   	DS1302_Write(DS1302_CONTROL_Reg,0x00);//关闭写保护
        switch(F_FLAG2)
        {
          case 1: 
	   	  	   Year&=0x0F;
	   	  	   k=(k<<4)|Year;
	           DS1302_Write(DS1302_YEAR_Reg,k); //年
	           F_FLAG2=2;
	   	  break;		//case 1
	   	  case 2: 
	   	  	   Year&=0xF0;
	   	  	   k=k|Year;
	           DS1302_Write(DS1302_YEAR_Reg,k); //年
	           F_FLAG2=3;
	   	  break;		//case 2
	   	  case 3: 
	   	       if(k<2)
	   	       {
	   	       	Month&=0x0F;
	   	       	if(k==1 & Month>2)  Month=2;
	   	  	    k=(k<<4)|Month;
	            DS1302_Write(DS1302_MONTH_Reg,k); //月
	            F_FLAG2=4;

⌨️ 快捷键说明

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