📄 as4_drive.c
字号:
for(j=0;j<80;j++)
{
for(i=0;i<40;i++)
{
MAINLCD_DATA(0xf800);
MAINLCD_DATA(0xf800);
//MAINLCD_DATA(0xfc00);
//MAINLCD_DATA(0x0000);//80 red pixel
}
for(i=0;i<40;i++)
{
MAINLCD_DATA(0x07e0);
MAINLCD_DATA(0x07e0);
//MAINLCD_DATA(0x03f0);
//MAINLCD_DATA(0x0000);//80 green pixel
}
for(i=0;i<40;i++)
{
MAINLCD_DATA(0x001f);
MAINLCD_DATA(0x001f);
//MAINLCD_DATA(0x000f);
//MAINLCD_DATA(0xf000);//80 blue pixel
}
}
for(j=0;j<80;j++)
{
for(i=0;i<40;i++)
{
MAINLCD_DATA(0x0000);
MAINLCD_DATA(0x0000);
//MAINLCD_DATA(0x0000);
//MAINLCD_DATA(0x0000);//80 black pixel
}
for(i=0;i<40;i++)
{
MAINLCD_DATA(0xffff);
MAINLCD_DATA(0xffff);
//MAINLCD_DATA(0xffff);
//MAINLCD_DATA(0xc000);//80 white pixel
}
for(i=0;i<40;i++)
{
MAINLCD_DATA(0x8410);
MAINLCD_DATA(0x8410);
//MAINLCD_DATA(0x8208);
//MAINLCD_DATA(0x0000);//80 gray pixel
}
}
for(j=0;j<80;j++)
{
for(i=0;i<40;i++)
{
MAINLCD_DATA(0x07ff);
MAINLCD_DATA(0x07ff);
//MAINLCD_DATA(0x03ff);
//MAINLCD_DATA(0xc000);//80 cnay pixel
}
for(i=0;i<40;i++)
{
MAINLCD_DATA(0xf81f);
MAINLCD_DATA(0xf81f);
//MAINLCD_DATA(0xfc0f);
//MAINLCD_DATA(0xc000);//80 magent pixel
}
for(i=0;i<40;i++)
{
MAINLCD_DATA(0xffe0);
MAINLCD_DATA(0xffe0);
//MAINLCD_DATA(0xfff0);
//MAINLCD_DATA(0x0000);//80 yellow pixel
}
}
show_mun32(10,244,11); //T
show_mun32(30,244,12); // "/"
show_mun32(47,244,10); //P
show_hz32 (6,281,17); //
show_hz32 (42,281,18); //
show_hz32 (86,260,14);
show_hz32 (122,260,16);
show_hz32 (166,260,15);
show_hz32 (202,260,16);
}
/*************************************/
void TP_5(void)
{
unsigned int key_x=0,key_y=0,keyx2=0,keyy2=0,keyx4=0,keyy4=0,keyx5=0,keyy5=0;
unsigned char a,b=0x00;
showWhite();areaset(10,10);
for (a=0;a<12;a++){MAINLCD_DATA(0x0000);}
for (a=0;a<12;a++){ areaset(16,10-5+a);MAINLCD_DATA(0x0000);}
while (b==0x00)
{
wait_TP();
key_x=read_TP_X();
key_y=read_TP_Y();
if (((key_x<=900)&&(key_x>=760))&&((key_y<=1020)&&(key_y>=830)))b=0x01;
keyx1=key_x;
keyy1=key_y;
}
////////////////////////////////
showWhite();areaset(10,310); b=0x00;
for (a=0;a<12;a++){MAINLCD_DATA(0x0000);}
for (a=0;a<12;a++){ areaset(16,310-5+a);MAINLCD_DATA(0x0000);}
while (b==0x00)
{
wait_TP();
key_x=read_TP_X();
key_y=read_TP_Y();
if (((key_x<=900)&&(key_x>=760))&&((key_y<=220)&&(key_y>=100)))b=0x01;
keyx2=key_x;
keyy2=key_y;
}
////////////////////
showWhite();areaset(220,310);b=0x00;
for (a=0;a<12;a++){MAINLCD_DATA(0x0000);}
for (a=0;a<12;a++){ areaset(226,310-5+a);MAINLCD_DATA(0x0000);}
while (b==0x00)
{
wait_TP();
key_x=read_TP_X();
key_y=read_TP_Y();
if (((key_x<=250)&&(key_x>=100))&&((key_y<=220)&&(key_y>=100)))b=0x01;
keyx3=key_x;
keyy3=key_y;
}
//////////////////////////
showWhite();areaset(220,10); b=0x00;
for (a=0;a<12;a++){MAINLCD_DATA(0x0000);}
for (a=0;a<12;a++){ areaset(226,10-5+a);MAINLCD_DATA(0x0000);}
while (b==0x00)
{
wait_TP();
key_x=read_TP_X();
key_y=read_TP_Y();
if (((key_x<=250)&&(key_x>=98))&&((key_y<=1020)&&(key_y>=830)))b=0x01;
}
//////////////////
showWhite();areaset(115,155);b=0x00;
for (a=0;a<12;a++){MAINLCD_DATA(0x0000);}
for (a=0;a<12;a++){ areaset(121,155-5+a);MAINLCD_DATA(0x0000);}
while (b==0x00)
{
wait_TP();
key_x=read_TP_X();
key_y=read_TP_Y();
if (((key_x<=580)&&(key_x>=440))&&((key_y<=600)&&(key_y>=480)))b=0x01;
keyx5=key_x;
keyy5=key_y;
}
}
/*************************************/
void showGray32x(void)
{
unsigned char a;
unsigned int c,i=0xffff;
areaset(0,0);
for( a=0;a<31;a++)
{
for(c=0;c<2400;c++){MAINLCD_DATA(i);}
i=i-0x841;
}
for(c=0;c<2400;c++){MAINLCD_DATA(0x0000);}
}
/*************************************/
void showGray32y(void)
{
unsigned char a;
unsigned int c,i=0xffff;
areaset(0,0);
for (c=0;c<320;c++)
{
for(a=0;a<30;a++)
{
MAINLCD_DATA(i);
MAINLCD_DATA(i);
MAINLCD_DATA(i);
MAINLCD_DATA(i);
MAINLCD_DATA(i);
MAINLCD_DATA(i);
MAINLCD_DATA(i);
MAINLCD_DATA(i);
i=i-0x841;
}
i=0xffff;
}
}
/*************************************/
void show_hz16(unsigned char x,unsigned int y,unsigned char mun)
{
unsigned char i=0,j=0,k=0,l=0,m=1,temp=0;
for (i=0;i<16;i++)
{
areaset(x,y+i); //设定显示的汉字在显示屏中的位置
for (j=0;j<2;j++) //把16*16点阵的汉字存到一个2*16的数组中
{
temp=hzdot[l+mun*32]; //如何取到HZK.h中的第mun个汉字的?
for (k=0;k<8;k++)
{
if (temp<0x80)
{
areaset(x+m,y+i);
// MAINLCD_DATA(0xf800);
}
else
{
MAINLCD_DATA(0x0000);
// MAINLCD_DATA(0x0000);
}
temp=temp<<1;
m++;
}
l=l+1;
}
m=1;
}
}
/*************************************/
void show_hz32(unsigned char x,unsigned int y,unsigned char mun)
{
unsigned char i=0,j=0,k=0,l=0,m=2,n=0;
unsigned int temp=0;
for (i=0;i<16;i++)
{
for (j=0;j<2;j++)
{
areaset(x,y+n);
temp=hzdot[l+mun*32];
temp=temp<<8;
temp=temp+hzdot[1+l+mun*32];
for (k=0;k<16;k++)
{
if (temp<0x8000)
{
areaset(x+m,y+n);
// MAINLCD_DATA(0xf800);
}
else
{
MAINLCD_DATA(0x0000);
MAINLCD_DATA(0x0000);
// MAINLCD_DATA(0x0000);
// MAINLCD_DATA(0x0000);
}
temp=temp<<1;
m=m+2;
}
n++;m=2;
}
l=l+2;
}
}
/*************************************/
void show_mun32(unsigned char x,unsigned int y,unsigned char mun)
{
unsigned char i=0,j=0,k=0,m=2,n=0,temp=0;
for (i=0;i<16;i++)
{
for (j=0;j<2;j++)
{
areaset(x,y+n);
temp=mundot[i+mun*16];
for (k=0;k<8;k++)
{
if (temp<0x80)
{
areaset(x+m,y+n);
// MAINLCD_DATA(0x0eff);
// MAINLCD_DATA(0x0eff);
}
else
{
MAINLCD_DATA(0x0000);
MAINLCD_DATA(0x0000);
// MAINLCD_DATA(0x0000);
// MAINLCD_DATA(0x0000);
}
temp=temp<<1;
m=m+2;
}
n++;m=2;
}
}
}
/*************************************/
void wait_TP(void)
{
unsigned char i;
DDRA =0X28;
PORTA=0X18;
delay_5us(1);
for (i=0;i<10;i++)
{
while ((PINA&0X10)==0x10);/* wait T/P down*/
delay_nms(1);
}
while ((PINA&0X10)==0x10)
{
x1=0,x2=0,x3=0,y1=0,y2=0,y3=0;
}
//while (read_TP()==13);
}
/*************************************/
void hand_write(void)
{
unsigned int z,a=0;
int t=0,b=0,i,j,nn=0;
showWhite();
avey=(keyy1-keyy3)/288;
avex=(keyx1-keyx3)/208;
while (1)//read_TP()!=13)
{
DDRA =0X28;
PORTA=0X18;
delay_5us(1);
while ((PINA&0X10)==0x10)
{
x1=0,x2=0,x3=0,y1=0,y2=0,y3=0;
}
x1=read_TP_X();
y1=read_TP_Y();
a=240-x1/avex+50;
x3=x2;
x2=a;
b=320-y1/(avey+0.222)+82;
y3=y2;
y2=b;
i=abs(y2-y3);
j=abs(x2-x3);
if((i<3)&&(j<3))
{
if (y3!=0)
{
{
t=(y3-120)/12;
for(z=0;z<3;z++)
{ nn=y3+z-t;
if((x3>=0)&&(x3<239)&&(nn>=0)&&(nn<320))
{ areaset(x3,nn);
MAINLCD_DATA(0xf800);
MAINLCD_DATA(0xf800);}
}
}
}
}
}
}
/*************************************/
unsigned int read_TP_X(void)
{
unsigned char i;
unsigned int sum=0;
// wait_TP();
for (i=0;i<10;i++)
{
DDRA =0X58;
PORTA=0X18;
delay_5us(1);
ADMUX=0X45;
ADCSRA=0X84;
ADCSR |=BIT(ADSC);
ADCSR |=BIT(ADSC);
delay_5us(2);
sum+=ADC;
}
return sum/10;
}
/*************************************/
unsigned int read_TP_Y(void)
{
unsigned char i;
unsigned int sum=0;
// wait_TP();
for (i=0;i<10;i++)
{
DDRA =0XA8;
PORTA=0X28;
delay_5us(1);
ADMUX=0X44;
ADCSRA=0X84;
ADCSR |=BIT(ADSC);
ADCSR |=BIT(ADSC);
delay_5us(2);
sum+=ADC;
}
return sum/10;
}
/*************************************/
unsigned char read_TP(void) //read TP 1~13
{
#define x1 880
#define x2 616
#define x3 364
#define x4 100
#define y1 944
#define y2 740
#define y3 536
#define y4 332
#define y5 120
#define y6 70
unsigned char key;
unsigned int key_x,key_y;
wait_TP();
key_x=read_TP_X();
key_y=read_TP_Y();
if (((key_x<=x1)&&(key_x>=x2))&&((key_y<=y1)&&(key_y>=y2)))
key=1;
else if(((key_x<=x2)&&(key_x>=x3))&&((key_y<=y1)&&(key_y>=y2)))
key=2;
else if(((key_x<=x3)&&(key_x>=x4))&&((key_y<=y1)&&(key_y>=y2)))
key=3;
else if(((key_x<=x1)&&(key_x>=x2))&&((key_y<=y2)&&(key_y>=y3)))
key=4;
else if(((key_x<=x2)&&(key_x>=x3))&&((key_y<=y2)&&(key_y>=y3)))
key=5;
else if(((key_x<=x3)&&(key_x>=x4))&&((key_y<=y2)&&(key_y>=y3)))
key=6;
else if(((key_x<=x1)&&(key_x>=x2))&&((key_y<=y3)&&(key_y>=y4)))
key=7;
else if(((key_x<=x2)&&(key_x>=x3))&&((key_y<=y3)&&(key_y>=y4)))
key=8;
else if(((key_x<=x3)&&(key_x>=x4))&&((key_y<=y3)&&(key_y>=y4)))
key=9;
else if(((key_x<=x1)&&(key_x>=x2))&&((key_y<=y4)&&(key_y>=y5)))
key=10;
else if(((key_x<=x2)&&(key_x>=x3))&&((key_y<=y4)&&(key_y>=y5)))
key=11;
else if(((key_x<=x3)&&(key_x>=x4))&&((key_y<=y4)&&(key_y>=y5)))
key=12;
else if(((key_x<=x1)&&(key_x>=x4))&&((key_y<=y5)&&(key_y>=y6)))
key=13;
else
key=0;
return key;
}
/*************************************/
void timer1_init(void)
{
TCCR1B=0X00;
TCNT1H=0XF0;
TCNT1L=0XBE;
OCR1AH=0X00;
OCR1AL=0X00;
OCR1BH=0X00;
OCR1BL=0X00;
TIMSK=0X04;
TCCR1A=0X00;
TCCR1B=0X05;
SEI();
}
/*****************************************************/
void LCD_CtrlWrite_LGDP4532(unsigned int cmd,unsigned int dat)
{
MAINLCD_CMD(cmd);
MAINLCD_DATA(dat);
}
/*************************************/
void pause(void)
{
while ((PINA&0x02)==0x00);
}
/*****************************************************/
void MAINLCD_CMD(unsigned int c)
{
PORTB=c; //low 8byte
PORTD=c/256; //hi 8byte
RS_0;WR_0;CS_0;
CS_1;
}
/*************** W_DATA *************************************/
void MAINLCD_DATA(unsigned int d)
{
PORTB=d; //low 8byte
PORTD=d/256; //hi 8byte
RS_1;WR_0;CS_0;
CS_1;
}
/**********************************************/
#pragma interrupt_handler timer1_ovf_isr:10
void timer1_ovf_isr(void)
{
TCNT1H=0XF0;
TCNT1L=0XBE;
}
/**********************************************/
void delay_nms(unsigned int tt)
{
unsigned int i;
while (tt--)
for(i=0;i<140*16;i++); //AT 1M=120,AT 8M=120*8
}
/***************************************************/
void delay_5us(unsigned int tt)
{
unsigned int i;
while (tt--)
for(i=0;i<16;i++); //AT 1M=120,AT 8M=120*8
}
/***************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -