📄 svm12864_lcd.h
字号:
//----------------LCD引脚配置
sbit E=P1^3; //(SCLK)
sbit RW=P1^4; //(SID)
sbit RS=P1^5; //(CS)
//-----------------延时参数
void Delay(unsigned char t)
{unsigned int a;
while(t--)
{for(a=1;a<1000;a++);
}
}
//-----------------写数据
void WriteData(unsigned char DB)
{unsigned char i,temp;
RS=1;
RW=1;
E=0;
E=1; //-1
E=0;
E=1; //-2
E=0;
E=1; //-3
E=0;
E=1; //-4
E=0;
E=1; //-5
E=0;
RW=0;
E=1; //-6
E=0;
RW=1;
E=1; //-7
E=0;
RW=0;
E=1; //-8
E=0;
temp=DB;
for(i=0;i<4;i++)
{temp=temp&0x80;
if(temp==0x80)
{RW=1;
E=1;
E=0;
}
else
{RW=0;
E=1;
E=0;
}
DB=DB<<1;
temp=DB;
}
RW=0;
E=1; //-1
E=0;
E=1; //-2
E=0;
E=1; //-3
E=0;
E=1; //-4
E=0;
temp=DB;
for(i=0;i<4;i++)
{temp=temp&0x80;
if(temp==0x80)
{RW=1;
E=1;
E=0;
}
else
{RW=0;
E=1;
E=0;
}
DB=DB<<1;
temp=DB;
}
RW=0;
E=1; //-1
E=0;
E=1; //-2
E=0;
E=1; //-3
E=0;
E=1; //-4
E=0;
RS=1;
Delay(1);
}
//--------------------写命名
void WriteCMD(unsigned char DB)
{unsigned char i,temp;
RS=1;
RW=1;
E=0;
E=1; //-1
E=0;
E=1; //-2
E=0;
E=1; //-3
E=0;
E=1; //-4
E=0;
E=1; //-5
E=0;
RW=0;
E=1; //-6
E=0;
E=1; //-7
E=0;
E=1; //-8
E=0;
temp=DB;
for(i=0;i<4;i++)
{temp=temp&0x80;
if(temp==0x80)
{RW=1;
E=1;
E=0;
}
else
{RW=0;
E=1;
E=0;
}
DB=DB<<1;
temp=DB;
}
RW=0;
E=1; //-1
E=0;
E=1; //-2
E=0;
E=1; //-3
E=0;
E=1; //-4
E=0;
temp=DB;
for(i=0;i<4;i++)
{temp=temp&0x80;
if(temp==0x80)
{RW=1;
E=1;
E=0;
}
else
{RW=0;
E=1;
E=0;
}
DB=DB<<1;
temp=DB;
}
RW=0;
E=1; //-1
E=0;
E=1; //-2
E=0;
E=1; //-3
E=0;
E=1; //-4
E=0;
RS=1;
Delay(1);
}
/**********************************************
函数名:LCD_AT(unsigned char AC)
功能:定义字显示位置
入口参数:AC (为1,2,3,4)显示行位置
出口参数:无
**********************************************/
void LCD_At(unsigned char AC)
{if(AC==1)
WriteCMD(0x80);
if(AC==2)
WriteCMD(0x90);
if(AC==3)
WriteCMD(0x88);
if(AC==4)
WriteCMD(0x98);
}
/*********************************************
函数名:LCD_Ini()
功能:12864初始化
入口参数:无
出口参数:无
*********************************************/
void LCD_Ini()
{Delay(20);
WriteCMD(0x30);
Delay(5);
WriteCMD(0x30); //function set
Delay(1);
WriteCMD(0x08); //display off
Delay(1);
WriteCMD(0x01); //display clear
Delay(1);
WriteCMD(0x03); //entry mode set
Delay(1);
WriteCMD(0x40); //set AC
Delay(1);
WriteCMD(0x0c); //display on
Delay(1);
}
/*****************************************
函数名:LCD_Printf(char *GB)
功能:显示中文字符串
入口参数:*GB 字符串指针
出口参数:无
*****************************************/
void LCD_Printf(char *GB) //显示字符串
{for(;*GB != 0;GB++)
{WriteData(*GB);
}
}
/*****************************************
函数名:LCD_To(unsigned char Y,unsigned char X)
功能:字符定位
入口参数:Y,X位置参数,Y行参数,X列参数
出口参数:无
*****************************************/
void LCD_To(unsigned char Y,unsigned char X) //定位
{unsigned char at;
if(Y>5) return;
if(X>9) return;
if(Y==1) at=0x80+X;
if(Y==2) at=0x90+X;
if(Y==3) at=0x88+X;
if(Y==4) at=0x98+X;
WriteCMD(at);
}
/*****************************************
函数名:LCD_Print(unsigned char Y,unsigned char X,char *TXT)
功能:字符串定位显示
入口参数:Y,X位置参数,Y行参数,X列参数,*TXT显示字符串
出口参数:无
*****************************************/
void LCD_Print(unsigned char Y,unsigned char X,char *TXT) //定位显示字符串
{LCD_To(Y,X);
for(;*TXT != 0;TXT++)
{WriteData(*TXT);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -