📄 1602lcd_new.c
字号:
/*1602LCD最新驱程序
创建日期: 2008-10-08 20:42
创建人:周勇
版本:V2.0
备注:1602LCD数据口是P0口
***因检测液晶忙状态不稳定,所以用延时来替代***
字符显示范围是0~15;
*/
#include <stc89c51.h>
#include <intrins.h>
#define uchar unsigned char
#define H 1
#define L 0
sbit RS=P3^0; // 数据/命令选择端
sbit RW=P3^1; // 读/写选择端
sbit E=P3^2; // 使能信号
void longtime (void);
void delay (uchar t);
void w_1602_command (unsigned char temp); //写命令
void w_1602_data (uchar temp); //写数据
//****************1602液晶操作************************************* 函数声明
void display_char (uchar x,uchar y,uchar temp); //指定位置显示字符 X取值范围(1--16),Y取值范围(1--2)
void display_long_char(uchar x,uchar y,uchar *pa); //指定位置开始显示字符串 X取值范围(1--16),Y取值范围(1--2)
void init_lcd (void);
//*************************************************************** 函数声明
//长时间延时,用于换屏时的显示延时
void longtime (void)
{
unsigned int k,i;
for (i=0;i!=650;i++)
{
for (k=0;k!=400;k++)
{_nop_ ();}
}
}
//延时
void delay (uchar t)
{
char t1;
for (;t!=0;t--)
{
for (t1=120;t1!=0;t1--)
{_nop_ ();}
}
}
//写指令
void w_1602_command (unsigned char temp)
{
RS=L;
RW=L;
P0=temp;
E=0;
E=1;
delay (10);
}
//写数据
void w_1602_data (uchar temp)
{
RS=H;
RW=L;
P0=temp;
E=0;
E=1;
delay (10);
}
//任意位置显示字符
//X设置水平位置(1---16),Y设置第一行,或第二行.TEMP是显示的数据
void display_char (uchar x,uchar y,uchar temp)
{
uchar addr;
if (y==1) addr=0x80+x-1;
if (y==2) addr=0x80+0x40+x-1;
w_1602_command (addr);
w_1602_data (temp);
}
//显示任意长度字符串
/*程序描述
可以对任意长度的字符串进行显示,如显示内容超过32字符,则延时显示一下,并换屏显示,直到所有字符显示完毕
其中," ~ "为显示的回车符(换行符)*/
void display_long_char(uchar x,uchar y,uchar *pa)
{
uchar addr;
for (;*pa!='\0';pa++,x++)
{
if (*pa=='#') {y=y+1;x=0;continue;} // #为换行符,continue为结束本次循环,使换行后不显示任何字符
if (x>16) {y=y+1;x=1;}
if (y==1) addr=0x80+x;
if (y==2) addr=0x80+0x40+x;
if (y>2) {x=1;y=1;longtime();w_1602_command (0x01);} //假如一屏没有显示完的情况下,延时一会儿,并清屏一次,复位坐标显示
display_char (x,y,*pa);
}
}
//液晶初始操作
void init_lcd (void)
{
delay (15);
w_1602_command (0x38);
delay (5);
w_1602_command (0x38);
delay (5);
w_1602_command (0x38);
delay (5);
w_1602_command (0x38); //显示模式设置
w_1602_command (0x08); //显示关闭
w_1602_command (0x01); //显示清屏
w_1602_command (0x06); //显示光标移动设置
w_1602_command (0x0c);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -