void write_byte(uchar datatemp,bit mod)//写一字节 mod=0,命令模式 通用
{
uchar i=8;
sce=0;
dc=mod;
while (i--)
{
if (datatemp&0x80){sdin=1;}
else {sdin=0;}
sclk=0;
sclk=1;
datatemp<<=1;
}
dc=1;
sce=1;
sdin=1;
}
void init(void) //初始化 通用
{
res=0;
Adelay(10);
res=1;
sce=1;
sdin=1;
sclk=1;
write_byte(0x21,0);//初始化Lcd,功能设定使用扩充指令
write_byte(0xd5,0);//设定液晶偏置电压(高--低)
write_byte(0x20,0);//使用基本指令
write_byte(0x0C,0);//设定显示模式,正常显示
}
void setadd(uchar a,uchar d)//设定地址
{
write_byte((a 0x80),0);//设定x坐标
write_byte((d 0x40),0);//设定y坐标
}
void clr()//清屏
{
uchar t,k;
uint d;
d=0;
// setdd(0,0);
for(t=0;t<6;t++)
{
for(k=0;k<84;k++)
{
setadd(k,t);
write_byte(0,1);
d=d+1;
if(d>504)d=d-504;
}
}
}
//写汉字
void WriteCh(uchar *p,char x0,char x1,char y0,char y1,char z0)
//*p是数组字模,x0是横向初始坐标,x1横向结束坐标,x(0~84)
//y0是纵向初始坐标,y1纵向结束坐标,y(0~5) z0数组长度
{
unsigned char z,x,y;
for(x=x0;x<x1;x++)
{
for(y=y0;y<y1;y++)
{
setadd(x,y); ///定位
write_byte(*p,1);
Adelay(4);
p++; //写下一位
z++; //数组长度
if(z==z0)
{
y0+=2;
//n+=2;
z=0;
}
}
}
}
//写数字
void WriteDa(uchar num,char x0,char x1,char y0,char y1,char z0)
{
unsigned char z=0,x,y;
for(x=x0;x<x1;x++)
{
for(y=y0;y<y1;y++)
{
setadd(x,y); ///定位
write_byte(dal3[num][z],1);
Adelay(4);
z++;
if(z==z0)
{
y0+=2;
z=0;
}
}
}
}