?? 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 + -