📄 lcd1602.h
字号:
/*********************************************************************************************************
** Small RTOS(51)
** The Real-Time Kernel(For Keil c51)
**
** (c) Copyright 2002-2002, chenmingji
** All Rights Reserved
**
** V1.12.1
**
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: lcd1602.h
**创 建 人: 陈明计
**最后修改日期: 2003年4月27日
**描 述: DP-51的液晶TC1602A的驱动程序头文件
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 陈明计
** 版 本: V1.0
** 日 期: 2003年4月27日
** 描 述: 原始版本,应用于Small RTOS 51 v1.12.1
**
**------------------------------------------------------------------------------------------------------
** 修改人:
** 版 本:
** 日 期:
** 描 述:
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人:
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#ifndef LCDDRIVE_H
#define LCDDRIVE_H
/*定义LCM控制字*/
#define LCD1602_MODE 0x3C /* 接口数据8位,显示2行,字体为1号 */
#define LCD1602_NO_FLASH 0x0C /* 屏幕显示开,无光标 */
#define LCD1602_HIDE 0x08 /* 屏幕显示关 */
#define LCD1602_FLASH 0x0D /* 屏幕显示开,并打开闪烁光标 */
#define LCD1602_SHIFT 0x07 /* 模块数据输入为增量方式,显示内容移动 */
#define LCD1602_NO_SHIFT 0x06 /* 模块数据输入为增量方式,显示光标移动 */
#define LCD1602_SH 0x14 /* 移动光标及整体显示 */
/* LCD地址相关控制宏 */
#define LCD1602_LINE1 0x80 /* 第一行DDRAM起始地址 */
#define LCD1602_LINE2 0xC0 /* 第二行DDRAM起始地址 */
#define LCD1602_CGRAM 0x40 /* 定义CGRAM的起始地址 */
/*********************************************************************************************************
** 函数名称: Lcd1602Clr()
** 功能描述: 清除lcd的指定行
**
** 输 入: y : 清除的行号(最上方为1)
**
** 输 出: 无
** 全局变量: 无
** 调用模块: Lcd1602DispStr()
********************************************************************************************************/
extern void Lcd1602Clr(uint8 y);
/*********************************************************************************************************
** 函数名称: Lcd1602Init()
** 功能描述: lcd初始化
**
** 输 入: 无
**
** 输 出: 无
** 全局变量: 无
** 调用模块: Lcd1602SendComm(),Lcd1602Clr()
********************************************************************************************************/
extern void Lcd1602Init(void);
/*********************************************************************************************************
** 函数名称: Lcd1602DispStr()
** 功能描述: 在lcd指定位置显示一个字符串,此函数可以自动换行。
**
** 输 入: x,y : 显示的开始坐(作上角为(1,1))
** Data: 将要显示的字符串
** 输 出: 无
** 全局变量: 无
** 调用模块: Lcd1602SendComm(),Lcd1602SendDate()
********************************************************************************************************/
extern void Lcd1602DispStr(uint8 x, uint8 y, char *Data);
/*********************************************************************************************************
** 函数名称: Lcd1602LoadC()
** 功能描述: 从lcd指定地址处写多个字节数据
**
** 输 入: Addr : 指定的地址
** Data : 将要写入的数据开始地址
** NChar: 写入的直接数
** 输 出: 无
** 全局变量: 无
** 调用模块: Lcd1602SendComm(),Lcd1602SendDate()
********************************************************************************************************/
extern void Lcd1602LoadC(uint8 Addr, uint8 *Data, uint8 Nchar);
/*********************************************************************************************************
** 函数名称: Lcd1602DispStr()
** 功能描述: 在lcd指定位置显示一个字符串,此函数可以自动换行。
**
** 输 入: x,y : 显示的开始坐(作上角为(1,1))
** Data: 将要显示的字符串
** 输 出: 无
** 全局变量: 无
** 调用模块: Lcd1602SendComm(),Lcd1602SendDate()
********************************************************************************************************/
#define OSLcd1602DispStr(x, y, Data) \
{ \
OSSemPend(LCD1602_SEM, 0); \
Lcd1602DispStr((x), (y), (Data)); \
OSSemPost(LCD1602_SEM); \
}
/*********************************************************************************************************
** 函数名称: OSLcd1602LoadC()
** 功能描述: 多任务中从lcd指定地址处写多个字节数据
**
** 输 入: Addr : 指定的地址
** Data : 将要写入的数据开始地址
** NChar: 写入的直接数
** 输 出: 无
** 全局变量: 无
** 调用模块: Lcd1602SendComm(),Lcd1602SendDate()
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define OSLcd1602LoadC(addr, dstr, no) \
{ \
OSSemPend(LCD1602_SEM, 0); \
LCMLoadC((addr), (dstr), (no)); \
OSSemPost(LCD1602_SEM); \
}
/*********************************************************************************************************
** 函数名称: OSLcd1602Clr()
** 功能描述:
** 输 入:
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
********************************************************************************************************/
#define OSLcd1602Clr(y) \
{ \
OSSemPend(LCD1602_SEM, 0); \
Lcd1602Clr(y); \
OSSemPost(LCD1602_SEM); \
}
//#define LCD1602_SEM 0 /* 在config.h中设置液晶PCF8563使用的信号量 */
/* 在config.h中定义读写LCD1602的数据、命令、状态的方法 */
/*
//写命令
#define LCD1602_SEND_COMMAND(a) \
LCD1602_RS = 0x00; \
LCD1602_WR = a;
//写数据
#define LCD1602_SEND_DATA(a) \
LCD1602_RS = 0x01; \
LCD1602_WR = a;
#ifdef IN_LCD17602
//返回状态
uint8 LCD1602_GET_FLAG(void)
{
LCD1602_RS = 0x00;
return (LCD1602_RD);
}
//返回数据
uint8 LCD1602_GET_DATA(void)
{
LCD1602_RS = 0x01;
return (LCD1602_RD);
}
#endif
*/
#endif
/**********************end****************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -