⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd1602.h

📁 <B>嵌入式操作系统SMALL RTOS51 的例程, 运行于UV2运用WAVE的6000进行仿真</B>
💻 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 + -