STC单片机和串口触摸屏自由通讯协议

/*------------------主循环程序----------------*/      
              void   main( )                     /*主程序开始*/
              {                                  /**加一**/
               P0M0=0XFF;                        //推挽输出
               P0M1=0X00;                        //推挽输出
               P1M0=0XFF;                        //推挽输出
               P1M1=0X00;                        //推挽输出
               P2M0=0X00;                        //准双向输入
               P2M1=0X00;                        //准双向输入
               P3M0=0X00;                        //准双向输入
               P3M1=0X00;                        //准双向输入
               P4M0=0XE1;                        //P4.0 4.5 4.6 4.7推挽输出
               P4M1=0X00;                        //P4.1 4.2 4.3 4.4准双向输入
               P5M0=(P5M0&~0x03)|0x3C;           //P5.2 5.3 5.4 5.5推挽输出
               P5M1&=~0x3F;                      //P5.0 5.1 准双向输入
               P6M0=0X0F;                        //P6.0 6.1 6.2 6.3推挽输出
               P6M1=0;                           //P6.4 6.5 6.6 6.7准双向输入
               P7M0=0XF0;                        //P7.4 7.5 7.6 7.7推挽输出
               P7M1=0X00;                        //P7.0 7.1 7.2 7.3准双向输入
               IT0=1;                            //设置INT0的中断类型 (1:仅下降沿 0:上升沿和下降沿)
               EX0=1;                            //使能INT0中断
               EA=1;
               Timer0_Init();                    //定时器0初始化
               Timer1_Init();                    //定时器0初始化
               InitUart();                       //初始化串口定时器1做波特率发生器
               P_SW1=0x00;                       //RXD_2/P3.0, TXD_2/P3.1
               EX_INT0=1;                               //拉高P3.2
               IT0=1;                            //设置INT0的中断类型 (1:仅下降沿 0:上升沿和下降沿)
               EX0=1;                            //使能INT0中断    
               MotoraRun_Flag=0;                 //定时器电机A运行标志
               MotorbRun_Flag=0;                 //定时器电机B运行标志
               MotorcRun_Flag=0;                 //定时器电机C运行标志
               MotordRun_Flag=0;                 //定时器电机D运行标志    
               i=0;                              //数组计数器归零
               red_eeprom();
               delay10ms(10);
               printf("XFF,XFF,XFF");            //向串口屏发启动信号
               delay10ms(50);
               Counter=0;                         //产量计数器
               Pump_Counter=0;                     //打油计数器
               lub_Counter=0;                     //润滑计数器
               printf("n0.val=%d\xff\xff\xff",Counter);
               printf("n0.val=%d\xff\xff\xff",Counter);     //
               Receive_Flag=0;                   //接收数据标志置零
               WARNING_Time=0;                   //报警计时计数器
               RUN_Flag=0;                       //自动运行标志
               OutPut8=0;                          //手动
               Time_Flag=0;                         //报警定时启用标志
               Error_Flag=0;                     //报警定时到启动标志
               Zero_Flag=0;                         //工位零点标志
               Point_Flag=0;                     //工位零点完成标志
               while(1)
               {
                delay10ms(5);
                if(Receive_Flag==1)
                {
                i=0;                             //数组计数器归零
                OutPut22=1;                      //帧数据指示灯接收一帧开启处理完关闭
                Receive_Flag=0;
                if(a[0]==0XA0&&a[1]==0XA0)            
                 {
                  if(a[2]==0X01)                 //夹具1开
                  {
                  Voice();                       //提示声
                  OutPut9=0;
                  }    
                  else
                  if(a[2]==0X00)                 //夹具1关
                  {
                  Voice();                       //提示声
                  OutPut9=1;
                  }    
                 }
                 else if(a[0]==0XA0&&a[1]==0XA1)             
                 {
                 if(a[2]==0X01)                  //夹具2开
                  {
                  Voice();                       //提示声
                  OutPut10=0;  
                  }
                 else
                 if(a[2]==0X00)                  //夹具2关    
                  {        
                  Voice();                       //提示声
                  OutPut10=1;  
                  }
                 }
                 else if(a[0]==0XA0&&a[1]==0XA2)     
                 {
                  if(a[2]==0X01)                 //夹具3开
                  {    
                  Voice();                       //提示声
                  OutPut11=0;
                  }
                 else
                 if(a[2]==0X00)                  //夹具3关
                  {
                  Voice();                       //提示声
                  OutPut11=1;
                  }
                 }
                 else if (a[0]==0XA0&&a[1]==0XA3)     
                 {
                 if(a[2]==0X01)                  //夹具4开
                  {
                  Voice();                       //提示声
                  OutPut12=0;
                  }
                 else
                 if(a[2]==0X00)                  //夹具4关
                  {
                  Voice();                       //提示声
                  OutPut12=1;  
                  }
                 }
                 else if(a[0]==0XA0&&a[1]==0XA4)             
                 {
                 if(a[2]==0X01)                  //夹具5开
                  {
                  Voice();                       //提示声
                  OutPut13=0;   
                  }
                 else
                 if(a[2]==0X00)                  //夹具5关
                  {    
                  Voice();                       //提示声
                  OutPut13=1;  
                  }
                 }
                 else if(a[0]==0XA0&&a[1]==0XA5)     
                 {
                 if(a[2]==0X01)                  //夹具6开
                  {
                  Voice();                       //提示声
                  OutPut14=0;
                  }
                 else
                 if(a[2]==0X00)                  //夹具6关
                  {
                  Voice();                       //提示声
                  OutPut14=1;
                  }
                 }
                 else if(a[0]==0XA0&&a[1]==0X5A)     
                 {
                  if(a[2]==0X01)                 //机座进
                  {
                  Voice();                       //提示声
                  OutPut3=0;
                  }
                 else
                 if(a[2]==0X00)                  //机座退
                  {
                  Voice();                       //提示声
                  OutPut3=1;
                  }
                 }
                 else if(a[0]==0XA0&&a[1]==0X6A)     
                 {
                 if(a[2]==0X01)                  //润滑缸进
                  {
                  Voice();                       //提示声
                  OutPut18=0;
                  }
                 else
                 if(a[2]==0X00)                  //润滑缸退
                  {
                  Voice();                       //提示声
                  OutPut18=1;
                  }
                 }
                 else if (a[0]==0XA0&&a[1]==0XA6)//电机1进
                 {
                 Voice();                        //提示声
                 DIR0=1;
                 MotoraRun_Flag=1;               //定时器电机A运行标志
                 }
                 else if (a[0]==0XA0&&a[1]==0XA7)//电机2进
                 {
                 Voice();                        //提示声
                 DIR1=1;
                 MotorbRun_Flag=1;               //定时器电机B运行标志    
                 }
                 else if (a[0]==0XA0&&a[1]==0XA8)//电机3进
                 {
                 Voice();                        //提示声
                 DIR2=0;
                 MotorcRun_Flag=1;               //定时器电机C运行标志    
                 }
                 else if (a[0]==0XA0&&a[1]==0XA9)//电机4进
                 {
                 Voice();                        //提示声
                 DIR3=1;
                 MotordRun_Flag=1;               //定时器电机D运行标志
                 }
//电机进                                
                 else if (a[0]==0XA0&&a[1]==0XAA)//电机1退
                 {
                 Voice();                        //提示声
                 DIR0=0;
                 MotoraRun_Flag=1;               //定时器电机A运行标志
                 }
                 else if (a[0]==0XA0&&a[1]==0XAB)//电机2退
                 {
                 Voice();                        //提示声
                 DIR1=0;
                 MotorbRun_Flag=1;               //定时器电机B运行标志
                 }
                 else if (a[0]==0XA0&&a[1]==0XAC)//电机3退
                 {
                 Voice();                        //提示声
                 DIR2=1;
                 MotorcRun_Flag=1;               //定时器电机C运行标志    
                 }
                 else if (a[0]==0XA0&&a[1]==0XAD)//电机4退
                 {
                 Voice();                        //提示声
                 DIR3=0;
                 MotordRun_Flag=1;               //定时器电机D运行标志
                 }
                 else if (a[0]==0XA0&&a[1]==0XAE)//打油    
                 {
                  Voice();                       //提示声
                  OutPut21=0;
                  delay5ms(val6);                 //间隙时间
                  OutPut21=1;
                 }
//电机退                                
                 else if (a[0]==0XB0&&a[1]==0XA6)//电机1关
                 {
                 Voice();                        //提示声
                 DIR0=1;
                 MotoraRun_Flag=0;               //定时器电机A运行标志
                 CP0=1;
                 }
                 else if (a[0]==0XB0&&a[1]==0XA7)//电机2关
                 {
                 Voice();                        //提示声
                 DIR1=1;
                 MotorbRun_Flag=0;               //定时器电机B运行标志
                 CP1=1;                                     
                 }
                 else if (a[0]==0XB0&&a[1]==0XA8)//电机3关
                 {
                 Voice();                        //提示声
                 DIR2=1;
                 MotorcRun_Flag=0;               //定时器电机C运行标志
                 CP2=1;                                     
                 }
                 else if (a[0]==0XB0&&a[1]==0XA9)//电机4关
                 {
                 Voice();                        //提示声
                 DIR3=1;
                 MotordRun_Flag=0;               //定时器电机D运行标志
                 CP3=1;  
                 }    
//工位零点
                 else if (a[0]==0XB1&&a[1]==0XA1)//工位零点
                 {
                  Voice();                        //提示声
                  if(Point_Flag==0)                 //工位零点未完成
                  {
                  Zero_Flag=1;                     //工位零点标志循环检测输入低电平
                  RstKey();
                  for(;kcounter<10;)             //按键循环10
                   {
                   if(!IntPut5&&!IntPut22&&!IntPut23)//过桥退 机座退 润滑退
                    {
                    LowVoltKey();                //按键低电平 计数器加一状态标志加一
                    }
                    else if(~!IntPut5||~!IntPut22||~!IntPut23) //按键高电平
                    {
                    HighVoltKey();               //按键计数器 状态计数器归零
                    }
                   }
                    if(kstatus>=8)               /*按键状态标志大于等于8为有效值*/
                    {     
                    do                           /*行程输入信号检测标志无输入为1,永久循环*/
                     {                              //Zero_Flag
                     delay10ms(100);             //电机停顿延时
                     KEY_counter=0;
                     KEY_status=0;
                     for(;KEY_counter<10;)       //检测按键 KEY_counter小于10循环
                     {
                      if(!IntPut4)               //工位零点信号按键低电平
                      {
                      KEY_counter++;
                      KEY_status++;              //按键低电平 计数器加一状态标志加一
                      }
                      else if(~!IntPut4)         //按键高电平
                      {
                      KEY_counter++;             //按键计数器加一 状态标志归零
                      KEY_status=0;              //按键低电平 计数器加一状态标志加一                       
                      }
                     }
                     if(KEY_status>=8)           /*按键状态标志大于等于8为有效值*/
                     {
                     FLAG_M=15;                  //零点完成
                     printf("va1.val=%d\xff\xff\xff",FLAG_M);  //触摸屏变量交定时器解析
                     Point_Flag=1;                 //工位零点完成标志     定时器1指示灯闪烁
                     Zero_Flag=0;                 //工位零点标志归零    
                     Signauto=0;                 /*行程输入信号连续检测到3次Signauto=0退出循环*/
                     OutPut20=0;                  //完成提示声开
                     Delay_100ms(5);             //
                     OutPut20=1;                  //完成提示声关
                     Delay_100ms(5);             //
                     OutPut20=0;                  //完成提示声开
                     Delay_100ms(5);             //
                     OutPut20=1;                  //完成提示声关
                     }
                     else
                     {
                     FLAG_M=2;                   //工位旋转
                     printf("va1.val=%d\xff\xff\xff",FLAG_M);//
                     OutPut1=0;                  //电机开
                     OutPut17=0;                  //电机开
                     delay10ms(100);             //电机停顿延时
                     Signauto=1;                 /*行程输入信号检测标志无输入为1,永久循环*/
                     RstKey();   
                     Time_Error=0;                 //定时器触发超时报警计数器归零
                     Time_Flag=1;                   //启动工位旋转报警标志由定时器计数
                     Time_Warning=val12;          //报警缓冲定时器比较值
//工位旋转    定时器累计旋转超时计数 外部中断0检测角度停止位        
                     while(Signauto)             //外部中断0检测到输入信号 退出循环
                     {
                      delay10ms(100);             //报警停顿延时
                       if(Error_Flag==1)         //定时器计数超设置值
                       {
                       delay10ms(100);             //
                       OutPut20=~OutPut20;          //旋转超时报警
                       }
                      }     
                     }
                    }
                    while(Zero_Flag);            //
                  }
                  else
                  {
                  Delay_100ms(20);                 //
                  FLAG_M=16;                     //限位失效 润滑机座退未复位
                  printf("va1.val=%d\xff\xff\xff",FLAG_M);  //触摸屏变量交定时器解析
                  Delay_100ms(50);                 //
                  }
                  FLAG_M=17;                     //待机
                  printf("va1.val=%d\xff\xff\xff",FLAG_M);  //触摸屏变量交定时器解析
                  }
                 }                                 
//电机关                                
                 else if(a[0]==0XA1&&a[1]==0XA0)           
                 {
                  if(a[2]==0X01)                  //过桥开
                  {
                  Voice();                        //提示声
                  OutPut4=0;
                  }
                 else
                 if(a[2]==0X00)                  //过桥关
                  {
                  Voice();                        //提示声
                  OutPut4=1;  
                  }
                 }
//过桥                        
                 else if(a[0]==0XA1&&a[1]==0XA1)           
                 {
                  if(a[2]==0X01)                  //闸门1开
                  {
                  Voice();                        //提示声
                  OutPut5=0;
                  }
                 else
                 if(a[2]==0X00)                  //闸门1关
                  {
                  Voice();                        //提示声
                  OutPut5=1;  
                  }
                 }
//闸门1                                
                 else if(a[0]==0XA1&&a[1]==0XA2)           
                 {
                 if(a[2]==0X01)                  //闸门2开
                  {
                  Voice();                        //提示声
                  OutPut6=0;
                  }
                 else
                 if(a[2]==0X00)                  //闸门2关
                  {
                  Voice();                        //提示声
                  OutPut6=1;  
                  }
                 }
//闸门2                                
                 else if(a[0]==0XA1&&a[1]==0XA3)           
                 {
                 if(a[2]==0X01)                  //吹气一开
                  {
                  Voice();                        //提示声
                  OutPut15=0;
                  }
                 else
                 if(a[2]==0X00)                  //吹气一关
                  {
                  Voice();                        //提示声
                  OutPut15=1;  
                  }
                 }
                 else if(a[0]==0XA1&&a[1]==0XA4)           
                 {
                  if(a[2]==0X01)                  //吹气二开
                  {
                  Voice();                        //提示声
                  OutPut16=0;
                  }
                 else
                 if(a[2]==0X00)                  //吹气二关
                  {
                  Voice();                        //提示声
                  OutPut16=1;  
                  }
                 }
//吹气            
                else if(a[0]==0XA1&&a[1]==0XA7)           
                 {
                  if(a[2]==0X01)                  //闸门3开
                  {
                  Voice();                        //提示声
                  OutPut2=0;
                  }
                 else
                 if(a[2]==0X00)                   //闸门3关
                  {
                  Voice();                        //提示声
                  OutPut2=1;  
                  }
                 }
//闸门3
//电机旋转    外部中断0检测到输入信号 退出循环                                     
                 else if(a[0]==0XA0&&a[1]==0XAF) //手动测试页 电机旋转
                 {
                 Voice();                        //提示声
                 Read_Intput(val12);             //旋转超时
                 }    
                                             
//电机感应开关检测。                            
                 else if (a[0]==0XDA&&a[1]==0XA0)//page0 产量显示
                 {
                 Delay_100ms(20);
                 printf("n0.val=%d\xff\xff\xff",Counter);
                 printf("n0.val=%d\xff\xff\xff",Counter);  //                            
                 }
//返回首页                                
                 else if (a[0]==0XD5&&a[1]==0X00)//A轴速度
                 {
                 val1=a[3]*256+a[2];             //
                 Write_EEprom();
                 printf("n8.val=%d\xff\xff\xff",val1);
                 Renovate();                     //刷新显示
                 delay1(50);    
                 Dis_Data();                     //
                 }
                 else if (a[0]==0XD5&&a[1]==0X01)//B轴速度
                 {
                 val2=a[3]*256+a[2];             //
                 Write_EEprom();
                 printf("n8.val=%d\xff\xff\xff",val2);
                 Renovate();                     //刷新显示
                 delay1(500);    
                 Dis_Data();                     //
                 }
                 else if (a[0]==0XD5&&a[1]==0X02)//C轴速度
                 {
                 val3=a[3]*256+a[2];             //
                 Write_EEprom();
                 printf("n8.val=%d\xff\xff\xff",val3);
                 Renovate();                     //刷新显示
                 delay1(50);    
                 Dis_Data();                     //
                 }
                 else if (a[0]==0XD5&&a[1]==0X03)//D轴速度
                 {
                 val4=a[3]*256+a[2];             //
                 Write_EEprom();
                 printf("n8.val=%d\xff\xff\xff",val4);
                 Renovate();                     //刷新显示
                 delay1(50);    
                 Dis_Data();                     //
                 }
                 else if (a[0]==0XD5&&a[1]==0X04)//润滑模数
                 {
                 val5=a[3]*256+a[2];             //
                 Write_EEprom();
                 printf("n8.val=%d\xff\xff\xff",val5);
                 Renovate();                     //刷新显示
                 delay1(50);    
                 Dis_Data();                     //
                 }
                 else if (a[0]==0XD5&&a[1]==0X05)//润滑时间
                 {
                 val6=a[3]*256+a[2];             //
                 Write_EEprom();
                 printf("n8.val=%d\xff\xff\xff",val6);
                 Renovate();                     //刷新显示
                 delay1(50);    
                 Dis_Data();                     //
                 }
                 else if (a[0]==0XD5&&a[1]==0X06)//吹气时间1
                 {
                 val7=a[3]*256+a[2];             //
                 Write_EEprom();
                 printf("n8.val=%d\xff\xff\xff",val7);
                 Renovate();                     //刷新显示
                 delay1(50);    
                 Dis_Data();                     //
                 }
                 else if(a[0]==0XD5&&a[1]==0X07) //吹气时间2
                 {
                 val8=a[3]*256+a[2];             //
                 Write_EEprom();
                 printf("n8.val=%d\xff\xff\xff",val8);
                 Renovate();                     //刷新显示
                 delay1(50);    
                 Dis_Data();                     //
                 }
                 else if(a[0]==0XD5&&a[1]==0X08) //缺料超时
                 {
                 val9=a[3]*256+a[2];             //
                 Write_EEprom();
                 printf("n8.val=%d\xff\xff\xff",val9);
                 Renovate();                     //刷新显示
                 delay1(50);    
                 Dis_Data();                     //
                 }
                 else if(a[0]==0XD5&&a[1]==0X09) //油泵打油计数
                 {
                 val10=a[3]*256+a[2];            //
                 Write_EEprom();
                 printf("n8.val=%d\xff\xff\xff",val10);
                 Renovate();                     //刷新显示
                 delay1(50);    
                 Dis_Data();                     //
                 }
                 else if(a[0]==0XD5&&a[1]==0X0A) //攻丝超时
                 {
                 val11=a[3]*256+a[2];            //
                 Write_EEprom();
                 printf("n8.val=%d\xff\xff\xff",val11);
                 Renovate();                     //刷新显示
                 delay1(50);    
                 Dis_Data();                     //
                 }
                 else if(a[0]==0XD5&&a[1]==0X0B) //旋转超时
                 {
                 val12=a[3]*256+a[2];            //
                 Write_EEprom();
                 printf("n8.val=%d\xff\xff\xff",val12);
                 Renovate();                     //刷新显示
                 delay1(50);    
                 Dis_Data();                     //
                 }
                 else if(a[0]==0XD5&&a[1]==0X0C) //退刀超时
                 {
                 val13=a[3]*256+a[2];            //
                 Write_EEprom();
                 printf("n8.val=%d\xff\xff\xff",val13);
                 Renovate();                     //刷新显示
                 delay1(50);    
                 Dis_Data();                     //
                 }
                 else if(a[0]==0XD5&&a[1]==0X0D) //润滑超时
                 {
                 val14=a[3]*256+a[2];            //
                 Write_EEprom();
                 printf("n8.val=%d\xff\xff\xff",val14);
                 Renovate();                     //刷新显示
                 delay1(50);    
                 Dis_Data();                     //
                 }
                 else if(a[0]==0XD5&&a[1]==0X0E) //恢复数据
                 {
                 RESET_Data();                   //
                 Write_EEprom();
                 Renovate();                     //刷新显示
                 delay1(50);    
                 Dis_Data();                     //
                 }
                 else if (a[0]==0XD5&&a[1]==0X0F)//过桥时间
                 {
                 val15=a[3]*256+a[2];            //
                 Write_EEprom();
                 printf("n1.val=%d\xff\xff\xff",val15);
                 }
                 else if (a[0]==0XD5&&a[1]==0X1F)//手动速度
                 {
                 val16=a[3]*256+a[2];            //
                 Write_EEprom();
                 printf("n1.val=%d\xff\xff\xff",val16);
                 }
                 else if (a[0]==0XF0&&a[1]==0X1F)//自动
                 {
                 Voice();                        //提示声
                 RUN_Flag=1;                     //自动运行标志
                 OutPut7=0;                      //自动
                 OutPut8=1;                      //手动
                 val17=val1/2;                      //三轴速度
                 Run_start();
                 }
                 else if(a[0]==0XDA&&a[1]==0XA3) //显示参数
                 {
                 red_eeprom();  
                 Dis_Data();
                 }
                 else if(a[0]==0XDA&&a[1]==0XA2) //过桥时间
                 {
                 delay1(50);
                 printf("n0.val=%d\xff\xff\xff",val15);//
                 printf("n0.val=%d\xff\xff\xff",val15);//过桥时间
                 printf("n2.val=%d\xff\xff\xff",val16);//手动速度
                 }
                 else if(a[0]==0XF0&&a[1]==0XF2) //报警使能关闭
                 {
                 Error_Flag=0;                     //
                 }
                 else if(a[0]==0XA0&&a[1]==0XC0) //电机1正转攻丝
                 {
                  Voice();                       //提示声
                  DIR0=1;
                  MotoraRun_Flag=1;              //定时器电机A运行标志    
                  MotorAForward();                 //检测电机A位置
                 }
                 else if(a[0]==0XA0&&a[1]==0XC1) //电机2正转攻丝
                 {
                  Voice();                       //提示声
                  DIR1=1;
                  MotorbRun_Flag=1;              //定时器电机B运行标志
                  MotorBForward();
                 }
                 else if(a[0]==0XA0&&a[1]==0XC2) //电机3正转攻丝
                 {
                  Voice();                       //提示声
                  DIR2=0;
                  MotorcRun_Flag=1;              //定时器电机C运行标志
                  MotorCForward();
                 }
                 else if(a[0]==0XA0&&a[1]==0XC3) //电机4正转攻丝
                 {
                  Voice();                       //提示声
                  DIR3=1;
                  MotordRun_Flag=1;              //定时器电机D运行标志
                  MotorDForward();
                 }
                 else if(a[0]==0XA0&&a[1]==0XCA) //电机1反转退丝
                 {          
                  Voice();                       //提示声
                  DIR0=0;
                  MotoraRun_Flag=1;              //定时器电机A运行标志
                  MotorABackInt();                     
                 }
                 else if(a[0]==0XA0&&a[1]==0XCB) //电机2反转退丝
                 {
                  Voice();                       //提示声
                  DIR1=0;
                  MotorbRun_Flag=1;              //定时器电机B运行标志
                  MotorBBackInt();
                 }
                 else if(a[0]==0XA0&&a[1]==0XCC) //电机3反转退丝
                 {
                  Voice();                       //提示声
                  DIR2=1;
                  MotorcRun_Flag=1;              //定时器电机C运行标志
                  MotorCBackInt();
                 }
                 else if(a[0]==0XA0&&a[1]==0XCD) //电机4反转退丝
                 {
                  Voice();                       //提示声
                  DIR3=0;
                    MotordRun_Flag=1;              //定时器电机D运行标志
                  MotorDBackInt();                 //MotorBack()
                 }
                 else if(a[0]==0XA0&&a[1]==0XCE) //退刀补偿
                 {
                  Voice();                       //提示声
                  DIR0=0;                         //电机A反转
                  DIR1=0;                         //电机B反转
                  DIR2=1;                         //电机C反转
                  DIR3=0;                         //电机D反转
                  MotorBack();
                 }
                RstKey();
                LowVoltKey();
                HighVoltKey();
                }
               }                                    //修改过桥时间 工位旋转定时器计数器归零
              }                                     //2024 5 4 L2866 CODE 13104

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值