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

📄 main2.txt

📁 电子称重的程序
💻 TXT
字号:
Dspinit(); //倒计数
 checkvolt(); //检测电压
 checkunit(); //判断单位是否选择了允许打开的单位
 beep(200);
 scalegetzero(); //获取零点
 key_read();  //为了防止倒计数时按下的按键对后面起作用,因此需要通过读取按键来清除按键
 weightf=1;
 enadof=1;
 while(1)
 {
  _nop_();
  if(getad())
	  {
		 //***********显示电压**************************
	  showvolt();
		 //*************************读取传感器AD值进行处理**************
             templong= readad();
	     templong=scalem_FILAD(templong);
	     if(!templong) continue;	  //为0则不显示
            scalenow.ad=templong; //保存处理好的AD
            templong-=scalenow.zero;
            scalenow.weight=templong*scalesys.rule;
            temp=ssenss[scaleset.ssens].dot-scaleset.scapex;
            aprintf(0x00,fpt[temp>=0?temp:0],scalenow.weight); //
            aprintf(0x10,unitt[scaleset.unit].unitshow);
	  }
if(getkey()){  //如果有按键按下
        if(powertime==0)lcd_set(1);//如果关机了则开机
        powertime=5;
	key_t=key_read();     //读取按键
        switch(key_t)
        {
	case ZERO:                //归零
                if(scalenow.weight<scalescap/400)
                {
		  scalenow.zero=scalenow.ad;
                  scalenow.tare=0;
                  lcd_flagset(LCD_TARE,0);
                }
		break;
        case TARE:  //去皮,需要保存去皮量
                if(scalenow.weight!=0)
                {
				scalenow.tare+=scalenow.weight;
				scalenow.zero=scalenow.ad;
                lcd_flagset(LCD_TARE,1);
                }
		break;
	case UNIT:  //切换单位
	       	scaleset.unit++;
	       	if(unitt[scaleset.unit].unitn==0||scaleset.unit>10){scaleset.unit=0;}
	      	checkunit();
	       	break;

      case   KEY_HL:  //进入上下限设置
             scaleset.unit=0;
             key_t=0;
             tempbit=0;
             templong=scalesys.hov;
             aprintf(0x10," H ");
             temp=2+ssenss[scaleset.ssens].dot;    //temp保存当前调整的位数
             temp2=temp;       //temp2保存允许调整的位数
             while(1)
             {
              if(key_t)beep(200);
              if(KEY_HL==key_t)
              {
              if(!tempbit)
              {
               scalesys.hov=templong;
               E_writeex(I2C_HOV,(Uchar *)&scalesys.hov,sizeof(scalesys.hov));
               templong=scalesys.lov;
               aprintf(0x10," L ");
               tempbit=1;
               temp=temp2;
              }
              else
              {
               scalesys.lov=templong;
               E_writeex(I2C_LOV,(Uchar *)&scalesys.lov,sizeof(scalesys.lov));
               break;
              }
              }
              else if(UNIT==key_t)    //切换位数
              {
               if(--temp==0)temp=temp2;
              }
              else if(KEY_ADD==key_t)    //增加
              {
              templong=setnumbcd(templong,scalescap,temp,1);
              }
              else if(KEY_SUB==key_t)   //减小
              {
               templong=setnumbcd(templong,scalescap,temp,-1);
              }
             }
             break;
}
}
if(resetadbit)//如果看门狗超时则复位AD芯片
{
resetad();
adchipdog=0;
beep(1000);
}

}

⌨️ 快捷键说明

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