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

📄 lib_66789.c

📁 用hd66789的tft 底层驱动代码(arm7平台)
💻 C
字号:
/****************************************************************************
**                              ARM板 通讯主程序(For ads1.2)
**                                  (c) Copyright 2005-2008, sealdong
**                                           All Rights Reserved
**
**                                                  V1.00
**
**
**--------------当前版本信息----------------------------------------------------------------------------
** 文件名:	lib_66789.c
** 创建人:	董传玺
** 日 期:	2005年8月12日
** 描 述:	C语言头文件,定义一些宏和函数
** 
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: sealdong
** 版     本 :	V1.00
** 日 期: 
** 描 述: hd66789的底层程序
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include "def.h"
#include "utils.h"
#include "lib_66789.h"
extern void LedDisp(void);
U16 hd66789v6[][2]={
{0x0000,0x0001},//start osc
//power setting
{0x0010,0x0000},{0x0011,0x0000},{0x0012,0x0000},{0x0013,0x0000},
{0x0010,0x4044},{0x0012,0x0008},{0x0010,0x4044},{0x0011,0x0002},
{0x0012,0x0008},{0x0013,0x1313},{0x0012,0x0018},{0x0011,0x0005},//r11 set Vci1out
{0x0012,0x0014},{0x0013,0x291c},{0x0010,0x4340},                // r13 set VcomH&Vcom amp level
//display setting
{0x0001,0x011b},{0x0002,0x0500},{0x0003,0x1230},{0x0004,0x0000},//r05 set frame or line inversion
{0x0005,0x0000},{0x0007,0x1003},{0x0008,0x0808},{0x0009,0x000c},
{0x000b,0x0000},{0x000c,0x0001},{0x0023,0x0000},{0x0024,0x0000},
//r-curve setting
{0x0030,0x0403},{0x0031,0x0803},{0x0032,0x0306},{0x0033,0x0000},
{0x0034,0x0304},{0x0035,0x0502},{0x0036,0x0404},{0x0037,0x0000},
{0x0038,0x140a},{0x0039,0x090e},                                
//display on setting
{0x0040,0x0000},{0x0041,0x00ef},{0x0042,0xdb00},{0x0043,0xdb00},
{0x0044,0xaf00},{0x0045,0xdb00},{0x0007,0x1025},{0x0007,0x1027},
{0x0007,0x1037},{0x0021,0x0000},{0x0022,0x0000},
{0xffff,0xffff}
};

//*************************************
//函数部分
//*************************************
/*********************************************************************************************************
** 函数名称: writ_command
** 功能描述: 
** 输   入: 
** 输   出:  无
** 全局变量: 
** 调用模块:  无
**
** 作   者:  董传玺
** 日   期:  2005年8月12日
**------------------------------------------------------------------------------------------------------
** 修   改:
** 日   期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/

void writ_command1(unsigned short t_command)
{
	LCD_COMMAND1 	= t_command;
} 
/*********************************************************************************************************
** 函数名称: writ_data
** 功能描述: 
** 输   入: 
** 输   出:  无
** 全局变量: 
** 调用模块:  无
**
** 作   者:  董传玺
** 日   期:  2005年8月12日
**------------------------------------------------------------------------------------------------------
** 修   改:
** 日   期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/

void writ_data1(unsigned short t_data)
{
	LCD_DATA1        = t_data;
} 
/*********************************************************************************************************
** 函数名称: Init_data
** 功能描述: 
** 输   入: tft_commandd,tft_data
** 输   出:  无
** 全局变量: 
** 调用模块:  无
**
** 作   者:  董传玺
** 日   期:  2005年8月12日
**------------------------------------------------------------------------------------------------------
** 修   改:
** 日   期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/

void Init_data1(unsigned int tft_commandd,unsigned int tft_data)
{
	writ_command1(tft_commandd);
	writ_data1(tft_data);

} 
    
//初始化TFT
/*********************************************************************************************************
** 函数名称: initial_TFT
** 功能描述: 芯片的基本设置//初始化TFT
** 输   入: 
** 输   出:  无
** 全局变量: 
** 调用模块:  无
**
** 作   者:  董传玺
** 日   期:  2005年8月12日
**------------------------------------------------------------------------------------------------------
** 修   改:
** 日   期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void initial_TFT1(void)//hd66789
{
	U16 i,Lcommand,Ldata;
	for(i=0;i<=0x0ff0;i++){
    Lcommand =  hd66789v6[i][0];
    Ldata    = hd66789v6[i][1];
		if(Lcommand==0xffff)i=0x0ffc;
		else{
			Init_data1(Lcommand,Ldata);
		}
	}
	Delay(20);	
}
/*********************************************************************************************************
** 函数名称: souxy
** 功能描述: 光标的从新定位
** 输   入: 
** 输   出:  无
** 全局变量: 
** 调用模块:  无
**
** 作   者:  董传玺
** 日   期:  2005年8月12日
**------------------------------------------------------------------------------------------------------
** 修   改:
** 日   期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void souxy1(void)
{
  	Init_data1(0x0021,0x0000);
   	writ_command1(0x0022);	
}
/*********************************************************************************************************
** 函数名称: tftcolor_RGB
** 功能描述: 写屏为九宫格
** 输   入: 
** 输   出:  无
** 全局变量: 
** 调用模块:  无
**
** 作   者:  董传玺
** 日   期:  2005年8月12日
**------------------------------------------------------------------------------------------------------
** 修   改:
** 日   期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void tftcolor_RGB1(U16 high,U16 width)//176*220
{
	unsigned int 	i,j;
	souxy1();
	for(i=0;i<(U16)(high/3);i++)
    {
		for(j=0;j<(U16)(width/3);j++)       			{	writ_data1(Black1);	}
		for(j=(U16)(width/3);j<(U16)(width*2/3);j++)   	{	writ_data1(Green1);	}
		for(j=(U16)(width*2/3);j<width;j++) 			{	writ_data1(Blue1);	}
    	}
	for(i=(U16)(high/3);i<(U16)(high*2/3);i++)   
	{     
		for(j=0;j<(U16)(width/3);j++)					{	writ_data1(Magenta1);	}
		for(j=(U16)(width/3);j<(U16)(width*2/3);j++)	{	writ_data1(White1);	}
		for(j=(U16)(width*2/3);j<width;j++)   			{	writ_data1(Black1);	}
   	}
	for(i=(U16)(high*2/3);i<high;i++)
	{
		for(j=0;j<(U16)(width/3);j++)       			{	writ_data1(Cyan1);	}
		for(j=(U16)(width/3);j<(U16)(width*2/3);j++)   	{	writ_data1(Black1);	}
		for(j=(U16)(width*2/3);j<width;j++)				{	writ_data1(Red1);		}
	}
}


/*********************************************************************************************************
** 函数名称: tftcolorbar
** 功能描述: 
** 输      入: 
** 输      出:  无
** 全局变量: 
** 调用模块:  无
**
** 作      者:  董传玺
** 日      期:  2005年6月25日
**------------------------------------------------------------------------------------------------------
** 修      改:
** 日      期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void tftcolorbar1(unsigned short high, unsigned short width)
{
 U16 i,j;

	souxy1();
 
 for(i=0;i<high;i++)
	{
		for(j=0;j<(U16)(width/8);j++)					{	writ_data1(Black1);		}
		for(j=(U16)(width/8);j<(U16)(width/8)*2;j++)	{	writ_data1(Cyan1);		}
		for(j=(U16)(width/8)*2;j<(U16)(width/8)*3;j++)	{	writ_data1(Green1);		}
		for(j=(U16)(width/8)*3;j<(U16)(width/8)*4;j++)	{	writ_data1(Blue1);		}
		for(j=(U16)(width/8)*4;j<(U16)(width/8)*5;j++)	{	writ_data1(Red1);		}
		for(j=(U16)(width/8)*5;j<(U16)(width/8)*6;j++)	{	writ_data1(Magenta1);	}
		for(j=(U16)(width/8)*6;j<(U16)(width/8)*7;j++)	{	writ_data1(Yellow1);	}
		for(j=(U16)(width/8)*7;j<(U16)(width/8)*8;j++)	{	writ_data1(Gray1);		}
	}
}


/*********************************************************************************************************
** 函数名称: tftcolor
** 功能描述: 写一种颜色到全屏
** 输   入:  color
** 输   出:  无
** 全局变量: High,Width
** 调用模块:  writ_data();
**
** 作   者:  董传玺
** 日   期:  2005年8月12日
**------------------------------------------------------------------------------------------------------
** 修   改:
** 日   期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void tftcolor1(U16 color)
{
	unsigned int 	i,j; 
	souxy1();
    for(i=0;i<High1;i++){
      for(j=0;j<Width1;j++){
         writ_data1(color);
       }
    }
}
/*********************************************************************************************************
** 函数名称: testtft_8bit_arry
** 功能描述: 
** 输   入: 
** 输   出:  无
** 全局变量: 
** 调用模块:  无
**
** 作   者:  董传玺
** 日   期:  2005年8月12日
**------------------------------------------------------------------------------------------------------
** 修   改:
** 日   期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void testtft_8bit_arry1(unsigned char *photo1)
{ 
    unsigned int 	i,j; 
	souxy1();
	for(i=0;i<220;i++){
      for(j=0;j<176*2;j=j+2){
         writ_data1((U16)(photo1[i*176*2+j]<<8)|(U16)photo1[i*176*2+j+1]);
       }
    }
}
/*********************************************************************************************************
** 函数名称: lcm_UpdateScreen
** 功能描述: 开窗口
** 输   入: 
** 输   出:  无
** 全局变量: 
** 调用模块:  无
**
** 作   者:  董传玺
** 日   期:  2005年8月12日
**------------------------------------------------------------------------------------------------------
** 修   改:
** 日   期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void lcm_UpdateScreen1(U8 startx, U8 starty, U8 width, U8 height,U16 color1)
{
 U16 tmp16;
 U8 i,j;
  tmp16 = (U16)(startx + width+2 - 1);				//0+128+2-1=129
  Init_data1(0x0016,(tmp16<<8)|((U16)(startx+2)));	//0x8102
  tmp16 = (U16)(starty + height - 1);				//20+120-1=139
  Init_data1(0x0017,(tmp16<<8)|((U16)starty));		//0x8B14
  
  Init_data1(0x0021,(starty<<8)|((U16)(startx+2)));  //0x1402
  Init_data1(0x0022,0x0000);
  
  for(i=0;i<(height-starty);i++){
      for(j=0;j<128;j++){
         LCD_DATA1  = color1;
       }
    }

}
//*******************end*****************************

⌨️ 快捷键说明

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