📄 ltm024d130.c
字号:
/****************************************Copyright (c)****************************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
**
** http://www.embedtools.com
**
**------File Info-----------------------------------------------------------------------------------------
** File name: LTM024D130.c
** Latest modified Date: 2008-07-22
** Latest Version: 1.0
** Descriptions: TFT液晶LTM024D130的驱动文件
**
**--------------------------------------------------------------------------------------------------------
** Created by: 张展威
** Created date: 2008-07-22
** Version: 1.0
** Descriptions:
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
*********************************************************************************************************/
/*********************************************************************************************************
硬件寄存器相关操作头文件
*********************************************************************************************************/
#include "hw_types.h"
#include "hw_memmap.h"
#include "hw_gpio.h"
#include "sysctl.h"
#include "gpio.h"
#include "LTM024D130.h"
#include "hz16.h"
#define INT8U unsigned char
#define INT16U unsigned short
/*********************************************************************************************************
将较长的标识符定义成较短的形式
*********************************************************************************************************/
#define SysCtlPeriEnable SysCtlPeripheralEnable
#define SysCtlPeriDisable SysCtlPeripheralDisable
#define GPIOPinTypeIn GPIOPinTypeGPIOInput
#define GPIOPinTypeOut GPIOPinTypeGPIOOutput
#define GPIOPinTypeOD GPIOPinTypeGPIOOutputOD
/*********************************************************************************************************
硬件相关的定义
*********************************************************************************************************/
#define LCD_CS_BASE_PIN LCD_CS_BASE,LCD_CS_PIN
#define LCD_WR_BASE_PIN LCD_WR_BASE,LCD_WR_PIN
#define LCD_RS_BASE_PIN LCD_RS_BASE,LCD_RS_PIN
#define LCD_RD_BASE_PIN LCD_RD_BASE,LCD_RD_PIN
#define LCD_RST_BASE_PIN LCD_RST_BASE,LCD_RST_PIN
#define DATA_PORT_BASE_PIN DATA_PORT_BASE,DATA_PORT_PIN
/*********************************************************************************************************
硬件相关的位操作定义
*********************************************************************************************************/
#define LCD_RS HWREG(LCD_RS_BASE + (GPIO_O_DATA + (LCD_RS_PIN << 2)))
#define LCD_CS HWREG(LCD_CS_BASE + (GPIO_O_DATA + (LCD_CS_PIN << 2)))
#define LCD_WR HWREG(LCD_WR_BASE + (GPIO_O_DATA + (LCD_WR_PIN << 2)))
#define LCD_RD HWREG(LCD_RD_BASE + (GPIO_O_DATA + (LCD_RD_PIN << 2)))
#define LCD_RST HWREG(LCD_RST_BASE + (GPIO_O_DATA + (LCD_RST_PIN << 2)))
#define DATA_PORT HWREG(DATA_PORT_BASE + (GPIO_O_DATA + (DATA_PORT_PIN << 2)))
#define DATA_PROT_INPUT_SET() HWREG(DATA_PORT_BASE + GPIO_O_DIR) = 0 /* 设置数据口为输入方向 */
#define DATA_PROT_OUTPUT_SET() HWREG(DATA_PORT_BASE + GPIO_O_DIR) = 0xFF
/* 设置数据口为输出方向 */
/*********************************************************************************************************
** 函数名称: __writeRegAddr8
** 功能描述: 写寄存器地址函数
** 输 入: ucAddr 8位的液晶寄存器地址
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
** 返 回:无
** 作 者: 张展威
** 日 期: 2008年7月22日
**------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void __writeRegAddr8(INT8U ucAddr) /* 写寄存器地址函数 */
{
LCD_CS = 0x00; /* 拉低CS */
LCD_RS = 0x00; /* 拉低RS */
DATA_PORT = ucAddr; /* 写地址数据 */
LCD_WR = 0x00; /* 拉低WR */
LCD_WR = 0xFF; /* 拉高WR */
//LCD_RS = 0xFF; /* 拉高RS */
LCD_CS = 0xFF; /* 拉高CS */
}
/*********************************************************************************************************
** 函数名称: __writeData8
** 功能描述: (向当前地址的寄存器)写8位数据
** 输 入: ucData 要写入液晶的8位数据
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
** 返 回:无
** 作 者: 张展威
** 日 期: 2008年7月22日
**------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void __writeData8(INT8U ucData) /* 写8位数据函数 */
{
LCD_CS = 0x00; /* 拉低CS */
LCD_RS = 0xFF; /* 拉高RS */
DATA_PORT = ucData; /* 写数据 */
LCD_WR = 0x00; /* 拉低WR */
LCD_WR = 0xFF; /* 拉高WR */
LCD_CS = 0xFF; /* 拉高CS */
}
/*********************************************************************************************************
** 函数名称: __readData8
** 功能描述: (从当前地址的寄存器)读8位数据
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
** 返 回:(当前地址的)8位数据
** 作 者: 张展威
** 日 期: 2008年7月22日
**------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
unsigned char __readData8(void)
{
unsigned char ucReturn = 0;
DATA_PROT_INPUT_SET(); /* 设置数据口为输入方向 */
LCD_CS = 0x00; /* 拉低CS */
LCD_RS = 0xFF; /* 拉高RS */
LCD_RD = 0x00; /* 拉低RD */
LCD_RD = 0xFF; /* 拉高RD */
ucReturn = DATA_PORT; /* 读入数据 */
LCD_CS = 0xFF; /* 拉高CS */
DATA_PROT_OUTPUT_SET(); /* 还原为输出端口 */
return ucReturn; /* 返回结果 */
}
/*********************************************************************************************************
** 函数名称: __writeRegAddr16
** 功能描述: 写寄存器地址函数
** 输 入: usAddr 16位的液晶寄存器地址
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
** 返 回:无
** 作 者: 张展威
** 日 期: 2008年7月22日
**------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void __writeRegAddr16(unsigned short usAddr)
{
LCD_CS = 0x00; /* 拉低CS */
LCD_RS = 0x00; /* 拉低RS */
DATA_PORT = (unsigned char)(usAddr >> 8); /* 写地址高8位数据 */
LCD_WR = 0x00; /* 拉低WR */
LCD_WR = 0xFF; /* 拉高WR */
DATA_PORT = (unsigned char)usAddr; /* 写地址低8位数据 */
LCD_WR = 0x00; /* 拉低WR */
LCD_WR = 0xFF; /* 拉高WR */
//LCD_RS = 0xFF; /* 拉高RS */
LCD_CS = 0xFF; /* 拉高CS */
}
/*********************************************************************************************************
** 函数名称: __readData16
** 功能描述: (从当前地址的寄存器)读16位数据函数
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
** 返 回:(当前地址的)16位数据
** 作 者: 张展威
** 日 期: 2008年7月22日
**------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
unsigned short __readData16(void)
{
unsigned short usRetrun = 0;
DATA_PROT_INPUT_SET(); /* 设置数据口为输入方向 */
LCD_CS = 0x00; /* 拉低CS */
LCD_RS = 0xFF; /* 拉高RS */
LCD_RD = 0x00; /* 拉低RD */
usRetrun = DATA_PORT; /* 读入高8位数据 */
LCD_RD = 0xFF; /* 拉高RD */
LCD_RD = 0x00; /* 拉低RD */
usRetrun = (usRetrun << 8) + DATA_PORT; /* 读入低8位数据 */
LCD_RD = 0xFF; /* 拉高RD */
LCD_CS = 0xFF; /* 拉高CS */
DATA_PROT_OUTPUT_SET(); /* 还原为输出端口 */
return usRetrun;
}
/*********************************************************************************************************
** 函数名称: pixelRead
** 功能描述: 从指定坐标位置读出16位的颜色数据
** 输 入: x 列坐标
** y 行坐标
** 输 出: 无
** 全局变量: 无
** 调用模块: DATA_PROT_INPUT_SET()、DATA_PROT_OUTPUT_SET()
** 返 回:GRAM中指定坐标的16位的颜色数据
** 作 者: 张展威
** 日 期: 2008年7月22日
**------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
unsigned short pixelRead(unsigned short x, unsigned short y)
{
unsigned short usRetrun = 0;
__writeCommand(0, 0x02, (unsigned char)x); /* X (0~239) */
__writeCommand(1, 0x03, y); /* Y (0~319) */
__writeRegAddr8(0x0F); /* GRAM读接口寄存器地址 */
DATA_PROT_INPUT_SET(); /* 设置数据口为输入方向 */
LCD_CS = 0x00; /* 拉低CS */
LCD_RS = 0xFF; /* 拉高RS */
LCD_RD = 0x00; /* 拉低RD */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -