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

📄 lcd1602drv.h

📁 一个完整的个人产品开发源代码,包括对单片机STC12C5410的编程(含内部AD采样、自创的内部Flash编程源码等)、LCD1602的驱动编程等。
💻 H
字号:
#ifndef __LCD1602DRV_H__
#define __LCD1602DRV_H__

/********************************************************************************************************
**                                              公用函数头文件
**
**                                          版权所有 (c) 2007,罗建
**                                               保留所有权利
**
**                                                  V1.00
**
**
**-------------------------------------------------文件信息----------------------------------------------
**文   件   名: LCD1602Drv.H
**创   建   人: 罗 建
**最后修改日期: 2007年07月29日
**描        述: LCD1602Drv.c单元对应的头文件。
**
**-----------------------------------------------历史版本信息--------------------------------------------
** 创建人: 罗建
** 版  本: V1.00
** 日 期: 2007年07月29日
** 描 述: 原始版本
**
**-----------------------------------------------当前版本修订--------------------------------------------
** 修改人: 罗建
** 日 期: 2007年07月29日
** 描 述: 原始版本。
**
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include "MiscUnit.h"
#include "STC12C5410AD.h"

/********************************************************************************************************
** OCM2X16A中,CGROM和CGRAM中字符代码与字符图形对应关系(参考ASCII码表)
**
/********************************************************************************************************
** OCM2X16A LCD屏的命令定义(2007.07.05,增加)
** 序号  指令                          RS  R/W  D7  D6  D5  D4  D3  D2  D1  D0
** 1     清显示                        0   0    0   0   0   0   0   0   0   1
** 2     光标返回                      0   0    0   0   0   0   0   0   1   *
** 3     置输入模式                    0   0    0   0   0   0   0   1   I/D S
** 4     显示开/关控制                 0   0    0   0   0   0   1   D   C   B
** 5     光标或字符移位                0   0    0   0   0   1   S/C R/L *   *
** 6     置功能                        0   0    0   0   1   DL  N   F   *   *
** 7     置字符发生存储器地址          0   0    0   1   字符发生存储器地址(AGG)
** 8     置数据存储器地址              0   0    1   显示数据存储器地址(ADD)
** 9     读忙标志或地址                0   1    BF  计数器地址(AC)
** 10    写数到CGRAM或DDRAM            1   0    要写的数
** 11    从CGRAM或DDRAM读数            1   1    读出的数据
**
** 命令说明
** 命令1:清显示,指令码01H,光标复位到地址00H位置。
** 命令2:光标复位,光标返回到地址00H。
** 命令3:光标和显示模式设置。I/D表示光标移动的方向,高电平右移,低电平左移;S表示屏幕上所有文字是否左移
**        或右移,高电平表示有效,低电平表示无效。
** 命令4:显示开关控制。D用来控制整体显示的开与关,高电平表示开显示,低电平表示关显示;C用来控制光标的开
**        与关,高电平表示有光标,低电平表示无光标;B用来控制光标是否闪烁,高电平闪烁,低电平不闪烁。
** 命令5:光标或显示移位。S/C为高电平时移动显示的文字,低电平时移动光标。
** 命令6:功能设置命令。DL为高电平时选择4位总线,低电平时选择8位总线;N为低电平时选择单行显示,高电平时选
**        择双行显示;F为低电平时显示5X7的点阵字符,高电平时显示5X10的点阵字符。
** 命令7:字符发生器RAM地址设置。
** 命令8:DDRAM地址设置。
** 命令9:读忙信号和光标地址。BF为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示
**        不忙。
** 命令10:写数据。
** 命令11:读数据。
**
/********************************************************************************************************
** OCM2X16A LCD屏的显示定义(ADD)(2007.07.05,增加)
** 字符位置  1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16
** 第一行    00  01  02  03  04  05  06  07  08  09  0A  0B  0C  0D  0E  0F
** 第二行    40  41  42  43  44  45  46  47  48  49  4A  4B  4C  4D  4E  4F
**
** 说明:实际要写的字符地址还应再加上0x80才能送入相应显示RAM地址。
**
/********************************************************************************************************
** OCM2X16A(16*2)模拟口线接线方式
**
**     --------------------------------------------------- 
**     |LCM-----51   | LCM-----51   | LCM------51      | 
**     |-----------------------------------------------| 
**     |D0------P2.0 | D4------P2.4 | RW-------P3.4    | 
**     |D1------P2.1 | D5------P2.5 | RS-------P3.5    | 
**     |D2------P2.2 | D6------P2.6 | E--------P3.7    | 
**     |D3------P2.3 | D7------P2.7 | V0接电位器2K     | 
**     --------------------------------------------------- 
********************************************************************************************************/

// ------------------------------------------------------------------------------------------------------
/* 定义常量 */
#define BUSY            0x80                               // 用于检测LCM状态字中的Busy标识

// ------------------------------------------------------------------------------------------------------
/* LCD显示屏操作位定义(视不同的设计而定) */
sbit      LCM_RW     =    P3^4;                  // 定义LCM控制引脚 
sbit      LCM_RS     =    P3^5;
sbit      LCM_E      =    P3^7;
sfr       LCM_DATA   =    0xA0;                  // 定义LCM数据引脚(P2口)

// ------------------------------------------------------------------------------------------------------
/* 驱动程序导出函数 */
void WaitLCD(void);
void CheckLCDBusy(void);
void WriteCmdToLCD(INT8U nCmd, bit bCheckBusy);
void WriteDataToLCD(INT8U nData, bit bCheckBusy);
void ReadDataFromLCD(INT8U* nData, bit bCheckBusy);
void LCDInit(void);
void DisplayOneChar(INT8U nX, INT8U nY, INT8U nData);
void DisplayListChar(INT8U nX, INT8U nY, INT8U nLen, INT8U *nData);


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -