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

📄 function.c

📁 基于Cortex-M3的全自动焊接机
💻 C
📖 第 1 页 / 共 5 页
字号:
                                    if(Dis_Buf[3]==10)  Dis_Buf[3] = 0;
                                }
                             }
                          } 
                      } break;
              }      
            case Down_Move  : //下移按键
              {
                      if(Seg_Flag==2)      //对数码管第三位(4为数据的千位)进行减计数操作
                      {
                          Dis_Buf[3]--;
                          if(Dis_Buf[3]<0) Dis_Buf[3] = 9;
                      }
                      if(Seg_Flag==3)       //对数码管第四位(4为数据的千位)进行减计数操作
                      {
                          Dis_Buf[2]--;
                          if(Dis_Buf[2]<0) //百位减到0对千位借位
                          {
                              Dis_Buf[2] = 9;
                              Dis_Buf[3] --;
                              if(Dis_Buf[3]<0)  Dis_Buf[3] = 9;
                          }
                      }
                      if(Seg_Flag==4)       //对数码管第五位(4为数据的千位)进行减计数操作
                      {
                          Dis_Buf[1]--;
                          if(Dis_Buf[1]<0)//十位减到0对百位借位
                          {
                              Dis_Buf[1] = 9;
                              Dis_Buf[2] --;
                              if(Dis_Buf[2]<0)//百位减到0对千位借位
                              {
                                Dis_Buf[2] = 9;
                                Dis_Buf[3] --;
                                if(Dis_Buf[3]<0)  Dis_Buf[3] = 9;
                              }
                          }
                      }
                      if(Seg_Flag==5)       //对数码管第六位(4为数据的千位)进行减计数操作
                      {
                          Dis_Buf[0]--;
                          if(Dis_Buf[0]<0)  //个位减到0对十位借位
                          {
                             Dis_Buf[0] = 9; 
                             Dis_Buf[1] --;
                             if(Dis_Buf[1]<0)//十位减到0对百位借位
                             {
                                Dis_Buf[1] = 9;
                                Dis_Buf[2] --;
                                if(Dis_Buf[2]<0)//百位减到0对千位借位
                                {
                                    Dis_Buf[2] = 9;
                                    Dis_Buf[3] --;
                                    if(Dis_Buf[3]<0)  Dis_Buf[3] =9;
                                }
                             }
                          }
                      } break;
              }
           default : break;
        }//end switch(GetKey)
        
        DispPresent_Data[DisMode_Num_aa] =Dis_Buf[3]*1000+Dis_Buf[2]*100+Dis_Buf[1]*10+Dis_Buf[0];         
     }
     else if(flag == 0)
     {
      
       Dis_Buf[3] = DispPresent_Data[DisMode_Num_aa]/1000;        //获取GetKey的千位
       Dis_Buf[2] = DispPresent_Data[DisMode_Num_aa]%1000/100;    //获取GetKey的百位
       Dis_Buf[1] = DispPresent_Data[DisMode_Num_aa]%100/10;      //获取GetKey的十位
       Dis_Buf[0] = DispPresent_Data[DisMode_Num_aa]%10;          //获取GetKey的个位 
       switch(GetKey)       //判断在按下设置键后按下的是:加(2)还是减(18 )
        {
            
            case Left_Move  : //左移
              {
                  Seg_Flag = Seg_Flag - 1;        
                  if(Seg_Flag<lowseg_num)
                  {  
                    Seg_Flag = 5;
                  }
                  break;
              }             
            case Right_Move : //右移
              { 
                  Seg_Flag = Seg_Flag + 1;       
                  if(Seg_Flag>5)
                  {
                    Seg_Flag = lowseg_num; 
                  }break;
              }
            case  Down_Move : 
              {
                      if(Seg_Flag==3)       //对数码管第四位(4为数据的百位)进行加计数操作
                      {
                          Dis_Buf[2]++;
                          if(Dis_Buf[2]==10)//百位加到十对千位进位
                          {
                              Dis_Buf[2] = 0;
                          }
                      }
                      if(Seg_Flag==4)       //对数码管第五位(4为数据的十位)进行加计数操作
                      {
                          Dis_Buf[1]++;
                          if(Dis_Buf[1]==10)//十位加到十对百位进位
                          {
                              Dis_Buf[1] = 0;
                              Dis_Buf[2] ++;
                              if(Dis_Buf[2]==10)//百位加到十对千位进位
                              {
                                  Dis_Buf[2] = 0;
                              }
                          }
                      }
                      if(Seg_Flag==5)       //对数码管第六位(4为数据的个位)进行加计数操作
                      {
                          Dis_Buf[0]++;
                          if(Dis_Buf[0]==10)//个位加到十对十位进位
                          {
                             Dis_Buf[0] = 0; 
                             Dis_Buf[1] ++;
                             if(Dis_Buf[1]==10)//十位加到十对百位进位
                             {
                                Dis_Buf[1] = 0;
                                Dis_Buf[2] ++;
                                if(Dis_Buf[2]==10)//百位加到十对千位进位
                                {
                                    Dis_Buf[2] = 0;

                                }
                             }
                          } 
                      } break;
              }      
            case   Up_Move: 
              {

                      if(Seg_Flag==3)       //对数码管第四位(4为数据的千位)进行减计数操作
                      {
                          Dis_Buf[2]--;
                          if(Dis_Buf[2]<0) //百位减到0对千位借位
                          {
                              Dis_Buf[2] = 9;
                          }
                      }
                      if(Seg_Flag==4)       //对数码管第五位(4为数据的千位)进行减计数操作
                      {
                          Dis_Buf[1]--;
                          if(Dis_Buf[1]<0)//十位减到0对百位借位
                          {
                              Dis_Buf[1] = 9;
                          }
                      }
                      if(Seg_Flag==5)       //对数码管第六位(4为数据的千位)进行减计数操作
                      {
                          Dis_Buf[0]--;
                          if(Dis_Buf[0]<0)  //个位减到0对十位借位
                          {
                             Dis_Buf[0] = 9; 
                             Dis_Buf[1] --;
                             if(Dis_Buf[1]<0)//十位减到0对百位借位
                             {
                                Dis_Buf[1] = 9;
                                Dis_Buf[2] --;
                                if(Dis_Buf[2]<0)//百位减到0对千位借位
                                {
                                    Dis_Buf[2] = 9;
                                }
                             }
                          }
                      } break;
              }
           default : break;
        }//end switch(GetKey)
        DispPresent_Data[DisMode_Num_aa] =Dis_Buf[3]*1000+Dis_Buf[2]*100+Dis_Buf[1]*10+Dis_Buf[0]; 
        DispPresent_Data[DisMode_Num_aa] = 0 -DispPresent_Data[DisMode_Num_aa];
     }
     
}


/***************************************************
函数名:Flash_Display()
功能:  设置参数的数码管闪烁函数
参数: 
说明:Seg_Flag需要闪烁的位
****************************************************/
void Flash_Display(unsigned  char Seg_Flag)
{   
    switch(Seg_Flag)
    {
      case 5:   ZLG7290_FlashShow_One(0x01);Delay(500); break;
              
      case 4:   ZLG7290_FlashShow_One(0x02);Delay(500);break; 
              
      case 3:   ZLG7290_FlashShow_One(0x04);Delay(500); break;
              
      case 2:   ZLG7290_FlashShow_One(0x08);Delay(500); break;    
      default : break;
   }
}

/***************************************************
函数名:Display()
功能:  
参数: 
说明:MOde_flag 模式标志0_3  Function_Num段号0-39  Flash_Num闪烁的位置
****************************************************/
void Display(unsigned char MOde_flag,unsigned char Function_Num,unsigned char Flash_Num)
{
    unsigned char DisMode_Num = 0;
     
    DisMode_Num = MOde_flag*30+Function_Num;//计算大数组中的位置
    if(DisMode_Num>=170)//用于报警和故障代码     (都显示ER)
    {
        if((Error_Num_Temp & 0x80) == 0x00 )
        {
          Error_Num_Temp |= 0x80;
          ZLG7290_Download_Display(ZLG7290_DpRam,  0,0,Disp_Char_Code[160]);//显示代码"E"
          ZLG7290_Download_Display(ZLG7290_DpRam+1,0,0,Disp_Char_Code[161]);//显示代码"R"
        }
        if((Error_Num_Temp & 0x7f) != Error_Num)
        {
          Error_Num_Temp = 0x80 | Error_Num;
          ClearAll(2,5);
          ZLG7290_Download_Display(ZLG7290_DpRam+2,0,0,Error_Num); 
          DispValue(ZLG7290_DpRam+4,Error_Table[Error_Num]);
        }
        Flash_Num_Temp = 0xff;  //从报警切换为其他显示模式时,强制刷新一次显示值。
    }
    else
    {        
       Error_Num_Temp = 0x40;
       if((DisMode_Num>150) && (DisMode_Num_Temp != DisMode_Num))
       {
            if(Set_Right[DisMode_Num]!=2)
            {
                if(Set_Right[DisMode_Num]==1)
                {
                    ZLG7290_Download_Display(ZLG7290_DpRam,  1,0,(Disp_Char_Code[DisMode_Num]&0xFF00)>>8);//显示代码
                    ZLG7290_Download_Display(ZLG7290_DpRam+1,1,0,Disp_Char_Code[DisMode_Num]&0x00Ff);               
                }
                else
                {
                    ZLG7290_Download_Display(ZLG7290_DpRam,  1,0,(Disp_Char_Code[DisMode_Num]&0xFF00)>>8);//显示代码
                    ZLG7290_Download_Display(ZLG7290_DpRam+1,0,0,Disp_Char_Code[DisMode_Num]&0x00Ff);             
                }
            }
       }
        else if((DisMode_Num<=150) && (DisMode_Num_Temp != DisMode_Num))
        {   if(Set_Right[DisMode_Num]!=2)
            {
                if(Set_Right[DisMode_Num]==1)
                {
                   ZLG7290_Download_Display(ZLG7290_DpRam,  0,0,(Disp_Char_Code[DisMode_Num]&0xFF00)>>8);//显示代码
                   ZLG7290_Download_Display(ZLG7290_DpRam+1,1,0,Disp_Char_Code[DisMode_Num]&0x00Ff); 
                }     
                else
                {
                   ZLG7290_Download_Display(ZLG7290_DpRam,  0,0,(Disp_Char_Code[DisMode_Num]&0xFF00)>>8);//显示代码
                   ZLG7290_Download_Display(ZLG7290_DpRam+1,0,0,Disp_Char_Code[DisMode_Num]&0x00Ff);              
                }
            }
        }
        if((DispPresent_Data[DisMode_Num] != DispPresent_Data_Temp) ||(Flash_Num_Temp != Flash_Num))
        {
          Init_Display(Disp_accuracy[DisMode_Num],DispPresent_Data[DisMode_Num]); //显示相应数据
          Flash_Display(Flash_Num);//闪烁选定位
        }
        DispPresent_Data_Temp = DispPresent_Data[DisMode_Num];
        Flash_Num_Temp = Flash_Num;
    }
    DisMode_Num_Temp = DisMode_Num;
}

/***************************************************
函数名:GPIO_Port_F_ISR()
功能:  GPIOF的中断服务函数
参数: 
说明:
****************************************************/
void  GPIO_Port_B_ISR(void)
{
    unsigned long  ulStatus;

    ulStatus  =  GPIOPinIntStatus(GPIO_PORTB_BASE , true);      //  读取中断状态
    GPIOPinIntClear(GPIO_PORTB_BASE , ulStatus);                //  清除中断状态,重要

    if ( ulStatus & GPIO_PIN_0 )                                //  如果PD1的中断状态有效
    {
          FlagINT = 1;

⌨️ 快捷键说明

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