📄 1602.h
字号:
/***************************1602 driver*****************************/
/**************************designed by zhangbiao********************/
/*****************************2007.8.6******************************/
#define BUSY 0x80 //忙标志
//输入方式设置
#define AC_AUTO_INC 0x06 //数据读、写操作后,字符不动,AC自动增一
#define AC_AUTO_DEC 0x04 //数据读、写操作后,字符不动,AC自动减一
#define MOVE_ENABLE 0x07 //数据读、写操作,画面平移
#define MOVE_DISABLE 0x04 //数据读、写操作,画面不动
#define HOME 0x02 //AC=0,光标、画面回HOME位
//设置显示、光标及闪烁开、关
#define DISPLAY_ON 0x0c //显示器开,光标关,字符不闪烁
#define DISPLAY_OFF 0x08 //显示关
#define CURSOR_ON 0x0a //光标显示
#define CURSOR_OFF 0x08 //光标不显示
#define CURSORBLINK_ON 0x09 //光标闪烁
#define CURSORBLINK_OFF 0x08 //光标不闪烁
//光标、画面移动,不影响DDRAM
#define DISPLAY_MOVE_LEFT 0x18 //LCD显示左移一位
#define DISPLAY_MOVE_RIGHT 0x1c //LCD显示右移一位
#define CURSOR_MOVE_LEFT 0x10 //光标左移一位
#define CURSOR_MOVE_RIGHT 0x14 //光标右移一位
//工作方式设置
#define DOUBLE_LINE 0x38 //用8位数据,显示两行,使用5X7字型
#define SINGLE_LINE 0x30 //单行显示
#define CLEAR 0x01 //清屏
//////////////////////////////////////////////
void lcd1602delay();
void lcd1602busy();
void lcd1602writecmd(unsigned char cmd);
void lcd1602writedata(unsigned char dat);
unsigned char locate(unsigned char x,bit y);
void lcd1602init(unsigned char a,unsigned char b,unsigned char c);
extern putchar(char d);
void dispchar(unsigned char x,unsigned char y,unsigned char Wdata);
void dispstr(unsigned char x,unsigned char y,char *ptr);
////////////////////////////////////////////////
sbit RS=P2^7; //1为数据,0为指令
sbit RW=P2^6; //1为读,0为写
sbit E=P2^5; //1选通,0执行 下降沿触发
unsigned x=0;bit y=0;
void lcd1602delay() //延时
{ unsigned char i;
for(i=0;i<255;i++);
}
void lcd1602busy()
{ RS=0;
RW=1;
lcd1602delay();
E=1;
while(P0&0x80);
E=0;
lcd1602delay();
}
void lcd1602writecmd(unsigned char cmd) //写指令
{ lcd1602busy();
E=0;
RS=0;
RW=0;
E=1;
P0=cmd;
E=0;
lcd1602delay();
}
void lcd1602writedata(unsigned char dat) //写数据
{ lcd1602busy();
E=0;
RS=1;
RW=0;
E=1;
P0=dat;
E=0;
lcd1602delay();
}
unsigned char locate(unsigned char x,bit y) //位置
{ if(y) return(x|0x80|0x40);
return(x|0x80);
}
void lcd1602init(unsigned char a,unsigned char b,unsigned char c) //初始化
{ lcd1602writecmd(CLEAR);
lcd1602writecmd(a); //工作方式设置 单行或双行显示
lcd1602writecmd(b); //输入方式设置
lcd1602writecmd(c); //显示开关,光标显示,闪烁设置
}
extern putchar(char d)
{ if(x==16)
{ x=0;
y^=1;
}
lcd1602writecmd(locate(x,y));
lcd1602writedata(d);
x++;
}
/*=======================================================
按指定位置显示一个字符
=======================================================*/
void dispchar(unsigned char x,unsigned char y,unsigned char Wdata)
{ lcd1602writecmd(locate( x, y )); // 定位显示地址
lcd1602writedata( Wdata ); // 写字符
}
/*=======================================================
按指定位置显示字符串
=======================================================*/
void dispstr(unsigned char x,unsigned char y,char *ptr)
{
unsigned char i,l=0;
while (ptr[l] >31){l++;};//取得要显示的个数
for (i=0;i<l;i++)
{ dispchar(x++,y,ptr[i]);
if ( x == 16 )
{ x = 0;
y ^= 1;//换行
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -