📄 lcd1602.c
字号:
#ifndef OS_MASTER_FILE
#include "includes.h"
#endif
//写命令
#define LCD1602_SEND_COMMAND(a) \
LCDCOM = a;
//写数据
#define LCD1602_SEND_DATA(a) \
LCDDAT = a;
void Lcd1602Delay(void)
{
INT8U i;
i = 300;
do
{
;
} while (--i != 0);
}
void Lcd1602SendComm(INT8U Command)
{
Lcd1602Delay();
LCD1602_SEND_COMMAND(Command);
}
void Lcd1602SendDate(INT8U Data)
{
Lcd1602Delay();
LCD1602_SEND_DATA(Data);
}
void Lcd1602DispStr(INT8U x, INT8U y, INT8S *Data)
{
if (y == 1) /* 在第一行显示 */
{
if (x < (16 + 1)) /* 有效的列号 */
{
Lcd1602SendComm(LCD1602_LINE1 - 1 + x); /* 设置显示地址 */
for( ; x < (16 + 1) && *Data != '\0'; x++) /* 显示到字符串结束 */
/* 或是行结束 */
{
Lcd1602SendDate(*Data++); /* 显示一个字符 */
}
if (*Data != '\0') /* 字符串没有结束 */
{
x = 1; /* 从第二行第一列 */
y = 2; /* 继续显示 */
}
}
}
if (y == 2) /* 在第二行显示 */
{
Lcd1602SendComm(LCD1602_LINE2 - 1 + x); /* 设置显示地址 */
for( ; x < (16 + 1) && *Data != '\0'; x++) /* 显示到字符串结束 */
/* 或是行结束 */
{
Lcd1602SendDate(*Data++); /* 显示一个字符 */
}
}
}
void Lcd1602DispCha(INT8U x, INT8U y, INT8U Data)
{
if (y == 1) /* 在第一行显示 */
{
if (x < (16 + 1)) /* 有效的列号 */
{
Lcd1602SendComm(LCD1602_LINE1 - 1 + x); /* 设置显示地址 */
Lcd1602SendDate(Data); /* 显示一个字符 */
}
}
if (y == 2) /* 在第二行显示 */
{
Lcd1602SendComm(LCD1602_LINE2 - 1 + x); /* 设置显示地址 */
Lcd1602SendDate(Data); /* 显示一个字符 */
}
}
void Lcd1602Clr(INT8U y)
{
INT8U i;
if(y==1)
{
Lcd1602SendComm(LCD1602_LINE1);
}
if(y==2)
{
Lcd1602SendComm(LCD1602_LINE2);
}
for(i=0;i<16;i++)
{
Lcd1602SendDate(' ');
}
}
void Lcd1602Init(void)
{
Lcd1602SendComm(LCD1602_MODE); // 设置LCM模式(系统方式设置)
Lcd1602SendComm(LCD1602_NO_FLASH); // 打开LCM显示,无光标
Lcd1602SendComm(LCD1602_NO_SHIFT); // 字符向地址递增,光标移动
Lcd1602SendComm(LCD1602_SH); // 重新设为光标移动,向右移
Lcd1602Clr(1); // 清屏
Lcd1602Clr(2);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -