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

📄 tg12232e.c

📁 ADS环境下的LCD程序
💻 C
字号:
/****************************************Copyright (c) ****************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.embedtools.com
**
**―――File Info――――――――――――――――――――――――――――――――――――――
** File name:			TG12232E.h
** Last modified Date:  2006年11月13日
** Last Version:		V1.0
** Descriptions:		TG12232E液晶显示器驱动文件,实现LCD驱动程序
**
**――――――――――――――――――――――――――――――――――――――――――――――
** Created by:			郭敏辉
** Created date:		2006年11月13日
** Version:				V1.0
** Descriptions:		TG12232E液晶显示器驱动文件,实现LCD驱动程序
**
**――――――――――――――――――――――――――――――――――――――――――――――
** Modified by:			黄钦宁
** Modified date:		2007-04-13
** Version:		        V2.0
** Descriptions:		
**
*******************************************************************************************/

#include "main.h"
#include "TG12232E.h"
#include <stdarg.h>
#include <stdio.h>
/*******************************************************************************************
**函数名称: void LCD_Init(void)
**函数功能: LCD初始化
**入口参数: 无
**返 回 值: 无
**说    明:
*******************************************************************************************/
void LCD_TimeDly(uint16 Time)
{
   OSTimeDly(Time);
}
	
/*******************************************************************************************
**函数名称: void LCD_Init(void)
**函数功能: LCD初始化
**入口参数: 无
**返 回 值: 无
**说    明:
*******************************************************************************************/
	int32 Spi_Handles ;                                              // SPI句柄
void LCD_Init(void)
{
    /*      初始化SPI接口      */
	Spi_Handles=dopen("SPI0",O_RDWR,OCCUPY);                         // 以独占方式打开SPI 设备
	if(Spi_Handles <0)                                               // dopen成功,句柄将大于0
	{
		Spi_Handles = getlasterr(Spi_Handles);                       // 查看错误状态
		while(1)
			{
				OSTimeDly(OS_TICKS_PER_SEC);
			}
	}
    //diocontrol(Spi_Handles,SPI_SELDEVICE,(void*)GPIOA1);
    diocontrol(Spi_Handles,SPI_SCKPSET,(void*)SPISCK_L);
	diocontrol(Spi_Handles,SPI_OPMOD,(void*) SPISIMPLEX);            // 数据单向模式
    
	//液晶IO口初始化
	gpio_clr(LCD_CS); 
	gpio_set(LCD_RST);                                               // LCD模块复位
	gpio_clr(LCD_RST); 
	LCD_TimeDly(1);
	gpio_set(LCD_RST);
	LCD_DisplaySwitch(1,0,0);
	LCD_Clear();//清屏
}
/*******************************************************************************************
**函数名称: void LCD_Write(uint8 *SndDatBuff,uint16 length)
**函数功能: 向LCD写数据
**入口参数: uint8 *SndDatBuff         要写入数据地址的指针
**           uint16 length             要写入数据的长度
**返 回 值: 无
**说    明:
*******************************************************************************************/
void LCD_Write(uint8 *SndDatBuff,uint16 length)
{
	gpio_clr(LCD_CS);                                                // 片选LCD
	gpio_set(LCD_CS);
	dwrite(Spi_Handles,(char *)SndDatBuff,length);
	gpio_clr(LCD_CS);
}

/*******************************************************************************************
**函数名称: void LCD_SendControl(uint8 Data)
**函数功能: 发送一个控制字节
**入口参数: Data 发送控制命令。
**返 回 值: 无
**说    明:
*******************************************************************************************/
void LCD_SendControl(uint8 Data)
{
	uint8 Buff[3];
	Buff[0]=LCD_WriteCommand;
	Buff[1]=Data&0xF0;
	Buff[2]=Data<<4;
	LCD_Write((uint8 *)Buff,3);
	LCD_TimeDly(2);
}


/*******************************************************************************************
**函数名称: void LCD_SendData(uint8 Data)
**函数功能: 发送一个显示数据
**入口参数: Data 发的显示数据。
**返 回 值: 无
**说    明:
*******************************************************************************************/
void LCD_SendData(uint8 Data)
{
	uint8 Buff[3];
	Buff[0]=LCD_Write_Data;
	Buff[1]=Data&0xF0;
	Buff[2]=Data<<4;
	LCD_Write((uint8 *)Buff,3);
}

/*******************************************************************************************
**函数名称: LCD_SendStr(uint8 Row,uint8 Col,uint8 *String)
**函数功能: 设定LCD显示的起始位置
**入口参数: x  x轴位置
			 y  y轴位置
**返 回 值: TRUE 设定成功;FALSE 设定失败。
**说    明:
*******************************************************************************************/
uint8 LCD_SetPos(uint8 x,uint8 y)
{
	if ((x < 2) && (y < 8))                  // 汉字字符为2行7.5列(汉字必须偶数对齐)
	{
		
		LCD_SendControl((0x80+(x*16+y)));
		return TRUE;                         // 成功返回
	}
	else
		return FALSE;                        // 失败返回
}

/*******************************************************************************************
**函数名称: LCD_SendStr(uint8 x,uint8 y,char *fmt,...)
**函数功能: 指定位置显示字符串
**入口参数: x               x轴位置
			 y               y轴位置
 			 char *fmt       发送的数据指针
**返 回 值: 无
**说    明:
*******************************************************************************************/
void LCD_SendStr(uint8 x,uint8 y,char *fmt,...)
{
	va_list ap;
    char String[256];
    uint8 *StringData;
    va_start(ap,fmt);
    vsprintf(String,fmt,ap);                               // 转换格式
    va_end(ap); 
    StringData=(uint8 *)String;
	if (LCD_SetPos(x, y)==TRUE)
	{
		while(*StringData) 
			LCD_SendData(*StringData ++);
	}
}

/*******************************************************************************************
**函数名称: void LCD_Clear(void)
**函数功能: 清屏
**入口参数: 
**返 回 值: 无
**说    明:
*******************************************************************************************/
void LCD_Clear(void)
{
	LCD_SendControl(Display_Clear);
}

/*******************************************************************************************
**函数名称: void LCD_DisplaySwitch(uint8 D,uint8 C,uint8 B)
**函数功能: 显示状态开/关
**入口参数: D=0: 整体显示OFF                  D=1: 整体显示ON
**           C=0: 游标OFF                      C=1: 游标ON
**           B=0: 光标位置反白OFF              B=1: 光标位置反白ON
**返 回 值: 无
**说    明:
*******************************************************************************************/
void LCD_DisplaySwitch(uint8 D,uint8 C,uint8 B)
{
	LCD_SendControl((0x08+(D<<2)+(C<<1)+(B<<0)));		
}

/*******************************************************************************************
**函数名称: void LCD_CurDispShift(uint8 y,int8 Num)
**函数功能: 设定光标的移动与显示的移位控制位
**入口参数: CS=0      光标的移动;    CS=1      显示的移动.     
**           int8 Num                 移动的位数;  Num>0  右移Num;  Num<0   左移Num.
**返 回 值: 无
**说    明:
*******************************************************************************************/
void LCD_CurDispShift(uint8 CS,int8 Num)
{	
	if(Num>0)                         //右移 
	   {
		    while(Num--)
				LCD_SendControl((0x10+(CS<<3)+(1<<2)));
		}
	else
	{
		Num=(-1)*Num;
		while(Num--)
			LCD_SendControl((0x10+(CS<<3)+(0<<2)));
	}
		
}

/*******************************************************************************************
**                            End Of File
*******************************************************************************************/

⌨️ 快捷键说明

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