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

📄 runmain.c

📁 跑步机单片机程序
💻 C
📖 第 1 页 / 共 5 页
字号:
		  }
        if(P3_0==1 && downledflag==1)
		  {P4_3=1;
           runfan=1;    //stop  down
		   runzheng=1;
		   downledflag=0;
           updownflag=0; 
		   clearBigpodu();
		   oldspeed=0;   //for display
		   t0count=0;
		   changetime=0;
           CHUSHIHUA();   //clear zi display
           Display(space,0x83);
    	   Write_command(0x36,1);
          // P3_1=1;   //stop up
          // P0=ledstatus[poduid];
          // P3_1=0;         //led on
            //return old tu xiang 
		//	disppoduflag=1;
           /*if(disppaodaoflag)   //display pao
			 {disppaodao();
			 }
			 else                  //display flash tu 
			 {disprailway();			 
			 }*/
			displaypodu();
			displayspeed();
		   }

	  if((t0count==2 ) &&(updownflag==0))   //每隔一定时间读速度,并进行显示
		{t0count=0;
		 speed1=P2;
 		 if(speed1>0)   //&&    //(speed1!=0xff))
            {speed=speed1/10;
             if(speed1%10!=0) speed=speed+1;
             if(disptuflag==0)
			  {disptuflag=1;disppaodaoflag=0; 
			   flashcount=0;cleartu();
			   //disp podu
				displaypodu();
		      }
 			 if(speed!=oldspeed)
			   {oldspeed=speed;
			    clearspeed();
		        displayspeed();	
                displaypodu();
               }
		   dispziflag=0;  
			}
		 else
	       {disptuflag=0; dispziflag=1; changetime=0; dispzi();
		   }
         
		 }// end t0count
        if((flashcount>(21-speed)) && disptuflag==1)  //debug pao dao tu and flash tu, flashcount use change speed
          {flashcount=0;
		   changetime++;
           if((changetime>0)&&(changetime<5)&&(disppaodaoflag==0))   //display cao chang
  		      {clearflashtu();
			   disprundao();
			   disppaodaoflag=1;
               fourcount=0;
               rowdz=0x85;
               oldrowdz=0x85;
               rundownflag=1;
               downtime=0;   //new add
			   runupflag=0;
			   runleftflag=0;
			   runrightflag=0;
               downcoldz=0x8c;
               pcol=12;
			  }
			else if(changetime==51)  //display railway
			  {//changetime=0;
			    clearflashtu();
			    flashcoldz=0x97;
                flashrowdz=0x89;
                flashi=0;
			   disppaodaoflag=0;
			  }
			else if(changetime==100)
			   changetime=0;
			 if(disppaodaoflag)   //display pao
			 {disppaodao();
			 }
			 else                  //display flash tu 
			 {disprailway();			 
			 }
		  }		//end    flashcount

	    TH0=-50000/256;                  
        TL0=-50000%256;
        TR0=1;
        //P3_1=0;
		EA=1;
	   }
     if(keyflag==1)    //||(disppoduflag==1))   //处理按键
	   {keyflag=0;
        //P3_1=0;
        //P1=0xff;
		d10us(5);
         keystatus=P1;
        /*if(disppoduflag==0)  keystatus=P1;
		else {keystatus=keytab[poduid];
		      disppoduflag=0;
			 }*/
	//	moveflag=1;
    	 //clearpodu();
         if(P3_0==0)   //this key use at down
	      { P3_1=1;
            P0=0xff;    //led off
			//wending=0xff;
            P3_1=0;
            P4_3=0;
            oldkeyvalue=0;
			if(downledflag==0)
              {downledflag=1;
			   upledflag=0;
               updownflag=1;
			   disptuflag=0;
			   changetime=1;
			   //disppaodaoflag=0;
			   cleartu();
		       CHUSHIHUA();
                Display(STRDOWN,0x83);
			   Write_command(0x36,1);
     		   runfan=0;//begin down
    		   runzheng=1;
               testad=adc();
               poduid=testad/93;
              }
			BigPodu();
            moveflag=0;
			//keyvalue=9;
         }
		//updownflag=1;
        switch(keystatus)
		  {case 0xfe:
		        keyvalue=7;
				tempkeyvalue=keyvalue;
                P3_1=1;
                P0=0xfe;    //led on
                P3_1=0;
				P4_3=1;

				clearpodu();
				displaypodu123();
				displaypodu4();
				displaypodu567();
				poduid=1;
				break;
           case 0xfd:
		        keyvalue=6;
				tempkeyvalue=keyvalue;
				P3_1=1;
				P0=0xfd;
				P3_1=0;
				P4_3=1;
				clearpodu();
				displaypodu123();
				displaypodu4();
				displaypodu567();
				poduid=2;
				break;
		   case 0xfb:
		        keyvalue=5;
				tempkeyvalue=keyvalue;
				P3_1=1;
				P0=0xfb;
				P3_1=0;
				P4_3=1;
				clearpodu();
				displaypodu123();
				displaypodu4();
				displaypodu567();
				poduid=3;
				break;	
	       case 0xf7:
                keyvalue=4;
				tempkeyvalue=keyvalue;
				P3_1=1;
				P0=0xf7;
                P3_1=0;         //led on
				clearpodu();
				displaypodu123();
				displaypodu4();
				poduid=4;
 				break;
	       case 0xef:
                keyvalue=3;
				tempkeyvalue=keyvalue;
                P3_1=1;   
                P0=0xef;
                P3_1=0;         //led on
				P4_3=1;
				clearpodu();
				displaypodu123();
				poduid=5;
				break;
  		   case 0xdf:
                keyvalue=2;
				tempkeyvalue=keyvalue;
				P3_1=1;
				P0=0xdf;
				P3_1=0;
				P4_3=1;
				clearpodu();
				displaypodu123();
				poduid=6;
 				break;
           case 0xbf:
                keyvalue=1;
				tempkeyvalue=keyvalue;
				P3_1=1;
				P0=0xbf;
				P3_1=0;
    			P4_3=1;
				clearpodu();
				displaypodu123();
				poduid=7;
  				break;	  
		   case 0x7f:   //this key use at up
			    moveflag=0;  //different other key ,so moveflag==0;
				P3_1=1;
				P0=0x7f;
				P3_1=0;
                oldkeyvalue=0;
                testad=adc();
               if(testad>5)  //用于在最高档时,不用升了。
                 {if(upledflag==0)
                  {upledflag=1;
                   updownflag=1;
				   downledflag=0;
				   disptuflag=0;
				   //disppaodaoflag=0;
				   changetime=1;
				   P4_3=1;
				   cleartu();
                   CHUSHIHUA();
                   Display(STRUP,0x83);
				   Write_command(0x36,1);
     		       runfan=1;//begin up
    			   runzheng=0;
                   testad=adc();
                   poduid=(uchar)(testad/93);
                  }
				//testad=adc();
                BigPodu();  //full screen display po du tu 
               }
  				break;
		  }
		  if(keyvalue!=oldkeyvalue && updownflag==0)
		    {oldkeyvalue=keyvalue;
             tempadnum=poduad[keyvalue];
			 moveflag=1;
 			}
		
	   // TH0=-50000/256;                  
      //  TL0=-50000%256;
       // TR0=1;
		  EA=1;
	   }
   }
}


void adjustpodu(void)
{//testad=adc();
  advaluesum();
  testad=testsum/3;
  /* CHUSHIHUA();
	addisplay[0]=testad/1000;
	addisplay[1]=(testad-addisplay[0]*1000)/100;
	addisplay[2]=(testad-addisplay[0]*1000-addisplay[1]*100)/10;
	addisplay[3]=testad%10;
	for(i=0;i<4;i++)  addisplay[i]=addisplay[i]+0x30;
    Display(addisplay,0x86);
    d1ms(3);
	addisplay[0]=keyvalue/1000;
	addisplay[1]=(keyvalue-addisplay[0]*1000)/100;
	addisplay[2]=(keyvalue-addisplay[0]*1000-addisplay[1]*100)/10;
	addisplay[3]=keyvalue%10;
	for(i=0;i<4;i++)  addisplay[i]=addisplay[i]+0x30;
    Display(addisplay,0x8e);
	addisplay[0]=oldkeyvalue/1000;
	addisplay[1]=(oldkeyvalue-addisplay[0]*1000)/100;
	addisplay[2]=(oldkeyvalue-addisplay[0]*1000-addisplay[1]*100)/10;
	addisplay[3]=oldkeyvalue%10;
	for(i=0;i<4;i++)  addisplay[i]=addisplay[i]+0x30;
    Display(addisplay,0x96);

    WDT_CONTR=0x3a;
    Write_command(0x36,1); // 功能设置---8BIT控制界面,绘?
      */
 //tempadnum=poduad[keyvalue];
 if(testad<(tempadnum-5)) //&& tempadnum>1)
   {runfan=0;    //down
    runzheng=1; 
   }
 else  if(testad>(tempadnum+5))
   {runfan=1;//begin up
    runzheng=0;
   }
 else
  {runfan=1;
   runzheng=1;
   moveflag=0;
  }
}

void BigPodu(void)
{/*testad=adc();
debugpodu=testad/93;
debugpodu=debugpodu+1;*/
 advaluesum();
 testsum=testsum/3;
  debugpodu=testsum/93;
  debugpodu=debugpodu+1;
    //dispaly ad value;
  /*  CHUSHIHUA();
   	addisplay[0]=0;
	addisplay[1]=0;
	addisplay[2]=(poduid-addisplay[0]*1000-addisplay[1]*100)/10;
	addisplay[3]=poduid%10;
	for(i=0;i<4;i++)  addisplay[i]=addisplay[i]+0x30;
    Display(addisplay,0x88);
   	addisplay[0]=0;
	addisplay[1]=0;
	addisplay[2]=(debugpodu-addisplay[0]*1000-addisplay[1]*100)/10;
	addisplay[3]=debugpodu%10;
	for(i=0;i<4;i++)  addisplay[i]=addisplay[i]+0x30;
    Display(addisplay,0x86);
    d1ms(3);

    WDT_CONTR=0x3a;
    Write_command(0x36,1); // 功能设置---8BIT控制界面*/

  //  poduid=3;
 if(debugpodu!=poduid)   //keyvalue=po du value 1~7
   {poduid=debugpodu;
   // clearBigpodu();
   switch(poduid) 
    {case 1:
	      oldkeyvalue=7;
	      DisplaySanJiao1();
	 break;
	 case 2:
	      oldkeyvalue=6;
	      DisplaySanJiao2();
	 break;
	 case 3:
	      oldkeyvalue=5;
	      DisplaySanJiao3();
	 break;
	 case 4:
	      oldkeyvalue=4;
	      DisplaySanJiao4();
	 break;
	 case 5:
	      oldkeyvalue=3;
	      DisplaySanJiao5();
	 break;
	 case 6:
	      oldkeyvalue=2;
	      DisplaySanJiao6();
	 break;
	 case 7:
	      oldkeyvalue=1;
	      DisplaySanJiao7();
	 break;
    }
   }
}
uint adc(void)
{ uint  u=0;
  uchar adi;
  cs=1;
  _nop_();
  cs=0;
  for(adi=0;adi<10;adi++)        //read data
   { 
     clk=0;
     u=(u<<1)|dout;
     clk=1;

⌨️ 快捷键说明

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