📄 lcd160xb.h
字号:
//==============================================================================
//字符液晶模块的C51程序头文件
//File Name=lcd160xb.h
//本程序同时支持显示一行或两行的液晶以及数据端口采用8位或4位两种引脚的接法!
//==============================================================================
#include "Public.h"
#ifndef _LCD160XB_H_
#define _LCD160XB_H_
#define TYPE_LCD1601B 0 //1行液晶(缺省)
#define TYPE_LCD1602B 1 //2行液晶
#define PORT_WIDTH_8BIT 8 //缺省P0端口8位数据线
#define PORT_WIDTH_4BIT 4 //液晶上数据端口仅仅使用引脚Data7...4(MSB..LSB)
#define PORT_WIDTH_4SPI 1 //4线SPI方式(P05-ChipSelect,P06-Sclk,P07-Sdata,P17-RS)
#define PORT_WIDTH_3SPI 2 //3线SPI方式(P05-ChipSelect,P06-Sclk,P07-Sdata)
//********************************************************
//根据实际使用的液晶来设置类型,以及后续的数据端口的位数(4/8位端口)
//注意: 液晶需要在硬件上进行PSB的响应调整!
//********************************************************
#define LCD_TYPE TYPE_LCD1602B
#define LCD_PORT PORT_WIDTH_8BIT
//#define LCD_PORT PORT_WIDTH_4BIT
//#define LCD_PORT PORT_WIDTH_4SPI //20061129(1-3)
//#define LCD_PORT PORT_WIDTH_3SPI //20061129(2-2)
//本模块的引脚定义,已经根据实际情况更改!
sbit HD_LCD160XB_RS =P1^7; //=0,指令寄存器, =1,数据寄存器
sbit HD_LCD160XB_RW =P1^6; //=0,写, =1,读
sbit HD_LCD160XB_EN =P1^5; //下降沿有效,高电平读写数据
sbit HD_LCD160XB_LAMP=P3^7; //液晶的背光控制引脚
#define HD_DATA_PORT P0 //液晶数据端口
#if (LCD_PORT ==PORT_WIDTH_4BIT)
#define CONST_LCD_PORT_RIGHT_HALF 0 //4位数据线在端口的低半字节,PORT.3是最高位对应LCD.3(缺省)
#define CONST_LCD_PORT_LEFT_HALF 1 //4位数据线在端口的高半字节,PORT.7是最高位对应LCD.3
//需要根据实际的引脚接法进行设置!
#define CONST_POS_OF_LCD_PORT CONST_LCD_PORT_LEFT_HALF
#endif
#if ((LCD_PORT ==PORT_WIDTH_4SPI) ||(LCD_PORT ==PORT_WIDTH_3SPI))
sbit HD_LCD160XB_CS =P0^5; //=0 有效
sbit HD_LCD160XB_CLK =P0^6; //平时高电平
sbit HD_LCD160XB_DAT =P0^7; //高电平送数据,时钟的下降沿锁存数据
#define CODE_SET_LCD160XB_CS HD_LCD160XB_CS =1
#define CODE_CLR_LCD160XB_CS HD_LCD160XB_CS =0
#define CODE_SET_LCD160XB_CLK HD_LCD160XB_CLK =1
#define CODE_CLR_LCD160XB_CLK HD_LCD160XB_CLK =0
#define CODE_SET_LCD160XB_DAT HD_LCD160XB_DAT =1
#define CODE_CLR_LCD160XB_DAT HD_LCD160XB_DAT =0
#endif
//操作代码宏的定义
#define CODE_SET_LCD160XB_RS HD_LCD160XB_RS =1
#define CODE_CLR_LCD160XB_RS HD_LCD160XB_RS =0
#define CODE_SET_LCD160XB_RW HD_LCD160XB_RW =1
#define CODE_CLR_LCD160XB_RW HD_LCD160XB_RW =0
#define CODE_SET_LCD160XB_EN HD_LCD160XB_EN =1
#define CODE_CLR_LCD160XB_EN HD_LCD160XB_EN =0
//这里需要根据实际的硬件逻辑设置
#define CODE_LCD160XB_LAMP_ON HD_LCD160XB_LAMP =0
#define CODE_LCD160XB_LAMP_OFF HD_LCD160XB_LAMP =1
//常数的定义
#define CONST_LCD160XB_COMMAND 0 //RS是命令寄存器
#define CONST_LCD160XB_DATA 1 //RS是数据寄存器
#define CMD_LCD160XB_CONFIG_8BIT_2LINE 0x38 //16*2显示,5*7点阵,8位数据接口
#define CMD_LCD160XB_CONFIG_4BIT_2LINE 0x28 //16*2显示,5*7点阵,4位数据接口
#define CMD_LCD160XB_CONFIG_8BIT_1LINE 0x30 //16*1显示,5*7点阵,8位数据接口
#define CMD_LCD160XB_CONFIG_4BIT_1LINE 0x20 //16*1显示,5*7点阵,4位数据接口
#define CMD_LCD160XB_DISPLAY_OFF 0x08 //显示关闭
#define CMD_LCD160XB_CLR_SCREEN 0x01 //清屏
#define CMD_LCD160XB_CURSE_SETS 0x06 //光标移动设置:读写后地址加1,且光标加1
#define CMD_LCD160XB_DISPLAY_ON 0x0C //显示打开,不显示光标,光标不闪烁
#define CMD_LCD160XB_DISPLAY_ON_CURSOR_FLUSH 0x0F //显示打开,显示光标,光标闪烁
#define CONST_LCD160XB_FIRST_LINE 0x00 //第1行
#define CONST_LCD160XB_SECOND_LINE 0x01 //第2行
#define CONST_LCD160XB_LINE_WIDTH 0x10 //液晶的一行具有的字节数
//库函数的定义说明
void lcd160xb_init_set(void);
void lcd160xb_clr_scr(void);
void lcd160xb_set_disp_addr(uchar pos, uchar line);
void lcd160xb_disp_str(uchar *str, uchar line);
//void lcd160xb_disp_char(uchar ch, uchar line, uchar pos);
void lcd160xb_init_set_with_cursor(void);
#endif
//End Of File
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -