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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? m128128.c

?? uCOS/uCGUI在2440上的移植
?? C
字號:
/****************************************************************************************
* 文件名:LCDDRIVE.C
* 功能:圖形液晶240*128驅動(型號為SMG240128A)。32K顯示存,0000H-7FFFH地址。顯示是橫向字節,高位
*      在前。
* 說明:圖形液晶采用T6963C為LCD控制芯片,內帶負壓產生器,單5伏供電,并行接口(使用LPC2210驅動)。
* 硬件連接: D0--D7 <===>  D0--D7
*           /WR     <===>  nWE
*           /RD     <===>  nOE
*           /CE     <===>  nCS3_1
*           C/D     <===>  A1
*
*           /RST    <===>  VCC
****************************************************************************************/

/*********************************************************************
 * INCLUDES
 */
#include "includes.h"

/*********************************************************************
 * CONSTANTS
 */
#define	 LOW					0
#define	 HIGH					1
//#define	 ESC_KEY				0x1b

#define  LCD_DISP_ON			0x3f						// Controls the display onor off. Internal status and 
#define  LCD_DISP_OFF			0x3e						// display RAM data is not affected.L:OFF, H:ON
#define  LCD_SET_X( X )			( 0x40 + X )
#define  LCD_SET_Y( Y )			( 0xb8 + Y )	
#define  LCD_DISP_START_L( L )	( 0xc0 + L )
#define  LCD_STATUS_BUSY		0x80
#define  LCD_STATUS_READ()		( 0x80 & LCD_DATA_BUS )

/*********************************************************************
 * MACROS
 */
#define  LCD_DATA_BUS			0
#define  LCD_CONTROL_BUS		0
#define  LCD_DATA_BUS_CON		0
#define  LCD_CONTROL_BUS_CON	0

#define  PAGE_ALL_S				( ( LCD_CONTROL_BUS & 0xff ) | 0x0f )
#define	 PAGE_ALL_DS			(   LCD_CONTROL_BUS & 0xf0          )
#define  PAGE_1					( ( LCD_CONTROL_BUS & 0xf0 ) | 0x01 )
#define	 PAGE_2					( ( LCD_CONTROL_BUS & 0xf0 ) | 0x02 )
#define  PAGE_3					( ( LCD_CONTROL_BUS & 0xf0 ) | 0x04 )
#define	 PAGE_4					( ( LCD_CONTROL_BUS & 0xf0 ) | 0x08 )

#define  LCD_DATA_BUS_INIT()    ( LCD_DATA_BUS_CON = ( ( LCD_DATA_BUS_CON & 0xffff0000 ) | 0x5555 ) )
#define  LCD_CONTROL_BUS_INIT() ( LCD_CONTROL_BUS_CON = 0x5555 )
				
#define	 CMD					( LCD_CONTROL_BUS & ~0x10 )
#define	 DAT					( LCD_CONTROL_BUS |  0x10 )
#define	 WRITE					( LCD_CONTROL_BUS & ~0x20 )
#define	 READ					( LCD_CONTROL_BUS |  0x20 )
#define	 ENABLE			   		( LCD_CONTROL_BUS & ~0x40 )
#define	 DISNABLE				( LCD_CONTROL_BUS |  0x40 )								
#define	 RESET					( LCD_CONTROL_BUS & ~0x80 )
#define	 WORK					( LCD_CONTROL_BUS |  0x80 )

#define	 LCD_PAGE_CS( PAGE_x )	( LCD_CONTROL_BUS = PAGE_x )//( LCD_CONTROL_BUS & 0xf0 ) | ( 0x01 << PAGE_x ) )
#define	 RS( x )				( LCD_CONTROL_BUS = x )
#define	 RW( x )				( LCD_CONTROL_BUS = x )
#define  CE( x )				( LCD_CONTROL_BUS = x )
#define  LCD_RESET( rst ) 		( LCD_CONTROL_BUS = rst ) 

/*********************************************************************
 * TYPEDEFS
 */
#define WRITE_IN_BUFFER	1
/*********************************************************************
 * GLOBAL VARIABLES
 */

/*********************************************************************
 * LOCAL VARIABLES
 */

/*********************************************************************
 * GLOBAL FUNCTIONS
 */
 
/*********************************************************************
 * LOCAL FUNCTIONS
 */
INT8U  	lcdWriteData( INT8U page, INT8U dat);
void 	LCD_WriteCommand(unsigned char page,unsigned char command);
void 	LCD_WriteData(unsigned char mode,unsigned char page,unsigned char data_in);
void 	set128128Addr(unsigned char mode,unsigned char x,unsigned char y);
void 	writeLcd128128Data(unsigned char mode,unsigned char x,unsigned char y,unsigned char data_in);
void  	LCD_Init(void);

/*********************************************************************

 *********************************************************************/

/***********************************************************************
 * 名稱:LCD_Init()
 * 功能:LCM初始化,將LCM初始化為純圖形模式,顯示起始地址為0x0000,。
 * 入口參數:無
 * 出口參數:無
 * 說明:函數會設置LCM數據總線為輸出方式
 ***********************************************************************/
LcdDispArea_s	DispArea;
LcdDispCursor_s  LcdCursor;
void  LCD_Init(void)
{  	
	

}
/***********************************************************************
 * 名稱:LCD_WriteData()
 * 功能:寫1字節數據子程序。會先判斷狀態字。
 * 入口參數:dat  		要寫入LCM的數據
 * 出口參數:操作出錯返回0,否則返回1
 ***********************************************************************/
INT8U  lcdWriteData( INT8U page, INT8U dat)
{ 
	
    return(1);
}
/***********************************************************************
 * 原型:void wr_12864_data(unsigned char mode,unsigned char i,unsigned char data_in)
 * 功能:給12864寫一個數據
 * 入口參數:mode:寫入方式:1直接寫入,0取反后寫入
 *           i:選擇:1左半屏,2右半屏
 *          data_in:要寫入的數據
 * 出口參數:無
 ***********************************************************************/
void LCD_WriteData(unsigned char mode,unsigned char page,unsigned char data_in)
{
	if(mode)
		lcdWriteData( page, data_in );
	else
		lcdWriteData( page, ~data_in);
}
/***********************************************************************
 * 原型:void wr_12864_order(unsigned char i,unsigned char order)
 * 功能:給12864寫一個指令
 * 入口參數:i:選擇 1左半屏,2右半屏,3同時左右屏
 *           order:指令
 * 出口參數:無
 ***********************************************************************/
void LCD_WriteCommand(unsigned char page,unsigned char command)
{

}


/***********************************************************************
 * 原型:void set_12864_addr(unsigned char mode,unsigned char x,unsigned char y)
 * 功能:設置lcd12864顯示座標
 * 入口參數:mode:地址寫入方式:1只設置x地址,2只設置y地址,3同時設置x和y地址
 *           x:液晶x軸座標(0到127)
 *           y:液晶y軸座標(0到15)
 * 出口參數:無
 ***********************************************************************/
void set128128Addr(unsigned char addr_mode,unsigned char x,unsigned char y)
{
	INT8U page;
    switch(addr_mode)
	{
	    case SET_X:		// 只寫X坐標
		if ( x > 63 )
		{
			if( y > 7 )
				page = PAGE_4;
			else
				page = PAGE_2;
			LCD_WriteCommand( page, LCD_SET_X( x-64 ) );
			break;
		}
		else
		{
			if( y > 7 )
				page = PAGE_3;
			else
				page = PAGE_1;
			LCD_WriteCommand( page, LCD_SET_X( x ) );
		}
		break;
		
		case SET_Y:		// 只寫Y坐標
		if( y > 7 )
		{
			LCD_WriteCommand( PAGE_3, LCD_SET_Y( y-8 ) );
			LCD_WriteCommand( PAGE_4, LCD_SET_Y( y-8 ) );		
			break;
		}
		else
		{
			LCD_WriteCommand( PAGE_1, LCD_SET_Y( y ) );
			LCD_WriteCommand( PAGE_2, LCD_SET_Y( y ) );
		}
		break;
		
		case SET_X_Y:	// 同時寫X和Y坐標
		if( y > 7 )
		{
			LCD_WriteCommand( PAGE_3, LCD_SET_Y( y-8 ) );
			LCD_WriteCommand( PAGE_4, LCD_SET_Y( y-8 ) );		
		}
		else
		{
			LCD_WriteCommand( PAGE_1, LCD_SET_Y( y ) );
			LCD_WriteCommand( PAGE_2, LCD_SET_Y( y ) );
		}
		if ( x > 63 )
		{
			if( y > 7 )
				page = PAGE_4;
			else
				page = PAGE_2;
			LCD_WriteCommand( page, LCD_SET_X( x-64 ) );
			break;
		}
		else
		{
			if( y > 7 )
				page = PAGE_3;
			else
				page = PAGE_1;
			LCD_WriteCommand( page, LCD_SET_X( x ) );
		}
		break;
		default: break;
	}
}

/***********************************************************************
 * 原型:void open_12864(unsigned char mode)
 * 功能:12864開顯示
 * 入口參數:page:選擇:1左半屏,2右半屏,3左右屏
 * 出口參數:無
 ***********************************************************************/
void LCD_On  (void) { LCD_WriteCommand( PAGE_ALL_S,LCD_DISP_ON); }

/***********************************************************************
 * 原型:void shut_12864(unsigned char mode)
 * 功能:12864關顯示
 * 入口參數:page:選擇:1左半屏,2右半屏,3左右屏
 * 出口參數:無
 ***********************************************************************/
void LCD_Off (void) { LCD_WriteCommand(PAGE_ALL_S,LCD_DISP_OFF); }

/***********************************************************************
 * 原型:void write_lcd12864_data( unsigned char mode,unsigned char x,
 *								   unsigned char y,unsigned char data_in)
 * 功能:給12864指定座標寫數據
 * 入口參數:mode 寫入方式:1直接寫入,0取反后寫入
 *           x    屏幕x軸座標(0到127)
 *           y    屏幕y軸座標(0到7)
 *           data_in 要寫入的數據
 * 出口參數:無
 ***********************************************************************/
void writeLcd128128Data(unsigned char mode,unsigned char x,unsigned char y,unsigned char data_in)
{
	INT8U page;
    if( y > 7 )
    {
    	if( x > 63 )
    	{
    		page = PAGE_4;
    		x -= 64;
    	}
    	else 
    	{
    		page = PAGE_3;
    	}
    	y -= 8;
    }
	else
	{
		if( x > 63 )
		{
			page = PAGE_2;
			x -= 64;
		}
		else
		{
			page = PAGE_1;
		}
	}
	LCD_WriteCommand( page, LCD_SET_Y( y ) );
	LCD_WriteCommand( page, LCD_SET_X( x ) );
	LCD_WriteData( mode, page, data_in );
}


/*------------------ esay GUI ---------------------*/
INT8U lcd_buffer[ 16 ][ 128 ];
INT8U Xy_Map=0;

/******************************************************************************************************************
* 函數名稱:LCM12864_ReadByte()
* 功    能:從顯示緩沖區讀取指定點上的數據。
* 入口參數:x 		x坐標值(0-127)
*           y       y坐標值(0-63)
* 出口參數:返回該點上的字節數據。
*******************************************************************************************************************/
INT8U  LCM128128_ReadByte(INT32U x, INT32U y)//修改:把INT8U改成int
{ 
  /* 參數過濾 */						//修改:去掉參數過濾
  //x = x&0x7f;				                     
  //y = y&0x3f;

  y = y>>3;
  return (lcd_buffer[y][x]);                   // 返回顯示緩沖區指定點上的數據
}

/***********************************************************************
 * 函數名稱:GUI_FillSCR()
 * 功    能:全屏填充。填充顯示緩沖區及LCM12864。
 * 入口參數:data      填充的數據
 * 出口參數:無
 ***********************************************************************/
void  GUI_FillSCR(INT8U data)
{
  	INT32U x;
  	INT32U y;
   
  	/* 填充顯示緩沖區 */
  	for( y = 0; y<(GUI_LCM_YMAX>>2); y++)
    {  
      	for(x=0; x<GUI_LCM_XMAX; x++)
          gui_disp_buf[y][x] = data;
    }
}

