📄 lcd.h
字号:
//文 件 名:lcd.h
//名 称:LCD(12864)显示子模块
//功 能:完成各个参数的显示
//作 者:吕定胜
//创建日期:2007-08-04
//修改日期:2007-08-26
//接口设置
sbit cs = P3^7;
sbit std = P3^1;
sbit sclk = P3^0;
void delay_50us(unsigned char i)
{
unsigned char j;
while(i--)
for(j=0;j<146;j++);
}
//LCD指令数据输入子程序
void wr_lcd (unsigned char dat_0,unsigned char content)
{
unsigned char a,i,j;
delay_50us(1);
a=content;
cs=1;
sclk=0;
std=1;
delay_50us(1);
for(i=0;i<5;i++)
{
sclk=1;
sclk=1;
sclk=0;
sclk=0;
}
std=0;
sclk=1;
sclk=1;
sclk=0;
sclk=0;
if(dat_0)
std=1; //data
else
std=0; //0and
sclk=1;
sclk=1;
sclk=0;
sclk=0;
std=0;
sclk=1;
sclk=1;
sclk=0;
sclk=0; //完成11111ABC的输入
//完成数据的传送
for(j=0;j<2;j++)
{
for(i=0;i<4;i++)
{
a=a<<1;
std=CY;
sclk=1;
sclk=1;
sclk=0;
sclk=0;
}
std=0;
for(i=0;i<4;i++)
{
sclk=1;
sclk=1;
sclk=0;
sclk=0;
}
}
cs=0;
}
//设定DDRAM位址,x(1~4)代表第几行,y(1~8)代表第几列
void display_coordinate(unsigned char x,unsigned char y)
{
if(x==1)
wr_lcd(0,0x80+y-1);
else if(x==2)
wr_lcd(0,0x90+y-1);
else if(x==3)
wr_lcd(0,0x88+y-1);
else if(x==4)
wr_lcd(0,0x98+y-1);
}
//输出字符串,可以是中文
void DisplayListChar(unsigned char *da)
{
for(;*da!='\0';da++)
{
wr_lcd(1 ,*da);
}
}
//LCD指令数据输入子程序,用于中断
void wr_lcd1 (unsigned char dat_0,unsigned char content)
{
unsigned char a,i,j;
delay_50us(1);
a=content;
cs=1;
sclk=0;
std=1;
delay_50us(1);
for(i=0;i<5;i++)
{
sclk=1;
sclk=1;
sclk=0;
sclk=0;
}
std=0;
sclk=1;
sclk=1;
sclk=0;
sclk=0;
if(dat_0)
std=1; //data
else
std=0; //0and
sclk=1;
sclk=1;
sclk=0;
sclk=0;
std=0;
sclk=1;
sclk=1;
sclk=0;
sclk=0; //完成11111ABC的输入
//完成数据的传送
for(j=0;j<2;j++)
{
for(i=0;i<4;i++)
{
a=a<<1;
std=CY;
sclk=1;
sclk=1;
sclk=0;
sclk=0;
}
std=0;
for(i=0;i<4;i++)
{
sclk=1;
sclk=1;
sclk=0;
sclk=0;
}
}
cs=0;
}
//设定DDRAM位址,x(1~4)代表第几行,y(1~8)代表第几列
void display_coordinate1(unsigned char x,unsigned char y)
{
if(x==1)
wr_lcd1(0,0x80+y-1);
else if(x==2)
wr_lcd1(0,0x90+y-1);
else if(x==3)
wr_lcd1(0,0x88+y-1);
else if(x==4)
wr_lcd1(0,0x98+y-1);
}
//输出字符串,可以是中文
void DisplayListChar1(unsigned char *da)
{
for(;*da!='\0';da++)
{
wr_lcd1(1 ,*da);
}
}
/*------------------初始化-----------------*/
void lcdinit (void)
{
wr_lcd (0,0x30); //30---基本指令动作
wr_lcd (0,0x01); //清屏,地址指针指向00H
delay_50us(50);
wr_lcd (0,0x06); //光标的移动方向
wr_lcd (0,0x0c); //开显示,关游标
display_coordinate(1,1);
DisplayListChar("初始化中...");
}
//输出显示函数
void display0(void)
{
wr_lcd (0,0x01); //清屏,地址指针指向00H
delay_50us(10);
display_coordinate(1,1);
DisplayListChar("电源状态:");
display_coordinate(2,1);
DisplayListChar("输出电压: V");
display_coordinate(3,1);
DisplayListChar("输出电流: A");
display_coordinate(4,1);
DisplayListChar("键盘输入:");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -