📄 lcm.c
字号:
z=64;/*图形数组的页,为实际点阵行数*/
y=16;/*图形数组的列,为实际点阵列数除以8*/
Column=0;/*起始点设定:为在液晶中显示的实际起始列*/
Page=0;/*起始点设定:为在液晶中显示的实际起始行*/
Tuxing(); //龙的图形
Delay();Delay();Delay();Delay();Delay();Delay();Delay();Delay();Delay();Delay();Delay();Delay();
Clearlcd1();
z=64;/*图形数组的页,为实际点阵行数*/
y=16;/*图形数组的列,为实际点阵列数除以8*/
Column=0;/*起始点设定:为在液晶中显示的实际起始列*/
Page=0;/*起始点设定:为在液晶中显示的实际起始行*/
p2=MyTu;
Tuxing(); //左边是物理所的图标,右边是中科院 物理所两行文字
Delay();Delay();Delay();Delay();Delay();Delay();Delay();Delay();Delay();Delay();Delay();Delay();
Clearlcd1();
z=32;/*图形数组的页,为实际点阵行数*/
y=4;/*图形数组的列,为实际点阵列数除以8*/
Column=5;/*起始点设定:为在液晶中显示的实际起始列,一列占一个汉字*/
Page=0;/*起始点设定:为在液晶中显示的实际起始行*/
p2=MyTu2;
OneTuxing(); //一个小的图标
Delay();Delay();Delay();Delay();Delay();Delay();Delay();Delay();Delay();Delay();Delay();Delay();
goto loop;
}
/********************写指令子程序********************/
void WCOM(uchar d) /*写指令程序*/
{
R_W=1;
D_I=0;/*设置状态*/
Loop:
P1=0xFF;
E=1;/*使能有效*/
q=P1;/*将p1口状态读入*/
E=0;/*关闭使能信号*/
if(q&0x80)/*判断屏幕是否忙*/
{
goto Loop;/*若忙,循环等待*/
}
R_W=0;
D_I=0;/*写数据指令*/
P1=d;/*将数据送入p1口*/
E=1;/*使能信号开*/
E=0;/*使能信号关*/
}
/********************送数据子程序********************/
void Dat(uchar d)
{
R_W=1;
D_I=0;/*读状态指令*/
Loop:
P1=0xFF;
E=1;/*使能*/
q=P1;
E=0;
if(q&0x80)
{
goto Loop;
}/*判忙*/
D_I=1;/*送数据指令*/
R_W=0;
P1=d;
E=1;/*使能信号开*/
E=0;/*使能信号关*/
}
/********************初始化子程序********************/
void Imim()
{
P0=0xff;
P1=0xff;
P2=0xff;
P3=0xff;
E=0;
Delay();
WCOM(0x38);/*功能设定*/
WCOM(0x08);/*关显示指令*/
WCOM(0x06);/*游标右移*/
Clearlcd();/*清屏*/
WCOM(0x0c);/*开显示指令*/
}
/********************延时子程序********************/
void Delay()
{
uchar data i,j;
for(i=0;i<255;i++)
for(j=0;j<255;j++);
}
/********************基本指令集清屏子程序********************/
void Clearlcd()
{
D_I=0;
R_W=0;
P1=0x01;
WCOM(0x01);/*清除显示*/
}
/********************写第一行汉字主程序********************/
void Hanz()
{
WCOM(k); /*设置第一行起始点*/
for(i=0;i<j;i++,p++)
{
wbyte=*p;
Dat(wbyte);/*将汉字数组数据送入*/
}
}
/********************写第二行汉字主程序********************/
void Hanz1()
{
WCOM(k1);/*设置第二行起始点*/
for(i=0;i<j1;i++,p1++)
{
wbyte=*p1;
Dat(wbyte);/*将汉字数组数据送入*/
}
}
/********************扩充指令集画图子程序********************/
void Tuxing()
{
uchar data v;
uchar data w;
uchar data x;
uchar data h;
WCOM(0x34);/*功能设定*/
WCOM(0x36);/*扩充功能设定*/
pp=p2;
pp=pp+16*y*2;
for(h=0;h<z/2;h++) /*页循环*/
{
v=Column|0x80;
w=Page|0x80;
WCOM(w);/*送入起始页地址*/
WCOM(v);/*送入起始列地址*/
Page++; /*准备对下一页进行操作*/
for(x=0;x<2*y;x++) /*列循环*/
{
if(x<y)
{
wbyte=*p2;
Dat(wbyte);/*循环送入图形数据*/
p2=p2+1;
}
else
{
wbyte=*pp;
Dat(wbyte);/*循环送入图形数据*/
pp=pp+1;
}
}
}
}
/*---------------------------------------*/
void MyTuxing()
{
uchar data v;
uchar data w;
uchar data x;
uchar data h;
uchar data NextPage;
NextPage=Page;
WCOM(0x34);/*功能设定*/
WCOM(0x36);/*扩充功能设定*/
pp=p2;
pp=pp+16*y*2;
for(h=0;h<z/2;h++) /*页循环*/
{
v=Column|0x80;
w=Page|0x80;
WCOM(w);/*送入起始页地址*/
WCOM(v);/*送入起始列地址*/
for(x=0;x<y;x++) /*列循环*/
{
wbyte=*p2;
Dat(wbyte);/*循环送入图形数据*/
p2=p2+1;
}
WCOM(w+16);/*送入起始页地址*/
WCOM(v);/*送入起始列地址*/
for(x=0;x<y;x++)
{
wbyte=*pp;
Dat(wbyte);/*循环送入图形数据*/
pp=pp+1;
}
Page++; /*准备对下一页进行操作*/
}
}
void OneTuxing()
{
uchar data v;
uchar data w;
uchar data x;
uchar data h;
WCOM(0x34);/*功能设定*/
WCOM(0x36);/*扩充功能设定*/
for(h=0;h<z;h++) /*页循环*/
{
v=Column|0x80;
w=Page|0x80;
WCOM(w);/*送入起始页地址*/
WCOM(v);/*送入起始列地址*/
Page++; /*准备对下一页进行操作*/
for(x=0;x<y;x++) /*列循环*/
{
wbyte=*p2;
Dat(wbyte);/*循环送入图形数据*/
p2++;
}
}
}
/********************扩充指令集清屏子程序********************/
void Clearlcd1()
{
uchar data Disp_Page;
uchar data i;
uchar data j;
for(i=0;i<64;i++)/*共32页*/
{
Disp_Page=i|0x80;/*设置页地址*/
WCOM(Disp_Page);/*送入页地址*/
WCOM(0x80);/*送入起始列地址*/
for(j=0;j<32;j++)
{
Dat(0x00);/*清屏*/
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -