亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tft_nt3916.c

?? 展訊平臺nt3916 lcd 驅(qū)動code
?? C
?? 第 1 頁 / 共 2 頁
字號:
/******************************************************************************
 ** File Name:     cstn_pcf8833.c                                             *
 ** Description:															  *
 **    This file contains driver for color LCD.(CSTN)						  *
 ** Author:         Jim zhang                                                 *
 ** DATE:           03/01/2004                                                *
 ** Copyright:      2004 Spreatrum, Incoporated. All Rights Reserved.         *
 ** Description:                                                              *
 ******************************************************************************

 ******************************************************************************
 **                        Edit History                                       *
 ** ------------------------------------------------------------------------- *
 ** DATE           NAME             DESCRIPTION                               *
 ** 02/04/2004     louis.wei	    Create.
 ******************************************************************************/

#include "os_api.h"
#include "sci_types.h"
#include "gpio_api.h"
#include "lcd.h"
#include "lcm_drv.h"

 #ifdef   __cplusplus
    extern   "C" 
    {
#endif

/**---------------------------------------------------------------------------*
 **                            Macro Define
 **---------------------------------------------------------------------------*/

#define	NT3916_WIDTH	176
#define	NT3916_HEIGHT	220

//#define OFFSET_X	2
static uint8 OFFSET_X = 2;

extern void *LCD_GetLCDBuffer(void);

  /******************************************************************************/
//  Description:   Clear color LCD with one color
//	Global resource dependence: 
//  Author:         louis.wei
//	Note:
/******************************************************************************/
LOCAL void NT3916_Clear(
						uint32 color	//color to fill the whole lcd.
						);
  /******************************************************************************/
//  Description:   Close the lcd.(include sub lcd.)
//	Global resource dependence: 
//  Author:         Jim.zhang
//	Note:
/******************************************************************************/
LOCAL void NT3916_Close(void);

  /******************************************************************************/
//  Description:   Enter/Exit sleep mode .
//	Global resource dependence: 
//  Author:         Jim.zhang
//	Note:
/******************************************************************************/
LOCAL ERR_LCD_E  NT3916_EnterSleep(
	BOOLEAN is_sleep 	//SCI_TRUE: exter sleep mode;SCI_FALSE:exit sleep mode.
	);

/*****************************************************************************/
//  Description:    Get the lcd base information..
//	Global resource dependence: 
//  Author:         louis.wei
//	Note:
/*****************************************************************************/
LOCAL  ERR_LCD_E   NT3916_GetInfo(
								   LCD_INFO_T *lcd_info_ptr	//lcd information struct pointer
								   );

/******************************************************************************/
//  Description:    get the important parameter for digital camera
//	Global resource dependence: 
//  Author:         Zhemin.lin
//	Note:           
/******************************************************************************/
LOCAL ERR_LCD_E  NT3916_GetLcdSpec(
	LCD_SPEC_T *spec_ptr 	//spec struct pointer
	);

/*********************************************************************/
//  Description:   Initialize color LCD : HD66773
//  Input:
//      None.
//  Return:
//      None.
//	Note:           
/*********************************************************************/
LOCAL ERR_LCD_E NT3916_Init(void);

/******************************************************************************/
//  Description:   invalidate a rectang of in LCD
//	Global resource dependence: 
//  Author:         Jim.zhang
//	Note:
/******************************************************************************/
LOCAL ERR_LCD_E NT3916_Invalidate(void);

/******************************************************************************/
//  Description:   Copy a retangle data from clcd_buffer to display RAM.
//                     then the rectangle display is to be refreshed
//	Global resource dependence: 
//  Author:         Jim.zhang
//	Note:       
//     To improve speed, lcd is operate in HIGH SPEED RAM WRITE MODE(4
//     uint16 are write continuously always.) So, some dummy uint16 
//     should be inserted to satisfy this mode.   Please refer to spec.
/******************************************************************************/
LOCAL ERR_LCD_E NT3916_InvalidateRect(
	uint16 left, 	//the left value of the rectangel
	uint16 top, 	//top of the rectangle
	uint16 right, 	//right of the rectangle
	uint16 bottom	//bottom of the rectangle
	);

/******************************************************************************/
//  Description:   Copy a retangle data from external buffer to display RAM.
//                     then the rectangle display is to be refreshed
//	Global resource dependence: 
//  Author:         Jim.zhang
//	Note:       
/******************************************************************************/
LOCAL ERR_LCD_E NT3916_InvalidateRect_Image(
	uint16 left, 	//the left value of the rectangel
	uint16 top, 	//top of the rectangle
	uint16 right, 	//right of the rectangle
	uint16 bottom,	//bottom of the rectangle
	uint16 *buf_ptr //buffer pointer of the image to display
	);
	
/******************************************************************************/
//  Description:  Set start RAM address which is write to AC(Address
//                Counter) register.
//  Input:
//      left: start Horizon address of AC
//      top: start Vertical address of AC.
//  Return:
//      None.
//	Note:           
/******************************************************************************/
__inline void NT3916_set_start_address(
	uint16 left, 
	uint16 top
	);
/******************************************************************************/
__inline void NT3916_set_display_window(
	uint16 left, 	// start Horizon address
	uint16 right, 	// end Horizon address
	uint16 top, 		// start Vertical address
	uint16 bottom	// end Vertical address
	);	
/**---------------------------------------------------------------------------*
 **                      Function  Definitions
 **---------------------------------------------------------------------------*/
#if 1
#define NT3916_SEND_COMMAND(c)                                                   \
                                 {                                                \
                                     LCM_WAIT_AHBFIFO_NOTFULL                     \
                                     *(volatile uint32 *)(LCM_CMD_ADDR(0,0))  = c;\
                                 }
	
#define NT3916_SEND_DATA(d)                                                      \
                                 {                                                \
                                     LCM_WAIT_AHBFIFO_NOTFULL                     \
                                     *(volatile uint32 *)(LCM_DATA_ADDR(0,0)) = d;\
                                 }
 
 
 
#define NT3916_sendcommand1(c, d)                                                \
                                 {                                                \
                                     LCM_WAIT_AHBFIFO_NOTFULL                     \
                                     *(volatile uint32 *)(LCM_CMD_ADDR(0,0))  = c;\
                                     *(volatile uint32 *)(LCM_DATA_ADDR(0,0)) = d;\
                                 }
#else

#define NT3916_SEND_COMMAND(c) { LCM_SendCmd(c, 0); }

#define NT3916_SEND_DATA(d)    { LCM_SendData(d, 0); }

#define NT3916_sendcommand1(command, data) { LCM_SendCmdData(command, data, 0);  }

#endif

#ifdef LCM_DMA
#define NT3916_SEND_LINE_DATA(buf_ptr, pPixel)                                             \
{                                                                                           \
    LCM_DMA_Write((uint32 *)buf_ptr,LCM_DATA_ADDR(0,0), pPixel * 2, DATA_SIZE_HALFWORD);    \
    buf_ptr += pPixel;                                                                      \
}
#else
#define NT3916_SEND_LINE_DATA(buf_ptr, pPixel)                                             \
{                                                                                           \
    do                                                                                      \
    {                                                                                       \
        NT3916_SEND_DATA( *(buf_ptr++) );                                                  \
        pPixel--;                                                                           \
    }while(pPixel > 0);                                                                     \
}
#endif 


void Delayms (uint32 ms)	
{
	uint32 t1, t2;
	
	t1 = t2 = SCI_GetTickCount ();
	
	do{
		t2 = SCI_GetTickCount ();
	}while (t2 < (t1+ms));
}
	

PUBLIC void NT3916_SetOffset(uint8 offset)
{
    OFFSET_X = offset;
}

void NT3916_reset(void)
{	
  
      NT3916_SEND_COMMAND(0x11);
      LCD_Wait(10);
      NT3916_SEND_COMMAND(0x20);
      NT3916_SEND_COMMAND(0x38);
      NT3916_SEND_COMMAND(0x13);
	  NT3916_SEND_COMMAND(0x3a);
	  NT3916_SEND_DATA(0x55);

	   NT3916_SEND_COMMAND(0xB6);//0000
	    NT3916_SEND_DATA(0x00); //C0
		 NT3916_SEND_DATA(0x00); //C0
	  NT3916_SEND_COMMAND(0x36);//0000
	  NT3916_SEND_DATA(0x00); //C0

	 NT3916_SEND_COMMAND(0x26);
	  NT3916_SEND_DATA(0x01);

	  NT3916_SEND_COMMAND(0xC7);
	  NT3916_SEND_DATA(0xBF);

	  NT3916_SEND_COMMAND(0xC0);
	  NT3916_SEND_DATA(0x05);
	  NT3916_SEND_DATA(0x05);
   	 NT3916_SEND_COMMAND(0xC5);
	  NT3916_SEND_DATA(0x40);
	  NT3916_SEND_DATA(0x48); //38
	  NT3916_SEND_COMMAND(0xC6);
	  NT3916_SEND_DATA(0x0E);


	  NT3916_SEND_COMMAND(0x29);
	  NT3916_SEND_COMMAND(0x2C);
 }


  /******************************************************************************/
//  Description:   Clear color LCD with one color
//	Global resource dependence: 
//  Author:         louis.wei
//	Note:
/******************************************************************************/
LOCAL void NT3916_Clear(
						uint32 color	//color to fill the whole lcd.
						)
{
	uint32 i;
	uint16 *buf_ptr = (uint16 *)LCD_GetLCDBuffer();
	
	for( i=0; i<(NT3916_HEIGHT * NT3916_WIDTH); i++)
	{
		*buf_ptr++ = color;
	}		

	NT3916_Invalidate();
}

#ifdef LCD_READDATA

//Test buffer
uint16 g_lcd_read_buffer[176*220];

/******************************************************************************/
//  Description:   Read GRAM content
//	Global resource dependence: 
//  Author:         Younger.yang
//	Note:
/******************************************************************************/
//if you want to read GRAM, you should pay attention to the setting of BGR 
//which will Reverse the order from R, G, B to B, G, R for GRAM data.
void NT3916_read(void)
{

    uint16 *buf_ptr = 0;
    uint8 left = 0,top = 0;
    uint16 address = 0;
    
    buf_ptr = g_lcd_read_buffer;
	
	address = (uint16) ( (((NT3916_WIDTH - 1 + OFFSET_X) & 0xFF ) << 8 ) | (OFFSET_X));	
	NT3916_sendcommand1(0x16, address);		// set horizon address

	address = (uint16) ( ((NT3916_HEIGHT-1) & 0xFF) << 8 );
	NT3916_sendcommand1(0x17, address); 	//  set vertical  address 

	// Set start RAM address (AC register)
	NT3916_sendcommand1(0x21, OFFSET_X);	

    for(top = 0;top < (NT3916_HEIGHT); top++)           
    {
        for(left = 0;left < (NT3916_WIDTH); left++)
        {   
            *(volatile uint32 *)LCM_IFMODE &= ~BIT_5;//LCM_RD 0 write for M3
            //NT3916_SEND_DATA(0);                    //LCM_RD 0 write for M2
  	        
  	        NT3916_set_start_address(left,top);//read address(hd66773 need it)
  	        
            NT3916_SEND_COMMAND(0x22);//read command       
            
            //Wait until AHB_fifo is empty
            LCM_WAIT_AHBFIFO_EMPTY
            
            *(volatile uint32 *)LCM_IFMODE |= BIT_5;//LCM_RD 1 read for M3
           // NT3916_SEND_DATA(BIT_18);              //LCM_RD 1 read for M2
            
            NT3916_SEND_DATA(BIT_18); //dummy read(hd66773 need it,others maybe needn’t)
            NT3916_SEND_DATA(BIT_18); //really read 
            
            //Wait until AHB_fifo is empty
            LCM_WAIT_AHBFIFO_EMPTY
                  
            *buf_ptr++ = *(volatile uint32 *)LCM_RDDATA;//read data from register
 
        }
    }

    //exit read,enter write mode
    *(volatile uint32 *)LCM_IFMODE &= ~BIT_5;//LCM_RD 0 write for M3
    //NT3916_SEND_DATA(0);                    //LCM_RD 0 write for M2
}

#endif


/******************************************************************************/
//  Description:   invalidate a rectang of in LCD
//	Global resource dependence: 
//  Author:         Jim.zhang
//	Note:
/******************************************************************************/
LOCAL ERR_LCD_E NT3916_Invalidate(void)
{
    register uint32 pPixel;
	register uint16 *buf_ptr = (uint16 *)LCD_GetLCDBuffer();	

	if (LCD_GetRefreshFlag() != TRUE )
	{
		return ERR_LCD_OPERATE_FAIL ;
	}
	
	NT3916_set_start_address (0x0, 0x0);
    
    NT3916_set_display_window (0x0, NT3916_WIDTH - 1, 0x0, NT3916_HEIGHT -1);

	NT3916_SEND_COMMAND(0x022); 			            // send data.
    
    pPixel = (NT3916_WIDTH) * (NT3916_HEIGHT);
    
    NT3916_SEND_LINE_DATA(buf_ptr, pPixel);

	return ERR_LCD_NONE;
}

/*****************************************************************************/
//  Description:    Get the lcd base information..
//	Global resource dependence: 
//  Author:         louis.wei
//	Note:
/*****************************************************************************/
LOCAL  ERR_LCD_E   NT3916_GetInfo(
								   LCD_INFO_T *lcd_info_ptr	//lcd information struct pointer
								   )
{
	if ( PNULL == lcd_info_ptr )
	{
		return ERR_LCD_POINTER_NULL;	
	}
	
	lcd_info_ptr->r_bitmask			= 0xf800;
	lcd_info_ptr->g_bitmask			= 0x07e0;
	lcd_info_ptr->b_bitmask			= 0x001f;
	lcd_info_ptr->bits_per_pixel	= 16;
	lcd_info_ptr->contrast_min		= 0x00;
	lcd_info_ptr->contrast_max   	= 63;
	lcd_info_ptr->contrast_defaut	= 0x0A;
	
	lcd_info_ptr->lcd_width		= NT3916_WIDTH;
	lcd_info_ptr->lcd_height	= NT3916_HEIGHT;
	lcd_info_ptr->lcdbuff_ptr	= (void *)LCD_GetLCDBuffer();
		
	return ERR_LCD_NONE;
}

/******************************************************************************/
//  Description:   Set the windows address to display, in this windows
//                 color is  refreshed.
//	Global resource dependence: 
//  Author:         Jim.zhang
//	Note:
/******************************************************************************/
__inline void NT3916_set_display_window(
	uint16 left, 	// start Horizon address
	uint16 right, 	// end Horizon address
	uint16 top, 		// start Vertical address
	uint16 bottom	// end Vertical address
	)
{
	uint16 address = 0;
    
    SCI_TRACE_LOW("NT3916_set_display_window:%d,%d,%d,%d",left,top,right,bottom);
	
	address = (uint16) ((((right & 0xFF) + OFFSET_X)<<8) | ((left & 0xFF) + OFFSET_X));
	NT3916_sendcommand1(0x2a, address);		// set horizon address

	address = (uint16) (((bottom & 0xFF)<<8) | (top & 0xFF));
	NT3916_sendcommand1(0x2b, address); 	//  set vertical  address position
}


/******************************************************************************/
//  Description:  Set start RAM address which is write to AC(Address
//                Counter) register.
//  Input:
//      left: start Horizon address of AC
//      top: start Vertical address of AC.
//  Return:
//      None.
//	Note:           
/******************************************************************************/
__inline void NT3916_set_start_address(
	uint16 left, 
	uint16 top
	)
{
	uint16 address = 0;
		
	address = (uint16) (((top & 0xFF)<<8) | ((left & 0xFF) + OFFSET_X));
	NT3916_sendcommand1(0x30, address);	// Set start RAM address (AC register)
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美一区在线| 欧美影院一区二区三区| 久久亚洲综合色一区二区三区| 视频一区视频二区中文| 欧美一级午夜免费电影| 日本欧美久久久久免费播放网| 91精品欧美福利在线观看| 麻豆91在线观看| 精品日韩欧美在线| 夫妻av一区二区| 中文字幕中文在线不卡住| 色综合久久99| 日韩av成人高清| 国产亚洲一区二区三区四区| 91香蕉视频mp4| 午夜成人免费电影| 久久久国产一区二区三区四区小说 | 日本一区二区高清| 亚洲精品一区二区三区影院| 欧美电影免费提供在线观看| 国产精品一二三区在线| 中文字幕亚洲一区二区va在线| 欧洲国内综合视频| 另类小说视频一区二区| 欧美国产日韩一二三区| 欧美亚洲动漫精品| 精品一区二区三区免费| 最新国产の精品合集bt伙计| 欧美日韩成人一区| 国产成人av自拍| 亚洲第一主播视频| 欧美激情一区在线| 欧美精品 日韩| 成人福利电影精品一区二区在线观看| 亚洲精品国产精华液| 精品免费视频.| 一本色道a无线码一区v| 国产一区二区三区免费播放| 亚洲精品免费播放| 久久久精品蜜桃| 欧美日韩视频在线一区二区 | 国产精品乱人伦中文| 欧美日韩一区二区在线观看视频| 激情综合色综合久久综合| 亚洲影视在线播放| 中文字幕不卡一区| 日韩欧美在线一区二区三区| 99国产精品国产精品久久| 老司机精品视频线观看86| 亚洲一区二区三区中文字幕在线| 国产日产欧美一区| 欧美成人艳星乳罩| 欧美精品v日韩精品v韩国精品v| 粉嫩一区二区三区性色av| 免费欧美在线视频| 亚洲最大的成人av| 一区在线播放视频| 国产网站一区二区三区| 日韩免费视频线观看| 欧美日韩亚洲综合一区| 一本高清dvd不卡在线观看| 国产aⅴ综合色| 国产主播一区二区| 久久精品国产免费| 免费av网站大全久久| 丝袜美腿亚洲一区| 亚洲国产精品久久久久秋霞影院| 亚洲图片激情小说| 亚洲手机成人高清视频| 国产精品视频你懂的| 久久精品亚洲麻豆av一区二区| 欧美xxxx老人做受| 欧美一区二区三区四区五区| 欧美老肥妇做.爰bbww视频| 欧美丝袜自拍制服另类| 欧美视频一区二| 欧美视频在线观看一区| 欧美在线观看你懂的| 在线免费不卡视频| 欧美主播一区二区三区| 欧洲精品在线观看| 欧美视频自拍偷拍| 在线观看91av| 日韩一区二区中文字幕| 欧美不卡在线视频| 久久久综合视频| 中文字幕电影一区| 亚洲三级在线免费| 色一情一乱一乱一91av| 欧美男人的天堂一二区| 亚洲第一综合色| 亚洲成av人片在www色猫咪| 亚洲国产欧美在线| 天涯成人国产亚洲精品一区av| 亚洲成人一区二区| 日韩**一区毛片| 久草这里只有精品视频| 国产91精品一区二区| 99久久精品国产精品久久| 色婷婷综合激情| 欧美伊人久久大香线蕉综合69| 欧美日韩国产小视频在线观看| 69久久夜色精品国产69蝌蚪网| 欧美变态口味重另类| 久久久精品中文字幕麻豆发布| 国产精品久久久久毛片软件| 一区二区国产视频| 毛片av一区二区| 成人综合婷婷国产精品久久免费| 91美女片黄在线观看91美女| 欧美日韩亚洲高清一区二区| 欧美一区二区三区男人的天堂| 久久伊99综合婷婷久久伊| 日韩美女久久久| 丝袜亚洲另类欧美| 国产91丝袜在线播放0| 在线视频一区二区三区| 精品成a人在线观看| 一区二区中文视频| 日本不卡123| proumb性欧美在线观看| 91精品国产综合久久香蕉的特点| 日本一区二区久久| 日韩av在线播放中文字幕| 成人黄色软件下载| 欧美日韩国产综合视频在线观看 | 日韩精品在线一区| 综合在线观看色| 麻豆传媒一区二区三区| 一本久道中文字幕精品亚洲嫩| 精品嫩草影院久久| 一区二区三区不卡视频| 精品中文字幕一区二区小辣椒| 色狠狠色狠狠综合| 国产亚洲欧美日韩俺去了| 舔着乳尖日韩一区| 91热门视频在线观看| 精品国产1区2区3区| 亚洲国产精品久久人人爱蜜臀 | av中文字幕不卡| 日韩一级大片在线观看| 一区二区三区四区在线播放 | 久久综合狠狠综合久久激情 | 欧美美女网站色| 国产欧美一区在线| 精品一区二区三区久久久| 欧美午夜电影网| 亚洲人成伊人成综合网小说| 国产成人在线看| 精品少妇一区二区三区在线播放| 图片区小说区国产精品视频| 91猫先生在线| 亚洲欧洲一区二区三区| 精品一区二区日韩| 蜜桃av一区二区三区电影| 欧美日韩一区二区在线观看| 日本伊人精品一区二区三区观看方式| 国产视频一区在线观看| 欧美精三区欧美精三区| 波多野结衣中文字幕一区二区三区| 五月婷婷综合激情| 亚洲香蕉伊在人在线观| 欧美国产欧美亚州国产日韩mv天天看完整| 91久久精品一区二区三| 粉嫩嫩av羞羞动漫久久久| 国产精品一区二区三区四区| 亚洲国产视频直播| 日韩欧美一区二区在线视频| 亚洲激情在线播放| 91精品福利视频| 亚洲欧洲制服丝袜| 色综合天天综合狠狠| 美女视频黄 久久| 69堂精品视频| 日本不卡视频在线观看| 日韩一区二区三区电影在线观看 | 在线电影欧美成精品| 爽爽淫人综合网网站| 91精品福利在线一区二区三区| 亚洲444eee在线观看| 91精品国产全国免费观看| 九九视频精品免费| 欧美国产丝袜视频| a在线播放不卡| 亚洲一卡二卡三卡四卡五卡| 制服丝袜激情欧洲亚洲| 精品一二三四区| 中文字幕av在线一区二区三区| 99re8在线精品视频免费播放| 亚洲精品精品亚洲| 欧美体内she精高潮| 91污在线观看| 久久婷婷一区二区三区| 午夜精品免费在线观看| 成人av手机在线观看| 亚洲精品自拍动漫在线| 欧美日韩国产一级片| 国产在线观看免费一区| 亚洲欧美电影一区二区| 69久久99精品久久久久婷婷|