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

📄 lcd160xb.h

📁 这是一个以RW1067为控制器的LCD模块的控制程序
💻 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 + -