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

📄 graphics.c

📁 在Freescale16位单片机MC9s12dp256上移植了J1939源码和操作系统(ucOSII)。
💻 C
📖 第 1 页 / 共 3 页
字号:
  for(i=0;i<3;i++){	
    vLcd_DrawLine(x+35,y+i-6,x+41,y+i-4,FColor);
    vLcd_DrawLine(x+35,y+i+40,x+41,y+i+39,FColor);
    vLcd_DrawLine(x+41,y+i-4,x+48,y+i-1,FColor);
    vLcd_DrawLine(x+41,y+i+39,x+48,y+i+36,FColor);  
    
    vLcd_DrawLine(x+11+i,y-4,x+14+i,y+10,FColor);
    vLcd_DrawLine(x+14+i,y+10,x+10+i,y+16,FColor);
    vLcd_DrawLine(x+10+i,y+16,x+13+i,y+21,FColor);
    vLcd_DrawLine(x+13+i,y+21,x+10+i,y+32,FColor);
    vLcd_DrawLine(x+10+i,y+32,x+12+i,y+41,FColor);          
  }				   
  for(i=0;i<4;i++){
    vLcd_DrawPartArc(x+54+i,y+18,30,FColor,5);
    vLcd_DrawPartArc(x+54+i,y+18,30,FColor,6);
    vLcd_DrawPartArc(x+30+i,y+18,25,FColor,4);
    vLcd_DrawPartArc(x+30+i,y+19,25,FColor,7);  		
  } 
}

/**************************************************/
/*前雾灯                                        */
/**************************************************/ 
void vLcd_FFogLight(unsigned int x,unsigned int y,unsigned char FColor){
  unsigned int i,j,k;  
  for(i=0;i<3;i++){	
    vLcd_DrawLine(x,y+14+i,x+24,y+4+i,FColor);
    vLcd_DrawLine(x,y+26+i,x+22,y+16+i,FColor);
    vLcd_DrawLine(x,y+38+i,x+24,y+28+i,FColor);
  }
  FFogLightModel(x,y,FColor);   
}


/**************************************************/
/*后雾灯模型                                      */
/**************************************************/  
void BFogLightModel(unsigned int x,unsigned int y,unsigned char FColor){
  unsigned int i; 
  
  for(i=0;i<3;i++){	
    vLcd_DrawLine(x+7,y+2+i,x+14,y-2+i,FColor);
    vLcd_DrawLine(x+14,y+i-2,x+18,y+i-4,FColor);
    vLcd_DrawLine(x+18,y+i-4,x+24,y+i-5,FColor);
    vLcd_DrawLine(x+7,y+34+i,x+14,y+36+i,FColor);
    vLcd_DrawLine(x+14,y+36+i,x+18,y+38+i,FColor);
    vLcd_DrawLine(x+18,y+38+i,x+24,y+39+i,FColor);    
  }			 
  for(i=0;i<4;i++){
    vLcd_DrawPartArc(x+25+i,y+18,25,FColor,5);
    vLcd_DrawPartArc(x+25+i,y+18,25,FColor,6);
    vLcd_DrawPartArc(x+2+i,y+18,30,FColor,4);
    vLcd_DrawPartArc(x+2+i,y+18,30,FColor,7);  		
  } 
}

/**************************************************/
/*后雾灯                                          */
/**************************************************/
void vLcd_BFogLight(unsigned int x,unsigned int y,unsigned char FColor){
  unsigned int i;  
  for(i=0;i<3;i++){	
    vLcd_DrawLine(x+36,y+4+i,x+60,y+14+i,FColor);
    vLcd_DrawLine(x+38,y+16+i,x+60,y+26+i,FColor);
    vLcd_DrawLine(x+36,y+28+i,x+60,y+38+i,FColor);
    
    vLcd_DrawLine(x+47+i,y-2,x+43+i,y+8,FColor);
    vLcd_DrawLine(x+43+i,y+8,x+48+i,y+16,FColor);
    vLcd_DrawLine(x+48+i,y+16,x+45+i,y+19,FColor);
    vLcd_DrawLine(x+45+i,y+19,x+48+i,y+30,FColor);
    vLcd_DrawLine(x+48+i,y+30,x+44+i,y+41,FColor);      
  }
  BFogLightModel(x,y,FColor);    
}

/**************************************************/
/*灯光总开关                                      */
/**************************************************/
void vLcd_LightingSw(unsigned int x,unsigned int y,unsigned char FColor){
  unsigned int i,k;  
  for(i=0;i<10;i++){	
    vLcd_DrawLine(x-6,y-24+i,x-9,y-24+i,FColor); 
    vLcd_DrawLine(x+6,y-24+i,x+9,y-24+i,FColor); 
  }
  for(i=0;i<4;i++){	 
    vLcd_DrawLine(x-8,y-25+i,x+8,y-25+i,FColor); 
    vLcd_DrawCircle(x,y,14+i,FColor,0); 
    vLcd_DrawCircle(x,y+6,i,FColor,0);    
    
    vLcd_DrawLine(x-23,y-18+i,x-18,y-11+i,FColor);
    vLcd_DrawLine(x+23,y-18+i,x+18,y-11+i,FColor);
    
    vLcd_DrawLine(x+13,y+14+i,x+22,y+22+i,FColor);
    vLcd_DrawLine(x-13,y+14+i,x-22,y+22+i,FColor); 
  }
  for(i=0;i<3;i++){
    vLcd_DrawLine(x-29,y+i,x-19,y+i,FColor);
    vLcd_DrawLine(x+19,y+i,x+28,y+i,FColor);  		 
  }  
					
  for(i=0;i<12;i++){ 
    vLcd_DrawPartArc(x,y-8+i,2,FColor,0);
    vLcd_DrawPartArc(x,y-8+i,2,FColor,1);  
  }  
  for(i=1;i<12;i++)
    vLcd_DrawLine(x-1,y+18+i,x+1,y+18+i,FColor);
}


/**************************************************/
/*安全带                                          */
/**************************************************/
void vLcd_SafetyBeltt(unsigned int x,unsigned int y,unsigned char FColor){
  unsigned int i,j,k;  
  for(i=0;i<4;i++){
    vLcd_DrawPartArc(x,y+i,6,FColor,0);
    vLcd_DrawPartArc(x,y+i,6,FColor,1);
    vLcd_DrawPartArc(x,y+i,6,FColor,4);
    vLcd_DrawPartArc(x,y+i,6,FColor,5);
    vLcd_DrawPartArc(x,y+i,6,FColor,6);
    vLcd_DrawPartArc(x,y+i,6,FColor,7);	

    vLcd_DrawLine(x-3,y+6+i,x-2,y+6+i,FColor);	
    vLcd_DrawLine(x+2,y+6+i,x+4,y+6+i,FColor);
    
    vLcd_DrawLine(x-24,y+40+i,x+22,y+2+i,FColor);
    vLcd_DrawPartArc(x,y+60+i,32,FColor,0);
    vLcd_DrawPartArc(x,y+60+i,32,FColor,1);       
  }
  for(i=0;i<3;i++){
    vLcd_DrawLine(x-3,y+9+i,x-10,y+14+i,FColor);	
    vLcd_DrawLine(x+2,y+9+i,x+10,y+14+i,FColor);
    
    vLcd_DrawLine(x-10,y+14+i,x-12,y+17+i,FColor);
    vLcd_DrawLine(x+10,y+14+i,x+11,y+17+i,FColor);
    
    vLcd_DrawLine(x-12+i,y+17,x-15+i,y+31,FColor);
    vLcd_DrawLine(x+11+i,y+17,x+13+i,y+30,FColor); 
    
    vLcd_DrawLine(x-14+i,y+31,x-15+i,y+37,FColor);
    vLcd_DrawLine(x+15+i,y+29,x+14+i,y+37,FColor); 

  }
  for(i=0;i<2;i++){     	   
    vLcd_DrawPartArc(x+10+i,y+34,27,FColor,6); 
    vLcd_DrawPartArc(x+12+i,y+35,25,FColor,6); 
    
    vLcd_DrawPartArc(x-12+i,y+34,27,FColor,7); 
    vLcd_DrawPartArc(x-14+i,y+35,25,FColor,7); 
    
    vLcd_DrawPartArc(x,y+48+i,15,FColor,0);
    vLcd_DrawPartArc(x,y+48+i,15,FColor,1);
    
    vLcd_DrawLine(x-8,y+54+i,x-6,y+53+i,FColor); 
    vLcd_DrawLine(x+8,y+53+i,x+5,y+52+i,FColor);  
  }    
}


/**************************************************/
/*车速表 值 ("0<Value<160")                       */
/**************************************************/
void vLcd_GuageValueInit(unsigned int x,unsigned int y,unsigned char FColor){
  unsigned char i,k;
  OldSpeedValue=0;
  vLcd_GuageValue(x,y,FColor,FColor,160);
  OldSpeedValue=0;
  for(i=0;i<1;i++)
    vLcd_DrawLine(x,y+2+i,x+160,y+2+i,FColor);  
  for(i=0;i<5;i++){
    vLcd_DrawLine(x,y+2+i,x+1,y+2+i,FColor);
    vLcd_DrawLine(x+79,y+2+i,x+80,y+2+i,FColor); 
    vLcd_DrawLine(x+160,y+2+i,x+161,y+2+i,FColor);   
  } 
  for(k=1;k<8;k++) 
  for(i=0;i<4;i++){
    vLcd_DrawLine(x+20*k+1,y+2+i,x+20*k+1,y+2+i,FColor); 
  } 
  vLcd_Disply16DotHz(y+6,x-8,Zero,1,FColor);
  vLcd_Disply16DotHz(y+6,x+64,Eighty,2,FColor);
  vLcd_Disply16DotHz(y+6,x+142,OneSixZero,3,FColor);
  		 
}
void DrawUpright(unsigned int x,unsigned int y,unsigned char FColor,
                 unsigned int Hi){
  unsigned char i;  
  for(i=0;i<Hi;i++)
    vLcd_DrawLine(x,y-i,x+2,y-i,FColor); 
    
}
void vLcd_GuageValue(unsigned int x,unsigned int y,unsigned char FColor1,
                     unsigned char FColor2,unsigned int NewValue){
  unsigned char i,k,Fs;
  Fs=0; 
  if(NewValue>OldSpeedValue){
    k=20;
    for(i=0;i<=NewValue;i+=4){
      if(Fs>1){
        Fs=0; k++;
      }
      DrawUpright(x+i,y,FColor1,k); 
      Fs++;
    }
  } 
  else if(NewValue<OldSpeedValue){
    k=40;		//标准为39.
    for(i=160;i>=NewValue;i-=4){
      if(Fs>1){
        Fs=0; k--;
      }
      DrawUpright(x+i,y,FColor2,k); 
      Fs++;
    }
  }
  OldSpeedValue=NewValue;
}


/**************************************************/
/*水温表 值("-40<Value<210")                      */
/**************************************************/
void vLcd_WaterGuageInit(unsigned int x,unsigned int y,unsigned char FColor){
  unsigned char i;
  OldWaterTValue=0;
  vLcd_WaterGuageTValue(x,y,FColor,FColor,-40);
  for(i=0;i<100;i++)
    vLcd_DrawLine(x+16,y+i,x+19,y+i,FColor);
  for(i=0;i<3;i++){
    vLcd_DrawLine(x+18,y+i,x+23,y+i,FColor); 
    vLcd_DrawLine(x+18,y+89+i,x+23,y+89+i,FColor); 
    vLcd_DrawLine(x+16,y+100+i,x+23,y+100+i,FColor);  
  }
  vLcd_Disply16DotHz(y+81,x+24,Zero,1,FColor);
}
void DrawHorizotal(unsigned int x,unsigned int y,unsigned char FColor){
  unsigned char i;  
  for(i=0;i<3;i++)
		vLcd_DrawLine(x,y+i,x+14,y+i,FColor);    
}	 

void vLcd_WaterGuageTValue(unsigned int x,unsigned int y,unsigned char FColor1,
                           unsigned char FColor2,int NewValue){
  unsigned char i;
  NewValue=(2*(210-NewValue))/5;    
  if(NewValue>OldWaterTValue){
    for(i=0;i<NewValue;i+=4)
      DrawHorizotal(x,y+i,FColor2); 
  }
  else if(NewValue<OldWaterTValue){
    for(i=100;i>NewValue;i-=4)
      DrawHorizotal(x,y+i,FColor1); 
  }
  OldWaterTValue=NewValue;
}
							 
