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

📄 ybmain.c

📁 某采用积分式AD的汽车衡完整单片机C程序
💻 C
📖 第 1 页 / 共 5 页
字号:
   if(bBDing)
   {
     uu=div(timer_ok);
     display1=timer_ok-uu*10;
   }
   else if(bQUERY)
   {
      fuhao=0;
      if(longQurey<0)
      {
        fuhao=1;
        longQurey=0-longQurey;
      }
      uu=div(longQurey);
      display1=longQurey-uu*10;
   }
   else
   {
     uu=div(G_hw);
     display1=G_hw-uu*10;
   }
   TI=0;
   SBUF=0xFF;

 }
 else if(timer_number==2) {

   aa=div(uu);
   display2=uu-aa*10;
   uu=aa;
   TI=0;
   if(fuhao==1)
   {
        t=G_WeiShu^0x20;
   }
   else{t=G_WeiShu;}

   if(IsFull==1)
   {
        t^=0x80;
   }
   else{t&=0x7F;}
   SBUF=t;
     //SBUF=0x11;

 }

  else if(timer_number==3) {
   aa=div(uu);
   display3=uu-aa*10;
   uu=aa;
    TI=0;
   if(dis[1]>9)
      t=0x00<<4;
   else
      t=dis[1]<<4;
   if(dis[0]>9)
      SBUF=t+0x00;
       //SBUF=0x44;
   else
      SBUF=t+dis[0];

     // SBUF=0x22;
 }

  else if(timer_number==4) {
   aa=div(uu);
   display4=uu-aa*10;
   uu=aa;
   TI=0;
    if(dis[3]>9)
      t=0x00<<4;
    else
      t=dis[3]<<4;
    if(dis[2]>9)
      SBUF=t+0x00;
      //SBUF=0x33;
    else
      SBUF=t+dis[2];
      //SBUF=0x33;
 }
  else if(timer_number==5) {
   aa=div(uu);
   display5=uu-aa*10;
   display6=aa;
   TI=0;
   if(dis[5]>9)
      t=0x00<<4;
    else
      t=dis[5]<<4;
    if(dis[4]>9)
     SBUF=t+0x00;
      //SBUF=0x22;
    else
     SBUF=t+dis[4];
       //SBUF=0x44;
}




    //显示消隐

else if(timer_number==6) {

    if((display5==0)&&(display6==0)&&(display4==0)&&(display3==0)&&(display2==0)&&(display1==0))
       {
	  fuhao=0;zero_flag=1;
       }
       else {zero_flag=0;}

    if((display5==0)&&(display6==0)&&(display4==0)&&(display3==0)&&(display2==0)&&(dot_number<1))
       {
          display2=20;
          display3=20;
          display4=20;
          display5=20;
          display6=20;

          if(fuhao==1){display2=24;}
	}
    else if((display5==0)&&(display6==0)&&(display4==0)&&(display3==0)&&(dot_number<2))
        {
	       display3=20;
           display4=20;
           display5=20;
           display6=20;

           if(fuhao==1){display3=24;}
	 }
     else if((display5==0)&&(display6==0)&&(display4==0)&&(dot_number<3))
         {
            display4=20;
            display5=20;
            display6=20;
            if(fuhao==1){display4=24;}
	  }
     else if(display5==0&&display6==0)
          {
	     display5=20;
             display6=20;
             if(fuhao==1){display5=24;}
	  }
     else if(display6==0)
          {
	     display6=20;
             if(fuhao==1){display6=24;}
	  }


}



     //满标志


else if(timer_number==7){

              dis[0]=display1;
              dis[1]=display2;
              dis[2]=display3;
              dis[3]=display4;
              dis[4]=display5;
              dis[5]=display6;



                }


else{}

}
#endif

////////////////////////////////////////////////////////////////////////
// 函数名称:  delay(unsigned char n)
// 入口参数: (unsigned char n)
// 函数功能:延时程序
////////////////////////////////////////////////////////////////////////
void delay(unsigned char n){
	unsigned char i;
	for(i=0;i<n;i++);
	}

#ifndef TT
void SweepLED(unsigned char sel,unsigned char pp)
{
    unsigned char j;
    PB8155=sel;
        PA8155=pp;
        for(j=200;j>0;j--){;}
        PA8155=0;
}


#endif


#ifdef TT
////////////////////////////////////////////////////////////////////////
// 函数名称:  SMled(unsigned char duanma, unsigned char weima)
// 入口参数: unsigned char duanma-段码, unsigned char weima-位码
// 函数功能:LED显示器自检
////////////////////////////////////////////////////////////////////////
void SMLed(unsigned char duanma, unsigned char weima)
{
    //COM8155=0x03;
	PB8155=weima;
 	PA8155=duanma;
    delay(15);
    PA8155=0x00;

        //delay(60);
}


////////////////////////////////////////////////////////////////////////
// 函数名称:  SMled(unsigned char duanma, unsigned char weima)
// 入口参数: unsigned char duanma-段码, unsigned char weima-位码
// 函数功能:LED显示器自检
////////////////////////////////////////////////////////////////////////
void SMposLed(unsigned char dpos, unsigned char wpos)
{
    //COM8155=0x03;
	PB8155=wcode[wpos];
	PA8155=table[dpos];
        delay(15);
 	PA8155=0x00;

        //delay(60);
}

////////////////////////////////////////////////////////////////////////
// 函数名称:  BlackLED())
// 入口参数k
// 函数功能:LED显示器自检
////////////////////////////////////////////////////////////////////////
void BlackLED()
{
   SweepLED(0x00);
}

////////////////////////////////////////////////////////////////////////
// 函数名称:  DisplayCheck()
// 入口参数: char pp
// 函数功能:LED显示器自检
// ok
////////////////////////////////////////////////////////////////////////
void DisplayCheck()
{

  unsigned int i,j,k;
  for(i=9;i>0;i--)
  {
     beep=1;
     k=150;
     beep=0;
     while(k>0)
     {

        for(j=1;j<30;j++)
       {
           SweepLED(selfexamcode[i]);
       }
        k--;
      }
   }

}

////////////////////////////////////////////////////////////////////////
// 函数名称:  KeyScan()
// 入口参数: char pp
// 函数功能:用段码PP扫描6个LED
////////////////////////////////////////////////////////////////////////
void SweepLED(unsigned char duanma)
{
    unsigned char sel,i,j;
   // COM8155=0x03;
    sel=0x04;
    for(i=0;i<6;i++)
   {
        PB8155=sel;
        PA8155=duanma;
         for(j=10;j>0;j--){;}
        sel=sel<<1;
		PA8155=0x00;
    }
}


////////////////////////////////////////////////////////////////////////
// 函数名称:  DisplayCode()
// 入口参数: unsigned char*codepos-段码在表中位位置,len显示码的长度
// 函数功能:用段码PP扫描6个LED
////////////////////////////////////////////////////////////////////////
void DisplayCode(unsigned char*codepos,unsigned char len)
{
  unsigned char i=0;
  for(i=0;i<len;i++)//显示len位数字
  {
       SMposLed(codepos[i],i+1);
   }
  for(;i<6;i++) //高位无显示
  {
     SMposLed(codepos[0],i+1);
  }
}

#endif

#ifdef TT
////////////////////////////////////////////////////////////////////////
//读密码;
void ReadPass()
{
   unsigned char i;
   for(i=0;i<6;i++)
   {
      AT24C64_R(&Bding_pass[i],0x0001+i,1);
   }
 /*  AT24C64_R(&Bding_pass[0],0x01,1);
   AT24C64_R(&Bding_pass[1],0x02,1);
   AT24C64_R(&Bding_pass[2],0x03,1);
   AT24C64_R(&Bding_pass[3],0x04,1);
   AT24C64_R(&Bding_pass[4],0x05,1);
   AT24C64_R(&Bding_pass[5],0x06,1);  */

}

///////////////////////////////////////////////////////////////////////
//写密码
void WritePass()
{
   unsigned char i;
   for(i=0;i<6;i++)
   {
       AT24C64_W(&Bding_pass[i],0x0001+i,1);
   }
 /*  AT24C64_W(&Bding_pass[0],0x01,1);
   AT24C64_W(&Bding_pass[1],0x02,1);
   AT24C64_W(&Bding_pass[2],0x03,1);
   AT24C64_W(&Bding_pass[3],0x04,1);
   AT24C64_W(&Bding_pass[4],0x05,1);
   AT24C64_W(&Bding_pass[5],0x06,1);  */
}

////////////////////////////////////////////////////////////////////////
//初始化密码;
void InitPass()
{
   unsigned char i;
   for(i=0;i<6;i++)
   {
      Bding_pass[i]=0x08;
      AT24C64_W(&Bding_pass[i],0x0001+i,1);
   }
}
////////////////////////////////////////////////////////////////////////
// 函数名称:bit CheckPassW();//
// 入口参数: 无
// 函数功能:检验密码;
////////////////////////////////////////////////////////////////////////
bit CheckPassW()
{
 // unsigned char dcode[6]={8,8,8,8,8,8};//临时变量,保存键号

  unsigned char i=0;
  unsigned char key;
  i=0;
 // return 1;
  while(1)
  {
     key=KeyScan();
     if(key==66)
    {
   	   BlackLED();
     }
     else
     {
       if(key<10)
      {
           dcode[0]=key;
           break;
       }
     }
  }
  dcode[5]=0; dcode[4]=0;dcode[3]=0;dcode[2]=0;dcode[1]=0;//dcode[0]=0;
  while(1)
  {
    DisplayCode(dcode,6);
    key=KeyScan();//键盘扫描
    if(key==SR) break;//不是输入键
    if(key==TC)//按退出键,则退出;
          return 0;
    if(key<10)
    {
          dcode[5]=dcode[4];
          dcode[4]=dcode[3];
          dcode[3]=dcode[2];
          dcode[2]=dcode[1];
          dcode[1]=dcode[0];        // DisplayCode(t,i);
          dcode[0]=key;
    }
   }
  // ReadPass();
   for(i=0;i<6;i++)
   {
     if(dcode[i]!=Bding_pass[5-i]) return 0;//密码不同
    }
   return 1;

}
////////////////////////////////////////////////////////////////////////
//分度值管理函数;
void ReadFenDu()            //读分度
{
   AT24C64_R(&G_FenDu,0x07,1);
}
void SaveFenDu()            //保存分度?
{
   AT24C64_W(&G_FenDu,0x07,1);
}
void InitFenDu()            //初始化分度;
{
   G_FenDu=50;
   AT24C64_W(&G_FenDu,0x07,1);
}
////////////////////////////////////////////////////////////////////////
//位数管理函数;
void ReadWeiShu()            //读位数
{
   AT24C64_R(&G_WeiShu,0x08,1);
}
void SaveWeiShu()            //保存位数
{
   AT24C64_W(&G_WeiShu,0x08,1);
}
void InitWeiShu()            //初始化位数
{
   G_WeiShu=0;
   AT24C64_W(&G_WeiShu,0x08,1);
}

////////////////////////////////////////////////////////////////////////
//量程管理函数;
void ReadFull()            //读量程
{
   AT24C64_R(&G_Full,0x09,4);
}
void SaveFull()            //保存量程
{
   AT24C64_W(&G_Full,0x09,4);
}
void InitFull()            //初始化量程
{
   G_Full=80000;
   AT24C64_W(&G_Full,0x09,4);
}

////////////////////////////////////////////////////////////////////////
//滤波强度管理函数;

⌨️ 快捷键说明

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