INT8U const DEC_HEX_TAB[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

/***********************************************************************
 * 函數名稱:GUI_Point()
 * 功    能:在指定位置上畫點。
 * 入口參數:x        指定點所在列的位置
 *           y        指定點所在行的位置 
 *           color    對于黑白色或藍白色LCM12864,為0時滅,為1時顯示
 * 出口參數:返回值為1時表示操作成功,為0時表示操作失敗。
 ***********************************************************************/
INT8U  GUI_Point( INT32U x, INT32U y, INT16U color )
{
  INT32U   bak; 
  /* 參數過濾 */
  if( x >= GUI_LCM_XMAX )  return(0);
  if( y >= GUI_LCM_YMAX )  return(0);
  switch( Xy_Map )
  {
      //case 0:break;
      case 1:
      bak=x;
      x=y;
      y=GUI_LCM_XMAX-bak-1;      
      break;
      case 2:
      x=GUI_LCM_XMAX-x-1;
      y=GUI_LCM_YMAX-y-1;
      break;
      case 3:break;
  }
  /* 設置相應的點為1或0 */
   bak = LCM128128_ReadByte( x, y ); 
  if( 0 == color )
   {  
     bak &= (~DEC_HEX_TAB[y&0x07]);
   }
  else
   {  
     bak |= DEC_HEX_TAB[y&0x07];
   }
  y=y>>3;   
                                    
  lcd_buffer[y][x] = bak;
  
  return (1);
}

/***********************************************************************
 * 函數名稱:GUI_ReadPoint()
 * 功    能:讀取指定點的顏色。
 * 入口參數:x        指定點所在列的位置
 *           y        指定點所在行的位置
 *           ret      保存顏色值的指針
 * 出口參數:返回0表示指定地址超出緩沖區范圍。
 * 說    明:對于單色,設置ret的d0位為1或0
 ***********************************************************************/
INT8U GUI_ReadPoint( int x, int y, int *ret )
{
  INT32U  bak;
  /* 參數過濾 */
  if( x >= GUI_LCM_XMAX ) return(0);
  if( y >= GUI_LCM_YMAX ) return(0);
  switch(Xy_Map)
  {
      case 0:break;
      case 1:
      bak=x;
      x=y;
      y=GUI_LCM_XMAX-bak-1;      
      break;
      case 2:
      x=GUI_LCM_XMAX-x-1;
      y=GUI_LCM_YMAX-y-1;
      break;
      case 3:break;
  } 
  bak = LCM128128_ReadByte(x,y);
  if( (bak & ( DEC_HEX_TAB[ y & 0x07 ] ) ) == 0 )
     *ret = 0x00;
  else  
     *ret = 0x01;
   
  return(1);
}

/***********************************************************************
 * 函數名稱:Refresh_FrameBuffer()
 * 功    能:刷新屏幕。
 * 入口參數:無
 * 出口參數:無
 ***********************************************************************/
INT8U RefreshFrameBuffer(INT8U disp_mode )
{
    INT8U x = 0;
    INT8U y = 0;
    INT8U page;
    for( y = 0; y <= 15; y++ )
	{
        set128128Addr( SET_X_Y, 0, y );
        for( x = 0; x <= 127; x++ )
		{
		    if( x == 0 )
            set128128Addr( SET_X_Y, 0, y );
		    if(x<64)
		    {
		    	if( y > 7 )
		    		page = PAGE_3;
		    	else 
		    		page = PAGE_1;
				LCD_WriteData( disp_mode, page, lcd_buffer[y][x] );
			}
			if(x==64)
            set128128Addr(SET_X_Y,x,y);			
			if(x>63)
			{
				if( y > 7 )
		    		page = PAGE_4;
		    	else 
		    		page = PAGE_2;
		    	LCD_WriteData( disp_mode, page, lcd_buffer[y][x] );
		    } 
		}
	}      
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品你懂的在线欣赏| 国产精品美女久久福利网站| 国产精品系列在线播放| 日本一区二区免费在线 | 韩日精品视频一区| 亚洲欧美综合在线精品| 日韩免费一区二区| 色婷婷综合在线| 精品一区二区三区在线播放| 亚洲一线二线三线视频| 久久亚洲综合色| 宅男在线国产精品| 成人免费毛片app| 免费av成人在线| 亚洲欧美日韩中文字幕一区二区三区| 日韩欧美黄色影院| 色噜噜久久综合| 国产成人精品一区二区三区网站观看| 日韩激情av在线| 亚洲精品综合在线| 久久久久久日产精品| 欧美日韩精品是欧美日韩精品| av一二三不卡影片| 免费看欧美女人艹b| 丝袜亚洲另类欧美| 亚洲激情在线播放| 中国av一区二区三区| 精品国产91九色蝌蚪| 欧美日韩亚洲不卡| 在线观看区一区二| 99久久精品国产网站| 国产一区在线观看视频| 久久电影国产免费久久电影| 男男视频亚洲欧美| 五月婷婷激情综合| 一区二区免费视频| 亚洲精品乱码久久久久久| 日韩毛片一二三区| 国产欧美日产一区| 国产日本欧洲亚洲| 国产精品天美传媒| 久久亚洲私人国产精品va媚药| 欧美一区二区成人| 日韩午夜小视频| 欧美va日韩va| 精品久久久影院| 日韩视频在线你懂得| 日韩一区二区三区在线观看| 欧美v亚洲v综合ⅴ国产v| 精品精品欲导航| 精品福利av导航| 久久久精品欧美丰满| 国产日韩欧美a| 国产精品色婷婷| 亚洲摸摸操操av| 午夜精品一区二区三区三上悠亚| 日日摸夜夜添夜夜添国产精品| 亚洲国产精品一区二区www在线| 亚洲18女电影在线观看| 美国av一区二区| 国产成人啪免费观看软件| 99久久国产综合精品麻豆| 欧美在线影院一区二区| 91精品欧美久久久久久动漫| 久久婷婷色综合| 中文字幕在线不卡一区| 亚洲高清免费视频| 韩国一区二区在线观看| 不卡视频免费播放| 欧美视频一二三区| 日韩情涩欧美日韩视频| 国产精品视频一二三区| 亚洲影视在线播放| 国产一区91精品张津瑜| 91视频国产资源| 日韩欧美一级特黄在线播放| 欧美国产日产图区| 亚洲国产精品视频| 国产高清一区日本| 欧美性大战久久久久久久| 欧美刺激午夜性久久久久久久| 日本一区二区免费在线| 亚洲成人免费观看| 国产ts人妖一区二区| 欧美日韩国产片| 日本一区二区三区视频视频| 亚洲成人av中文| 丰满岳乱妇一区二区三区| 欧美午夜精品免费| 国产午夜精品久久久久久免费视 | 亚洲国产成人在线| 亚洲成人午夜电影| 成人av电影在线| 欧美一级片在线看| 亚洲欧美日韩在线| 九九精品视频在线看| 在线观看日韩精品| 亚洲免费av观看| 国产精品亚洲一区二区三区妖精| 欧美日韩国产免费一区二区| 中文字幕一区二区三区乱码在线| 日本va欧美va精品| 在线观看一区二区视频| 欧美激情在线看| 狠狠色丁香婷综合久久| 欧美日韩午夜影院| 亚洲免费在线视频| 成人激情综合网站| 久久久精品综合| 久久国产三级精品| 欧美日韩视频在线第一区| 亚洲人123区| 99视频国产精品| 久久久久久电影| 韩国欧美一区二区| 日韩午夜激情视频| 午夜精品久久久久久久99水蜜桃 | 国产精品久线观看视频| 另类小说图片综合网| 777午夜精品视频在线播放| 亚洲黄色片在线观看| 99精品欧美一区二区三区综合在线| 久久久久国产一区二区三区四区| 蜜桃av噜噜一区| 日韩欧美视频一区| 日韩高清在线一区| 欧美精品三级在线观看| 亚洲午夜影视影院在线观看| 在线视频你懂得一区二区三区| 成人免费在线观看入口| 99国产欧美另类久久久精品| 国产精品久久久久久久久图文区| 成人亚洲一区二区一| 国产精品日韩精品欧美在线| 成人午夜视频免费看| 中文字幕欧美日本乱码一线二线| 国产成人福利片| 国产欧美日韩在线观看| 国产成人一区在线| 欧美激情一区三区| 白白色亚洲国产精品| 亚洲欧美在线观看| 色天使久久综合网天天| 亚洲午夜日本在线观看| 欧美久久久久久蜜桃| 日韩高清不卡在线| 日韩美一区二区三区| 国产精品一区二区91| 欧美激情中文不卡| 91影视在线播放| 亚洲午夜成aⅴ人片| 欧美福利一区二区| 激情五月婷婷综合网| 国产亚洲欧洲997久久综合| www.av亚洲| 亚洲午夜电影在线观看| 日韩一区二区在线免费观看| 国产曰批免费观看久久久| 国产精品美女久久久久久久久久久 | 91美女片黄在线观看91美女| 亚洲免费观看高清| 7777精品伊人久久久大香线蕉经典版下载| 五月激情综合网| 久久人人超碰精品| www..com久久爱| 午夜伦理一区二区| 久久久精品欧美丰满| 91麻豆蜜桃一区二区三区| 日韩 欧美一区二区三区| 欧美精品一区男女天堂| 99精品欧美一区二区三区综合在线| 亚洲国产欧美另类丝袜| 2欧美一区二区三区在线观看视频| 国产99久久久精品| 午夜精品视频在线观看| 久久久精品黄色| 欧美日韩免费观看一区二区三区| 国精品**一区二区三区在线蜜桃| 亚洲日韩欧美一区二区在线| 欧美一区三区四区| 成人av网址在线观看| 奇米精品一区二区三区四区 | 激情六月婷婷综合| 国产精品久99| 欧美一二三区在线| av资源网一区| 激情综合色丁香一区二区| 日韩久久一区二区| 精品久久久久一区二区国产| 日本道精品一区二区三区| 国产一区三区三区| 天堂蜜桃一区二区三区| 国产精品久久久久久福利一牛影视| 在线电影欧美成精品| 99视频超级精品| 国产综合久久久久久久久久久久| 一区二区三区久久| 欧美高清在线精品一区| 日韩欧美中文字幕制服| 欧美三电影在线|