📄 subpro.h
字号:
/****************Description of the subprograms.************
clear_screen前240*64 SRAM清零
disp16x16 16x16字符显示
disp16x8 16x8字符显示
disp24x24 24x24字符显示
picture 图画显示
Line 1=竖线,0=横线
***********************************************************/
void dispASC(unsigned char x,unsigned char y,unsigned int z)
{unsigned char i,j,*p,*q;
p=&ADDR_0+y*bytes_1line+x; //起始定位
z=(z-0x20)*16; //数据定位
A17_high //选择外部显示Ram
for (i=16;i>0;i--)
{if (y<lines_4kSram)
{SRAM_32k
q=p+32*1024;
*q=~ASCII[z++];
SRAM_64k
}
else *p=~ASCII[z++];
y++;
p=&ADDR_0+y*bytes_1line+x;
}
A17_A16_low
}
void clear_screen(void)
{unsigned int j;
unsigned char data,*p;
data =0xff;
A17_high //选择外部显示Ram
SRAM_32k
p = &ADDR_0+32*1024;
for (j=lines_4kSram*bytes_1line;j>0;j--)
{*p++=data;}
SRAM_64k
p=&EXTERN_0;
for (j=(240-lines_4kSram)*bytes_1line;j>0;j--)
{*p++=data;}
A17_A16_low
}
void disp16x16(unsigned char x,unsigned char y,unsigned int z)
{unsigned char i,j,*p,*q;
p=&ADDR_0+y*bytes_1line+x; //起始定位
z=z*32; //数据定位
A17_high //选择外部显示Ram
for (i=16;i>0;i--)
{if (y<lines_4kSram)
{SRAM_32k
q=p+32*1024;
for (j=2;j>0;j--)
{*q++=~char16x16[z++];}
SRAM_64k
}
else {for (j=2;j>0;j--)
{*p++=~char16x16[z++];}
}
y++;
p=&ADDR_0+y*bytes_1line+x;
}
A17_A16_low
}
void disp16x8(unsigned char x,unsigned char y,unsigned int z)
{unsigned char i,j,*p,*q;
p=&ADDR_0+y*bytes_1line+x; //起始定位
z=z*16; //数据定位
A17_high //选择外部显示Ram
for (i=16;i>0;i--)
{if (y<lines_4kSram)
{SRAM_32k
q=p+32*1024;
*q=~char16x8[z++];
SRAM_64k
}
else *p=~char16x8[z++];
y++;
p=&ADDR_0+y*bytes_1line+x;
}
A17_A16_low
}
void disp24x24(unsigned char x,unsigned char y,unsigned int z)
{unsigned char i,j,*p,*q;
p=&ADDR_0+y*bytes_1line+x; //起始定位
z=z*72; //数据定位
A17_high //选择外部显示Ram
for (i=24;i>0;i--)
{if (y<lines_4kSram)
{SRAM_32k
q=p+32*1024;
for (j=3;j>0;j--)
{*q++=~char24x24[z++];}
SRAM_64k
}
else {for (j=3;j>0;j--)
{*p++=~char24x24[z++];}
}
y++;
p=&ADDR_0+y*bytes_1line+x;
}
A17_A16_low
}
void picture(unsigned char x,unsigned char y,unsigned char a,unsigned char b)
{ unsigned char *p,*q,i,j,m;
unsigned int z=0;
p=&ADDR_0+y*bytes_1line+x; //起始定位
A17_high //选择外部显示Ram
for (i=b;i>0;i--)
{if (y<lines_4kSram)
{SRAM_32k
q=p+32*1024;
for (j=a;j>0;j--)
{*q++=~pictureTab[z++];}
SRAM_64k
}
else {for (j=a;j>0;j--)
{*p++=~pictureTab[z++];}
}
y++;
p=&ADDR_0+y*bytes_1line+x;
}
A17_A16_low
}
void Line(unsigned char n,unsigned char x,unsigned char y,unsigned char z)
{ unsigned char i,data,*p,*q;
p=&ADDR_0+y*bytes_1line+x; //起始定位
q=p+32*1024;
A17_high //选择外部显示Ram
if (n==1)
//竖线
{data=0xfe;
for (i=z;i>0;i--)
{if (y<lines_4kSram)
{SRAM_32k
q=p+32*1024;
*q=data;
SRAM_64k
}
else *p=data;
y++;
p=&ADDR_0+y*bytes_1line+x;
}
}
else //横线
{data=0x00;
if (y<lines_4kSram)
{SRAM_32k
for (i=z;i>0;i--) *q++=data;
SRAM_64k}
else for (i=z;i>0;i--) *p++=data;
}
A17_A16_low
}
void movx(unsigned char *address,unsigned char data)
{if (address>=(&EXTERN_0))
*address=data;
else { SRAM_32k
address=address+32*1024;
*address=data;
SRAM_64k}
}
void kuang(unsigned char x,unsigned char y,unsigned char a,unsigned char b)
{unsigned char i,j,*p;
p=&ADDR_0+y*bytes_1line+x; //起始定位
A17_high //选择外部显示Ram
for(i=0;i<b;i++)
{if (i==(b-1))
{//边框的最后一行
for (j=0;j<a;j++)
{if (j==a-1)
{movx(p,1);}
else if (j==0)
{movx(p,0xc0);}
else {movx(p,0);}
p++;
}
y++;
p=&ADDR_0+y*bytes_1line+x;
}
else if (i==(b-2))
{//边框的倒数第二行
for (j=0;j<a;j++)
{if (j==a-1)
{movx(p,~0xff);}
else if (j==0)
{movx(p,~0x7f);}
else {movx(p,0);}
p++;
}
y++;
p=&ADDR_0+y*bytes_1line+x;
}
else {switch (i)
{case 0:{//边框的第一行
for (j=0;j<a;j++)
{ if (j==a-1)
{movx(p,~0xfc);}
else if (j==0)
{movx(p,~0x7f);}
else {movx(p,0);}
p++;
}
y++;
p=&ADDR_0+y*bytes_1line+x;
}
break;
case 1:{//边框的第二行
for (j=0;j<a;j++)
{ if (j==a-1)
{movx(p,~2);}
else if (j==0)
{movx(p,~0x80);}
else {movx(p,0xff);}
p++;
}
y++;
p=&ADDR_0+y*bytes_1line+x;
}
break;
default:{//中间显示
for (j=0;j<a;j++)
{ if (j==a-1)
{movx(p,~3);}
else if (j==0)
{movx(p,~0x80);}
else {movx(p,0xff);}
p++;
}
y++;
p=&ADDR_0+y*bytes_1line+x;
}
break;
}
}
}
A17_A16_low
}
void put_shuzi(unsigned char x,unsigned char y,unsigned int data)
{ unsigned char z_arry[5],i;
z_arry[4]=data%10;
z_arry[3]=data%100/10;
z_arry[2]=data%1000/100;
z_arry[1]=data%10000/1000;
z_arry[0]=data/10000;
for (i=0;i<5;i++)
{disp16x8(x++,y,z_arry[i]);}
}
void put_shuzi_pcf(unsigned char x,unsigned char y,unsigned char data)
{ unsigned char z_arry[2],i;
z_arry[1]=data%16;
z_arry[0]=data/16;
for (i=0;i<2;i++)
{disp16x8(x++,y,z_arry[i]);}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -