/***************************
液晶:OCMJ2*8A程序
作者:孙毅明
Q Q :574287254
**************************/
#include<reg52.h>
#define uchar unsigned char
sbit BUSY=P0^4;
sbit REQ=P0^3;
void delay(uchar i)
{
uchar j=123;
while(i--)
{
while(j--);
}
}
void write(uchar buf)
{
P3=buf;
REQ=1;
while(!BUSY);
REQ=0;
}
void clear()
{
BUSY=1;
write(0xf4);
delay(20);
write(0xf4);
delay(20);
}
void disp(uchar y,uchar x,uchar *s,uchar time,bit n) // 显示字符,英文字母,数字,0-3行,0-15列,time为显示间隔时间,default值为1
{ //n的default值为0,当n为1时,字符串在一个地址循环显示
if(y>3)
{
while(*s!='/0')
{
write(0XF1);
if(n)write(x);
if(!n)write(x++);
write(y);
write(*s);
if(x==16){x=0;y=y+8;if(y>=33)y=1;}
s++;
delay(time+1);
}
}
else
{
switch(y)
{
case 0: y=1; break;
case 1: y=9; break;
case 2: y=17;break;
case 3: y=25;break;
}
while(*s!='/0')
{
write(0XF1);
write(x++);
write(y);
write(*s);
if(x==16){x=0;y=y+8;if(y==33)y=1;}
s++;
delay(time+1);
}
}
}
void disp_str(uchar y,uchar x,uchar *s,uchar time,bit n) //显示汉字,0-1行,0-7列,time为显示间隔时间,default值为1
{ //n的default值为0,当n为1时,字符串在一个地址循环显示
while(*s!='/0')
{
write(0XF0);
if(n)write(x);
if(!n)write(x++);
write(y);
write(*s-0xa0);
s++;
write(*s-0xa0);
s++;
if(x==8){x=0;y=~y;}
delay(time+1);
}
}