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

📄 change.c

📁 用键盘来输入电压或电流。实现恒流
💻 C
字号:

extern void main_delay(uint i);

/*********************************************************
* 名称          :uint dis_v549(uint voltage)
* 功能          :设定输出电压,并显示设定电压
* 输入          :uint voltage :键盘设定电压值
* 全局变量      :NULL  
* 返回值        :buffV
* 调用          :NULL
* 编写日期      :2008-5-21 
* 最后修改日期  :2008-5-23 		
*********************************************************/
uint change_voltage(void)
{
  uchar xunhuanflag = 1;//循环标志位,1循环,0结束循环
  uchar geweiflag=1;    //个位标记,电压数字过大时报错
  uchar shifenweiflag=0;//十分位标记
  uint  buffV;

  writeByteLCD(1,0x01); //显示清屏
  LCDDisString(0,0,"please input voltage:         V");
  while(xunhuanflag)
    {
     if(geweiflag)			 //采个位数据
	    {
          if((ScanKeyboard()>7)&&( ScanKeyboard()<= 9))	
           {
		    writeByteLCD(1,0x01); //显示清屏
	        LCDDisString(0,0,"wrong number try again!"); 
            main_delay(60000);
            main_delay(60000);
			main_delay(60000);
            main_delay(60000);
			main_delay(60000);
            main_delay(60000);
			writeByteLCD(1,0x01); //显示清屏
			LCDDisString(0,0,"please input voltage:         V");	  
	       }
		  if((ScanKeyboard()>=0) && ( ScanKeyboard()<= 5) )
		   {
		    main_delay(3000);
		    buffV = ScanKeyboard()*10;
			geweiflag=0;
			dis_voltage(buffV);
	        main_delay(5000);
			}
		 }
	  if(shifenweiflag)	//采十分位数据
	     {
		  if((ScanKeyboard()>=0) && ( ScanKeyboard()< 10))
           {
            main_delay(3000);
   	        buffV = ScanKeyboard() + buffV;
			shifenweiflag=0;
			dis_voltage(buffV);
	        main_delay(5000);
            }
		  }
      if(ScanKeyboard()==12)//当小数点按下后,进入十分位数据输入
       	 {
		  shifenweiflag=1;
		  }
	  if(ScanKeyboard()==11) //结束循环,确定数据输入有效
	     {
		  xunhuanflag=0;
		  }						  
	  }
   return buffV;
 }



 /*********************************************************
* 名称          :uint dis_i549(uint current)
* 功能          :设定输出电压,并显示设定电压
* 输入          :uint voltage :键盘设定电压值
* 全局变量      :NULL  
* 返回值        :buffI
* 调用          :NULL
* 编写日期      :2008-5-21 
* 最后修改日期  :2008-5-23 		
*********************************************************/
uint change_current(void)
{
  uchar xunhuanflag = 1;//循环标志位,1循环,0结束循环
  uchar jishuflag=1;    //计数标志
  uint buffI;

  writeByteLCD(1,0x01); //显示清屏
  LCDDisString(0,0,"please input current:        mA");
  while(xunhuanflag)
    {	 
	  if(jishuflag)	//计数段
	     {
		  if((ScanKeyboard()>=0) && ( ScanKeyboard()< 10))
           {
		    main_delay(3000);
   	        buffI = ScanKeyboard() + buffI*10;
			dis_current(buffI);
			main_delay(5000); 
			main_delay(5000);
			main_delay(5000);
	        while((ScanKeyboard()>=0) && ( ScanKeyboard()< 10)); 
			
            }
		  }
      if(ScanKeyboard()==11) //结束循环,确定数据输入有效
	     {
		  while(ScanKeyboard()==11);
		  if(buffI>500)	
           {
		    writeByteLCD(1,0x01); //显示清屏
	        LCDDisString(0,0,"wrong number try again!"); 
            main_delay(60000);
            main_delay(60000);
			main_delay(60000);
            buffI=0;
			writeByteLCD(1,0x01); //显示清屏
			LCDDisString(0,0,"please input current:        mA");	  
	        }
		  else
		    {
		     xunhuanflag=0;
			 jishuflag=0;

			}
		}						  
	  }
   xunhuanflag=1;
   jishuflag=1;
   return buffI;
 }

//功率部分

 uint change_voltage1(void)
{
  uchar xunhuanflag = 1;//循环标志位,1循环,0结束循环
  uchar geweiflag=1;    //个位标记,电压数字过大时报错
  uchar shifenweiflag=0;//十分位标记
  uint  buffII;

  writeByteLCD(1,0x01); //显示清屏
  LCDDisString(0,0,"ok you can change   power: 0.0w");
  while(xunhuanflag)
    {
     if(geweiflag)			 //采个位数据
	    {
          if((ScanKeyboard()>2)&&( ScanKeyboard()<= 9))	
           {
		    writeByteLCD(1,0x01); //显示清屏
	        LCDDisString(0,0,"wrong number try again!"); 
            main_delay(6000);
            main_delay(6000);
			main_delay(6000);
            main_delay(6000);
			main_delay(6000);
            main_delay(60000);
			writeByteLCD(1,0x01); //显示清屏
			LCDDisString(0,0,"ok you can change   power: 0.0w");	  
	       }
		  if((ScanKeyboard()>=0) && ( ScanKeyboard()<=2) )
		   {
		    main_delay(3000);
		    buffII = ScanKeyboard()*10;
			geweiflag=0;
			dis_voltage1(buffII);
	        main_delay(5000);
			}
		 }
	  if(shifenweiflag)	//采十分位数据
	     {
		  if((ScanKeyboard()>=0) && ( ScanKeyboard()< 10))
           {
            main_delay(3000);
   	        buffII = ScanKeyboard() + buffII;
			shifenweiflag=0;
			dis_voltage1(buffII);
	        main_delay(5000);
            }
		  }
      if(ScanKeyboard()==12)//当小数点按下后,进入十分位数据输入
       	 {
		  shifenweiflag=1;
		  }
	  if(ScanKeyboard()==11) //结束循环,确定数据输入有效
	     {
		  xunhuanflag=0;
		  }						  
	  }
   return buffII;
 }

⌨️ 快捷键说明

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