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

📄 platup070710.c

📁 这是一个简的电子屏幕
💻 C
📖 第 1 页 / 共 2 页
字号:

								year=buffer[14]*10+buffer[15];
								if(year>99){ buffer[14]=0;buffer[15]=6;}

								mouth=buffer[16]*10+buffer[17];
								if(mouth>12){ buffer[16]=0;buffer[17]=1;}

						        day=buffer[18]*10+buffer[19];
															    
							    if(day>31){buffer[18]=0;buffer[19]=1; }							
								
									    
						              }

						else if(cnt_set==4){    //设定现在时间
						 		line++;
								if(line>23)line=20;	

								hour=buffer[20]*10+buffer[21];
								if(hour>=24){buffer[20]=0;buffer[21]=0;}

						        minute=buffer[22]*10+buffer[23];							    
							    if(minute>=60){buffer[22]=0;buffer[23]=0; }

								
									    
						              }
					
		 			    }
			  	}  
    }

void plan_count_display(){
	uchar buf_disp[4];
    uchar flag_0,flag_1,flag_2;
    buf_disp[0]=plancount/1000;
	buf_disp[1]=plancount/100 -buf_disp[0]*10;
	buf_disp[2]=plancount/10 -buf_disp[0]*100 -buf_disp[1]*10;
	buf_disp[3]=plancount -buf_disp[0]*1000-buf_disp[1]*100-buf_disp[2]*10; 
	flag_0=0;flag_1=0;flag_2=0;	 //关0码标示
	if(buf_disp[0]==0){			//查0码并树标示
	       flag_0=1;
		   if(buf_disp[1]==0) {
			   flag_1=1;
			   if(buf_disp[2]==0)flag_2=1;
				} 
			}
	if(flag_0){buffer[0]=16; }else{buffer[0]=buf_disp[0];}//若有0码关显示
    if(flag_1){buffer[1]=16; }else{buffer[1]=buf_disp[1];}
	if(flag_2){buffer[2]=16; }else{buffer[2]=buf_disp[2];}
	buffer[3]=buf_disp[3];	
 }

void set_plan_count_display(){

    buffer[0]=plancount/1000;
	buffer[1]=plancount/100 -buffer[0]*10;
	buffer[2]=plancount/10 -buffer[0]*100 -buffer[1]*10;
	buffer[3]=plancount -buffer[0]*1000-buffer[1]*100-buffer[2]*10; 
	
 }


 void counter_display(){    //转换为显示码(实际台数)	 //
    uchar buf_disp[4];
    uchar flag_0,flag_1,flag_2;
    buf_disp[0]=counter/1000;
	buf_disp[1]=counter/100 -buf_disp[0]*10;
	buf_disp[2]=counter/10 -buf_disp[0]*100 -buf_disp[1]*10;
	buf_disp[3]=counter/1 -buf_disp[0]*1000-buf_disp[1]*100-buf_disp[2]*10; 
	flag_0=0;flag_1=0;flag_2=0;	 //关0码标示
	if(buf_disp[0]==0){			//查0码并树标示
	       flag_0=1;
		   if(buf_disp[1]==0) {
			   flag_1=1;
			   if(buf_disp[2]==0)flag_2=1;
				} 
			}
	if(flag_0){buffer[8]=16; }else{buffer[8]=buf_disp[0];}//若有0码关显示
    if(flag_1){buffer[9]=16; }else{buffer[9]=buf_disp[1];}
	if(flag_2){buffer[10]=16; }else{buffer[10]=buf_disp[2];}
	buffer[11]=buf_disp[3];	   	
  
}
void rate_display(){     //转换为显示码(现在计划)

uint newcnt,rat,rat1,rat0;
uint timecnt,rat_tmp0,rat_tmp;
uchar buf_disp[4];
 uchar flag_0,flag_1,flag_2;
   	newcnt=plancount; 		
	timecnt=worktime;
	rat0=newcnt/timecnt;
	rat1=newcnt%timecnt;	 //余数处理
	
	rat_tmp0=minutecounter*rat0;
	rat_tmp=(minutecounter*rat1)/timecnt;	
	rat=rat_tmp0+rat_tmp;
	if(rat<=9999){
	buf_disp[0]=rat/1000;
	buf_disp[1]=rat/100 -buf_disp[0]*10;
	buf_disp[2]=rat/10 -buf_disp[0]*100 -buf_disp[1]*10;
	buf_disp[3]=rat/1 -buf_disp[0]*1000-buf_disp[1]*100-buf_disp[2]*10;

   	flag_0=0;flag_1=0;flag_2=0;//关0码标示
	if(buf_disp[0]==0){		   //查0码并树标示
	       flag_0=1;
		   if(buf_disp[1]==0) {
			   flag_1=1;
			   if(buf_disp[2]==0)flag_2=1;
				} 
			}
	if(flag_0){buffer[4]=16; }else{buffer[4]=buf_disp[0];} //若有0码关显示
    if(flag_1){buffer[5]=16; }else{buffer[5]=buf_disp[1];}
	if(flag_2){buffer[6]=16; }else{buffer[6]=buf_disp[2];}
	buffer[7]=buf_disp[3]; 
	   
           }
   else { 						//清0
          minutecounter=0;
        
		 } 
      
}

void rate_set_display(){    //转换为显示码( 设定工作时间 ) 
    buffer[4]=worktime/1000;
	buffer[5]=worktime/100 -buffer[4]*10;
	buffer[6]=worktime/10 -buffer[4]*100 -buffer[5]*10;
	buffer[7]=worktime -buffer[4]*1000-buffer[5]*100-buffer[6]*10;
}

void time_display(void){    //转换为显示码(现在时间)

	buffer[20]=hour/10 ;
	buffer[21]=hour%10;
	buffer[22]=minute/10;
	buffer[23]=minute%10;

}

unsigned char testkey(){    //键盘检查
   uchar tmp;
   P2=0xf0;
   tmp=P2;
   tmp=~tmp;
   return(tmp&0xf0);
   }
 unsigned char scan(){	  //键盘扫描
  uchar i,j, in,ini,inj,key;
  uchar scandig[]   = {0xfe,0xfd,0xfb,0xf7};

     for(i=0;i<4;i++){
		  P2=scandig[i];        
         delay(4);in=P2; in=in>>4;in=in|0xf0;

         for(j=0;j<4;j++){

              if(scandig[j]==in){

               ini=i; inj=j; key=inj*4+ini; 
         	   delay(5);while(testkey());
		       return(key); 
                            }
				
                         }    
       					}
		
		 return(0xff) ;
                     }

 void date_disp(){
   
	  buffer[12]=2;
	  buffer[13]=0;
	  buffer[14]=year/10;
	  buffer[15]=year%10; 
	  buffer[16]=mouth/10;
	  buffer[17]=mouth%10;
	  buffer[18]=day/10;
	  buffer[19]=day%10;

	  }

void main (){
    
    
    TMOD=0x21;   //T0计时,T1计时

    ET0=1;    //开T0中断   
	TL0=TTL0;   //2ms定时计时
    TH0=TTH0; 
	TR0=1;    //启动T0
	
	ET1=1;   //开T1中断
	TL1=156;   //接收计时
    TH1=156;
	TR1=1;    //启动T1	

	EX1=1;    //开INT1
    IT1=1;    //触发方式为负边缘
    PX1=1;	  //INTI中断优先
	year=7;
	mouth=7;
	day=7;	
	plancount=800; //计划数量
	worktime=480; //计划工作时间   
	hour=8;   //预定现在时间 08:00
	minute=0;
	second=0;
	flag_day=1;	
    EA =1;    //开总中断
    counter=0;   //初始化计数器
	minutecounter=0;    //初始化分钟计数器
	
 while(1){ 

   if(testkey()){     //按键检查
	   MRD=scan();    //按键扫描
	   if(MRD!=0xff)  KEYHANDLE();    //键值处理
		 }

   if(ir_enable){	       //红外接收检查
	       ir_enable=0;    //清红外接收成功旗标
		   MRD= key();     //处理红外接收码变为键值代码 
	       if(MRD!=0xff)  KEYHANDLE();	//键值处理	  
		   delay(30000);
	       ir_reject=0;	
		   }
  if(flag_day){	   //年月日天数判断程式
	   flag_day=0;	   
	   day++;
	   if(mouth==1||mouth==3||mouth==5||mouth==7||mouth==8||mouth==10||mouth==12) {day0=31;}
	     else if(mouth==4||mouth==6||mouth==9||mouth==11) {day0=30;}
		   else if(((year%4==0)&&(year%100!=0))||(year%400==0)){day0=29;}	//2月判断
		     else {day0=28;	}
		if(day>day0){
		        day=1;
		        mouth++;
		   if(mouth>12){
		           mouth=1;
				   year++;
				 }
			}
		date_disp();  //显示日期
		}
			   	
    counter_display();  //显示实际台数

	time_display();    //刷新显示时间
			 
	if(flag_set){
	       set_plan_count_display(); //设定生产计划显示
	       rate_set_display();   //转换为显示码( 设定工作时间 ) 
		   
	        }  
	 else{
	      plan_count_display();   // 计划生产数量显示
	  	  rate_display();      //刷新今日计划	
		  
		  }

     if(T0==0&&T1==1){     //实际计数
		  delay(5);
		  while(~T0);
		  counter++;		  
		  if(counter>9999)counter=0;			
	      }	    
		   
	if((flagminute==1)&&(T1==1)){     //分钟计数;sw开;sw关停止计数
		  flagminute=0;    //清间隔刷分钟标示
		  minutecounter++;		  
	   } 	     
   	 }
    }

⌨️ 快捷键说明

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