/**************************************************/
/*燃油表 值("E<Value<F")                          */
/**************************************************/
void vLcd_OilGuageInit(unsigned int x,unsigned int y,unsigned char FColor){
  unsigned char i;
  OldOilValue=0;
  vLcd_OilGuageTValue(x,y,FColor,FColor,600,600);
  for(i=0;i<100;i++)
    vLcd_DrawLine(x+16,y+i,x+19,y+i,FColor);
  for(i=0;i<3;i++){
    vLcd_DrawLine(x+18,y+i,x+23,y+i,FColor); 
    
    vLcd_DrawLine(x+18,y+24+i,x+23,y+24+i,FColor);
    vLcd_DrawLine(x+18,y+49+i,x+23,y+49+i,FColor);
    vLcd_DrawLine(x+18,y+74+i,x+23,y+74+i,FColor);
     
    vLcd_DrawLine(x+16,y+97+i,x+23,y+97+i,FColor);  
  }
}
void vLcd_OilGuageTValue(unsigned int x,unsigned int y,unsigned char FColor1,
                         unsigned char FColor2,unsigned int NewValue,unsigned int TotalV){
  unsigned char i;
  NewValue=(NewValue*100)/TotalV;
  
  if(NewValue>OldOilValue){
    for(i=0;i<NewValue;i+=4)
      DrawHorizotal(x,y+i,FColor2); 
  }
  else if(NewValue<OldOilValue){
    for(i=100;i>NewValue;i-=4)
      DrawHorizotal(x,y+i,FColor1); 
  }
  OldOilValue=NewValue;
    
}

void vLcd_MainFrm(unsigned char FColor){
  unsigned int i,j,k;  
  for(i=0;i<2;i++){	
    vLcd_DrawLine(15,15+i,625,15+i,FColor);
    vLcd_DrawLine(15,95+i,315,95+i,FColor);
    vLcd_DrawLine(15,175+i,625,175+i,FColor);
    vLcd_DrawLine(15,255+i,625,255+i,FColor);   
  }
  for(i=0;i<240;i++){
    vLcd_DrawLine(15,15+i,16,15+i,FColor);
    vLcd_DrawLine(115,15+i,116,15+i,FColor);
    vLcd_DrawLine(215,15+i,216,15+i,FColor);
    vLcd_DrawLine(315,15+i,316,15+i,FColor); 
    vLcd_DrawLine(624,15+i,625,15+i,FColor);   
  }
  for(i=0;i<160;i++)
    vLcd_DrawLine(465,15+i,466,15+i,FColor);        
}


void vApp_GraphicsInit(unsigned char BColor){//示意图初时化
  vLcd_ClearViewport(0x22);
	vLcd_MainFrm(0x05);								    //框架
	vLcd_LightingSw(65,55,BColor);		    //灯丝检测报警指示灯
	vLcd_SafetyBeltt(165,30,BColor);	    //安全带指示灯	
	vLcd_LTurnIndn(230,55,BColor);	 	    //主车转向指示(左)
	vLcd_RTurnIndn(270,55,BColor);		    //主车转向指示(右)  
  vLcd_FFogLight(35,115,BColor);		    //前雾灯指示灯
  vLcd_BFogLight(235,115,BColor);	  	  //后雾灯指示灯	
	vLcd_LHighBeam(135,115,BColor);		    //远光指示灯	
	WindScreenModel(65,242,BColor);   	  //风窗玻璃
	vLcd_WashInstr(65,242,BColor); 		    //刮水器指示灯
	vLcd_ScrapeWaterInstr(65,242,BColor); //洗涤器指示灯 	
	vLcd_LDippedHeadLight(135,195,BColor);//近光灯指示灯
	vLcd_BatteryState(240,195,BColor);		//电池	
	vLcd_FuelPic(340,60,BColor);					//燃油表
	vLcd_OilGuageInit(410,40,BColor);			//燃油值示意	
	vLcd_WaterTemperature(510,70,BColor); //水温表
	vLcd_WaterGuageInit(560,40,BColor);	  //温度值示意 
	vLcd_GuageValueInit(350,225,BColor);  //车速表
}












 

⌨️ 快捷键说明

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