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

📄 print.c

📁 pxa270驱动程序
💻 C
字号:
#include <math.h>
extern unsigned char char57[10][8];


void clearScreen(short color)
{
	int i;
	i = 0x96000/2;
 	for(;i>0;i--) 
  		(*(volatile short*)(0xa0500000 + i*2)) = color; 
}



void paintPixel(short x,short y,short pixel_rgb)
{
	(*(volatile short*)(0xa0500000+y*2*640+x*2)) = pixel_rgb;
}

void partClear(short x,short y,short width,short height,short color)
{
	int i,j;
	for(i=0;i<width;i++){
		for(j=0;j<height;j++){
			 paintPixel(x+i,y+j,color);
		}
	}

}

void paintCircular(short x0,short y0,short radius,short color)
{
	short x=0,y=radius;
	long nextH,nextY,nextC=radius*radius;
	paintPixel(x0,y0+radius,color);
	paintPixel(x0+radius,y0,color);
	paintPixel(x0,y0-radius,color);
	paintPixel(x0-radius,y0,color);
	while(x<=y){
		nextH=(((x+1)*(x+1)+y*y-nextC)>0)?((x+1)*(x+1)+y*y-nextC):(-((x+1)*(x+1)+y*y-nextC));
		nextY=(((x+1)*(x+1)+(y-1)*(y-1)-nextC)>0)?((x+1)*(x+1)+(y-1)*(y-1)-nextC):(-((x+1)*(x+1)+(y-1)*(y-1)-nextC));
		
		if(nextH>nextY){
			y=y-1;
		}
		x=x+1;
		paintPixel(x0+x,y0+y,color);
		paintPixel(x0+y,y0+x,color);
		paintPixel(x0-y,y0+x,color);
		paintPixel(x0+x,y0-y,color);
		paintPixel(x0-x,y0-y,color);
		paintPixel(x0-y,y0-x,color);
		paintPixel(x0+y,y0-x,color);
		paintPixel(x0-x,y0+y,color);	

	}
	
}

void paintLine(short x0,short y0,short x1,short y1,short color)
{
	short x=x0,y=y0,ddy;
	short nextH,nextY;
	//float dd;
	short dx,dy;
	dx=x1-x0;
	dy=y1-y0;
	ddy=(dy>0)?1:(-1);
	if(dx==0)
		do{
			paintPixel(x,y,color);
			y++;		
		}while(y<=y1);	
	if(dy==0)				
		do{
			paintPixel(x,y,color);
			x++;
		}while(x<=x1);
	if((dx!=0)&&(dy!=0)){
		x=0;y=0;
		if((dx>dy)&&(dx>-dy)){
			//dd=((float)dy)/dx;
			do{
				paintPixel(x0+x,y0+y,color);				
				nextH=((dy*(x+1)-dx*y)>0)?(dy*(x+1)-dx*y):(-(dy*(x+1)-dx*y));
				nextY=((dy*(x+1)-dx*(y+ddy))>0)?(dy*(x+1)-dx*(y+ddy)):(-(dy*(x+1)-dx*(y+ddy)));
				if(nextH>nextY)	y=y+ddy;				
				x=x+1;
				//y=(short)(x*dd);
			}while(x<=dx);	
		}	
		else if((dx<dy)||(dx<-dy)){
			//dd=((float)dx)/dy;
			do{
				paintPixel(x0+x,y0+y,color);
				nextH=((dy*(x+1)-dx*(y+ddy))>0)?(dy*(x+1)-dx*(y+ddy)):(-(dy*(x+1)-dx*(y+ddy)));
				nextY=((dy*x-dx*(y+ddy))>0)?(dy*x-dx*(y+ddy)):(-(dy*x-dx*(y+ddy)));
				if(nextH<nextY)	x++;
				y=y+ddy;	
				//x=(float)(y*dd);		
			}while(y!=dy);
		}else
			do{
				paintPixel(x0+x,y0+y,color);
				x++;y+=ddy;
			}while(x<=dx);
	
	}

}

void paintChar57(short x,short y,unsigned char data,short color)
{
	int j,k;
	unsigned char value;
	for(j=0;j<8;j++){
			value =char57[data][j];
			for(k=0;k<8;k++){
				if(value&0x80){
					paintPixel(x+k,y+j,color);
				}
				value<<=1;
			}
	}
	
}

void paintData57(short x,short y,unsigned char data,short color)
{
	unsigned char value;
	value=data/100;
	if(value!=0) paintChar57(x,y,value,color);
	value=(data%100)/10;
	if((value!=0)||((data/100)!=0)) paintChar57(x+8,y,value,color);
	value=data%10;
	paintChar57(x+16,y,value,color);

}



void paintDial(short x0,short y0,short range,short radius,short color)
{
	short x2,y2,x3,y3;
	paintCircular(x0,y0,radius,color);
	paintCircular(x0,y0,radius+1,color);
	paintCircular(x0,y0,radius-1,color);

	x2=707*radius/1000;
	y2=707*radius/1000;
	x3=x2*9/10;
	y3=y2*9/10;
	paintLine(x0+x3,y0+y3,x0+x2,y0+y2,color);
	paintData57(x0+x3-16,y0+y3-8,range,color); //12
	paintLine(x0+x3,y0-y3,x0+x2,y0-y2,color);
	paintData57(x0+x3-16,y0-y3,8*range/12,color);   //8
	paintLine(x0-x2,y0-y2,x0-x3,y0-y3,color);
	paintData57(x0-x3-8,y0-y3,4*range/12,color);     //4
	paintLine(x0-x2,y0+y2,x0-x3,y0+y3,color);
	paintData57(x0-x3-12,y0+y3-8,0,color);   //0
	x2++;x3++;
	paintLine(x0+x3,y0+y3,x0+x2,y0+y2,color);
	paintLine(x0+x3,y0-y3,x0+x2,y0-y2,color);
	paintLine(x0-x2,y0-y2,x0-x3,y0-y3,color);
	paintLine(x0-x2,y0+y2,x0-x3,y0+y3,color);
	y2++;y3++;
	paintLine(x0+x3,y0+y3,x0+x2,y0+y2,color);
	paintLine(x0+x3,y0-y3,x0+x2,y0-y2,color);
	paintLine(x0-x2,y0-y2,x0-x3,y0-y3,color);
	paintLine(x0-x2,y0+y2,x0-x3,y0+y3,color);
	
	x2=924*radius/1000;
	y2=384*radius/1000;
	x3=x2*9/10;
	y3=y2*9/10	;
	paintLine(x0+x3,y0+y3,x0+x2,y0+y2,color);
	paintData57(x0+x3-16,y0+y3-8,11*range/12,color);   //11
	paintLine(x0+x3,y0-y3,x0+x2,y0-y2,color);
	paintData57(x0+x3-16,y0-y3,9*range/12,color);     //9
	paintLine(x0-x2,y0-y2,x0-x3,y0-y3,color);
	paintData57(x0-x3-8,y0-y3,3*range/12,color);       //3
	paintLine(x0-y2,y0-x2,x0-y3,y0-x3,color);
	paintData57(x0-y3-8,y0-x3,5*range/12,color);       //5
	paintLine(x0+y3,y0-x3,x0+y2,y0-x2,color);
	paintData57(x0+y3-16,y0-x3,7*range/12,color);      //7
	paintLine(x0-x2,y0+y2,x0-x3,y0+y3,color);
	paintData57(x0-x3-8,y0+y3-8,range/12,color);      //1
	
	x2=981*radius/1000;
	y2=195*radius/1000;
	x3=x2*19/20;
	y3=y2*19/20;
	paintLine(x0+x3,y0+y3,x0+x2,y0+y2,color);
	paintLine(x0+x3,y0-y3,x0+x2,y0-y2,color);
	paintLine(x0-x2,y0-y2,x0-x3,y0-y3,color);
	paintLine(x0-y2,y0-x2,x0-y3,y0-x3,color);
	paintLine(x0+y3,y0-x3,x0+y2,y0-x2,color);
	paintLine(x0-x2,y0+y2,x0-x3,y0+y3,color);
	
	x2=831*radius/1000;
	y2=556*radius/1000;
	x3=x2*19/20;
	y3=y2*19/20;
	paintLine(x0+x3,y0+y3,x0+x2,y0+y2,color);
	paintLine(x0+x3,y0-y3,x0+x2,y0-y2,color);
	paintLine(x0-x2,y0-y2,x0-x3,y0-y3,color);
	paintLine(x0-y2,y0-x2,x0-y3,y0-x3,color);
	paintLine(x0+y3,y0-x3,x0+y2,y0-x2,color);
	paintLine(x0-x2,y0+y2,x0-x3,y0+y3,color);
		
	
	paintLine(x0-radius,y0,x0-radius*9/10,y0,color);
	paintLine(x0-radius,y0+1,x0-radius*9/10,y0+1,color);
	paintLine(x0-radius,y0-1,x0-radius*9/10,y0-1,color);
	paintData57(x0-radius*9/10-8,y0,2*range/12,color);        //2
	paintLine(x0,y0-radius,x0,y0-radius*9/10,color);
	paintLine(x0+1,y0-radius,x0+1,y0-radius*9/10,color);
	paintLine(x0-1,y0-radius,x0-1,y0-radius*9/10,color);
	paintData57(x0-12,y0-radius*9/10,6*range/12,color);       //6
	paintLine(x0+radius*9/10,y0,x0+radius,y0,color);
	paintLine(x0+radius*9/10,y0+1,x0+radius,y0+1,color);
	paintLine(x0+radius*9/10,y0-1,x0+radius,y0-1,color);
	paintData57(x0+radius*9/10-24,y0,10*range/12,color);       //10
		
}
void paintPointer(short x0,short y0,short range,short radius,short value,short color)
{
	float jiao,jiao_1,jiao_tan,jiao_cos,jiao_sin;
	short i,j,len;
	jiao=2*3.14*value/(4*range/3);
	if((value<=range/3)&&(value>0)){
		jiao_1=3.1415/4.00-jiao;
		len=(short)3*radius*cos(jiao_1)/4;
		jiao_tan=tan(jiao_1);
		for(i=0;i<len;i++){
			paintPixel(x0-i,y0+i*jiao_tan,color);
		}
	}
	if((value<=2*range/3)&&(value>range/3)){
		jiao_1=3*3.1415/4.00-jiao;
		len=(short)3*radius*cos(jiao_1)/4;
		jiao_tan=tan(jiao_1);
		for(i=0;i<len;i++){
			paintPixel(x0-i*jiao_tan,y0-i,color);
		}
	}
	if((value<=range)&&(value>2*range/3)){
		jiao_1=5*3.1415/4.00-jiao;
		len=(short)3*radius*cos(jiao_1)/4;;
		jiao_tan=tan(jiao_1);
		for(i=0;i<len;i++){
			paintPixel(x0+i,y0-i*jiao_tan,color);
		}
	}
	paintData57(x0-8,y0+radius+8,value,color);
}

⌨️ 快捷键说明

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