📄 画点.txt
字号:
COUNT3=0X02;
LCD_X=0X80;//128
for (;COUNT3!=0;COUNT3--)
{
LCD_Y=0X80;
COUNT2=0X20;//32
for (;COUNT2!=0;COUNT2--)
{
COUNT1=0X10;//16
WR_ZB();
for (;COUNT1!=0;COUNT1--)
{
send_data(*s++);
}
LCD_Y+=1;
}
LCD_X=0X88;
}
send_com(0x36);
send_com(0x30); //可省
}
//******************显示点阵子程序************
void LAT_DISP(void)
{
COUNT3=0X02;
LCD_X=0X80;
for (;COUNT3!=0;COUNT--)
{
LCD_Y=0X80;
F0=0;
COUNT2=0X20;
for (;COUNT2!=0;COUNT--)
{
COUNT1=0X10;
WR_ZB();
if (F0!=0)
{
LCD_DATA=LCD_DATA2;
}
else LCD_DATA=LCD_DATA1;
for (;COUNT1!=0;COUNT1--)
{
send_data(LCD_DATA);
}
LCD_Y+=1;
F0=!F0;
}
LCD_X=0X88;
}
send_com(0x36);
send_com(0x30);
}
void WORD_DISP(unsigned char x, unsigned char y,unsigned char flash *s)
{ //x=0---0x07,8个, Y= 0-63 共64行
COUNT3=0X02;
if( x>7)
{
LCD_X=0X87;
}else
{
LCD_X=0x80+x;
}
if(y>31)
{
if(y>63){ y=32;}
LCD_Y=0X80+y-32;
LCD_X=LCD_X+8;
}else
{
LCD_Y=0X80+y;
}
COUNT2=0X10;
for (;COUNT2!=0;COUNT--)
{
COUNT1=0X02;
WR_ZB();
for (;COUNT1!=0;COUNT1--)
{
send_data(LCD_DATA);
}
LCD_Y+=1;
}
send_com(0x36);
send_com(0x30);
}
void PIC_trans(unsigned char x, unsigned char dx, unsigned char dy,unsigned char *s)
{
//x=0-127个(共128列), Y= 0-63 共64行
//已知 要转换的数据 data_yuanshi[j]
//转换为 data_new[i]
unsigned int i,j;
unsigned char k;
unsigned char start,end,weiyi,weiyi_end;
unsigned char x_num;
end=((x+dx)>>4);
k=(x+dx)&0x0f;
if((end>0)&&(end<=7))
{
if(k==0)
{
end--;
}
}
if(end>7)
{
end=7;
}
start=x>>4;
x_num=end-start+1;
weiyi=x & 0x0f;
weiyi_end=(x+dx) & 0x0f;
i=0;j=0;
for(k=dy;k!=0;k--)
{
if(weiyi<=8)
{
data_new[i++]=s[j++]>>weiyi;
data_new[i++]=(s[j-1]<<(8-weiyi))+(s[j]>>weiyi);
j++;
}else
{
data_new[i++]=0;
data_new[i++]=s[j]>>(weiyi-8);
j++;
}
if(x_num==1)
{
//continue;
goto loop_1;
}
if(x_num>2)
{
for(start=x_num-2;start!=0;start--)
{
if(weiyi<=8)
{
data_new[i++]=(s[j-1]<<(8-weiyi))+(s[j]>>weiyi);
j++;
data_new[i++]=(s[j-1]<<(8-weiyi))+(s[j]>>weiyi);
j++;
}else
{
data_new[i++]=(s[j-1]<<(16-weiyi))+(s[j]>>(weiyi-8));
j++;
data_new[i++]=(s[j-1]<<(16-weiyi))+(s[j]>>(weiyi-8));
j++;
}
}
}
{
if(weiyi_end<=8)
{
if(weiyi_end==0) //ok
{
data_new[i++]=(s[j-1]<<(8-weiyi))+(s[j]>>weiyi);
j++;
data_new[i++]=(s[j-1]<<(8-weiyi))+(s[j]>>weiyi);
j++;
}else
{ //ok
data_new[i++]=(s[j-1]<<(8-weiyi_end));
data_new[i++]=0;
}
}else
{
data_new[i++]=(s[j-1]<<(16-weiyi_end))+(s[j]>>(weiyi_end-8));
data_new[i++]=(s[j]<<(16-weiyi_end));
j++;
}
}
loop_1: ;
}
}
void PIC_READ(unsigned char x,unsigned char dx,unsigned char y,unsigned char dy, unsigned char *s)
{
unsigned int i;
unsigned char j, k;
unsigned char start,end,x_num;
end=((x+dx)>>4);
k=(x+dx)&0x0f;
if((end>0)&&(end<=7))
{
if(k==0)
{
end--;
}
}
if(end>7)
{
end=7;
}
start=x>>4;
x_num=end-start+1;
;
do
{
if(y<32)
{
LCD_Y=0x80+y;
LCD_X=(x>>4)+0x80;
}else
{
LCD_Y=0X80+y-32;
LCD_X=(x>>4)+0x88;
}
k=x_num;
WR_ZB();
for(;k!=0;k--)
{
j=read_data();
s[i++]=j;
j=read_data();
s[i++]=j;
}
y++;
dy--;
}while(dy!=0);
// send_com(0x36);
// send_com(0x30); //可省
}
void PIC_DRAW(unsigned char x,unsigned char dx,unsigned char y,unsigned char dy, unsigned char flash *s)
{
//x,dx 分别是坐标的起点。y、dy
unsigned char k;
unsigned char start,end,x_num;
end=((x+dx)>>4);
k=(x+dx)&0x0f;
if((end>0)&&(end<=7))
{
if(k==0)
{
end--;
}
}
if(end>7)
{
end=7;
}
start=x>>4;
x_num=end-start+1;
do
{
if(y<32)
{
LCD_Y=0x80+y;
LCD_X=(x>>4)+0x80;
}else
{
LCD_Y=0X80+y-32;
LCD_X=(x>>4)+0x88;
}
k=x_num;
WR_ZB();
for(;k!=0;k--)
{
send_data(*s++);send_data(*s++);
}
y++;
dy--;
}while(dy!=0);
send_com(0x36);
send_com(0x30); //可省
}
unsigned char PIC_EXAM(unsigned char x,unsigned char dx,unsigned char y,unsigned char dy)
{
unsigned char i;
i=0;
if((y+dy)>64)
{
i=0xff;
}
if((x+dx)>128)
{
i=0xff;
}
return(i);
}
/****************************************************
* 绘点函数 *
* 输入: X :点的横坐标 0-128 *
* Y :点的纵坐标 0-64 *
* State:0-绘点/1-清除 *
****************************************************/
void Point (char X,char Y,char State)
{
char X_Temp = 0;
char X_Position = 0;
X_Temp = X;
while (X_Temp>15)
{
X_Position++;
X_Temp = X_Temp-16;
}
if (X_Temp<=15)
{
if(Y<32)
{
LCD_X=0x80+X_Position;
LCD_Y=0x80+Y;
}
else
{
LCD_X=0x88+X_Position;
LCD_Y=0x80+Y-32;
}
WR_ZB();
read_data();
ramdata[0]=read_data();
ramdata[1]=read_data();
if(X_Temp<8)
{
WR_ZB();
if(State==0)
{
send_data(ramdata[0]|data[X_Temp]);
send_com(0x36);
}
else
{
send_data(ramdata[0]&data2[X_Temp]);
send_com(0x36);
}
}
else
{
WR_ZB();
if(State==0)
{
send_data(ramdata[0]);
send_data(ramdata[1]|data[X_Temp-8]);
send_com(0x36);
}
else
{
send_data(ramdata[0]);
send_data(ramdata[1]&data2[X_Temp-8]);
send_com(0x36);
}
}
}
}
void linex(char X,char end)
{
unsigned char temp;
for(temp=0;temp<end;temp++)
{
Point(X,temp,0);
}
}
void liney(char Y,char end)
{
unsigned char temp;
for(temp=0;temp<end;temp++)
{
Point(temp,Y,0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -