📄 print.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 + -