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

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

?? lcddriver.c

?? 基于ARM7的開發板的彩色液晶屏繪圖試驗程序
?? C
字號:
/****************************************************************************************
* 文件名:LCDDRIVE.C
* 功能:通過操作S1D13503,控制256色RGB偽彩液晶顯示屏。
* 說明:使用LPC2200芯片控制,8位總線接口。
*       S1D13503的寄存器地址為0x838000xx,顯示存儲器的地址為0x834xxxxx。
* 作者:黃紹斌
* 日期:2005.05.26
****************************************************************************************/
#include "config.h"

/* 定義顯示緩沖區(可根據情況定義或直接使用LCM顯示存儲空間) */
TCOLOR  gui_disp_buf[GUI_LCM_YMAX][GUI_LCM_XMAX];

uint8 const  INIT_TAB[14] = { 0x00, // 寄存器0 -- 00000000B (正常工作模式,即非測試模式)
							  0xBD,	// 寄存器1 -- 10111101B (模式控制:打開顯示,單屏,屏蔽XSCL水平非顯示周期輸出,使能LCDENB,彩色8位LCD數據--無XCSL2,16位顯示存儲數據總線方式)  
							  159,	// 寄存器2 -- 159 (行字節控制)(每行顯示占用的存儲器字節數,即列參數)
							  0x0E, // 寄存器3 -- 00001110B (非節功模式,256彩色方式)
							  239,  // 寄存器4 -- 239 (總行數)
							  0,	// 寄存器5 -- 0 (WF翻轉周期,為0時表示每一幀WF輸出翻轉一次)
							  0x00,	// 寄存器6 -- 00H (第一屏顯示RAM地址低8位)
							  0x00, // 寄存器7 -- 00H (第一屏顯示RAM地址高8位)
							  0x00,	// 寄存器8 -- 00H (第二屏顯示RAM地址低8位)
							  0x00, // 寄存器9 -- 00H (第二屏顯示RAM地址高8位)
							  239,  // 寄存器A -- 239 (顯示一區占用行數)
							  0, 	// 寄存器B -- 0 (顯示一區占用行數,高2位)
							  10,	// 寄存器C -- 10 (水平默認不顯示周期) 
							  0		// 寄存器D -- 0 (顯示域冗余寬度,正常操作模式)
                            };                           
/****************************************************************************
* 名稱:S1D13503_Init()
* 功能:初始化S1D13503。320*240 256色單屏彩屏。
* 入口參數:無
* 出口參數:無
* 說明:本子程序對S1D13503寄存器0--D進行初始化(使用查表方法)
****************************************************************************/
void  S1D13503_Init(void)
{  volatile uint16  *REG_Point;
   uint8  i; 

   REG_Point = (void *) S1D13503_REG;
   for(i=0; i<14; i++)				// 共初始化14個寄存器
   {  *REG_Point = INIT_TAB[i];		// 查表取出數據,然后賦值給S1D13503相應的寄存器,實現初始化
      REG_Point++;					// 指向下一寄存器
   }
}



uint8 const  LUT_RED_TAB[16] = { 0, 3, 5, 7, 9, 11, 13, 15,
                                 0, 3, 5, 7, 9, 11, 13, 15
                               };
uint8 const  LUT_GRN_TAB[16] = { 0, 3, 5, 7, 9, 11, 13, 15,
                                 0, 3, 5, 7, 9, 11, 13, 15
                               };
uint8 const  LUT_BLU_TAB[16] = { 0, 6, 10, 15,
                                 0, 6, 10, 15,
                                 0, 6, 10, 15, 
                                 0, 6, 10, 15
                               };                                                              
/****************************************************************************
* 名稱:S1D13503_LutInit()
* 功能:初始化S1D13503的調色板,紅、綠基色設置為0、3、5、7、9、11、13、15,
*      藍基色設置為0、6、10、15。
* 入口參數:無
* 出口參數:無
* 說明:使用
****************************************************************************/
void  S1D13503_LutInit(void)
{  volatile uint16  *REG_Point1;
   volatile uint16  *REG_Point2;
   uint8  i; 
   
   REG_Point1 = (void *) S1D13503_REG;
   REG_Point1 += 0x0E;
   
   REG_Point2 = (void *) S1D13503_REG;	
   REG_Point2 += 0x0F;
   
   for(i=0; i<16; i++) 
   {  *REG_Point1 = i;				// 設置為自動更換存取方式,設置地址
      *REG_Point2 = LUT_RED_TAB[i];	// 設置紅色調色板
      *REG_Point2 = LUT_GRN_TAB[i];	// 設置綠色調色板
      *REG_Point2 = LUT_BLU_TAB[i];	// 設置藍色調色板
   }
}


/***********************************************************************
* 名稱:LCD_Initialize()
* 功能:LCM初始化。將LCM初始化為純圖形模式,顯示起始地址為0x0000。
* 入口參數:無
* 出口參數:無
* 說明:
***********************************************************************/
void  LCD_Initialize(void)
{  S1D13503_Init();										// 初始化LCM工作模式			
   S1D13503_LutInit();									// 初始化調色板
}


/***********************************************************************
* 名稱:LCD_FillAll()
* 功能:LCD填充。以圖形方式進行填充,起始地址為0x0000。
* 入口參數:dat		要填充的顏色數據
* 出口參數:無
***********************************************************************/
void  LCD_FillAll(TCOLOR dat)
{  volatile uint16  *DAT_Point;
   uint32  i, j; 

   /* 開始復制填充數據 */
   DAT_Point = (void *) S1D13503_DAT;					// 置地址指針
   for(i=0; i<GUI_LCM_YMAX; i++)						// 歷遍所有行
   {  for(j=0; j<GUI_LCM_XMAX; j++)						// 歷遍所有行
      {  *DAT_Point++ = dat;
	  }
   }
}


/****************************************************************************
* 名稱:LCD_UpdatePoint()
* 功能:在指定位置上畫點,刷新某一點。
* 入口參數:x		指定點所在列的位置
*           y		指定點所在行的位置
* 出口參數:無
* 說明:操作失敗原因是指定地址超出有效范圍。
****************************************************************************/
void  LCD_UpdatePoint(uint32 x, uint32 y)
{  volatile uint16  *DAT_Point;
   uint32  addr;
   uint32 x1, y1;    
   
   x1 = GUI_LCM_XMAX - x - 1;       // 對于9111屏有效
   y1 = GUI_LCM_YMAX - y - 1;       // 對于9111屏有效
 
   /* 找出目標地址 */
   addr = y1*GUI_LCM_XMAX + x1;
   DAT_Point = (void *) S1D13503_DAT;
   DAT_Point += addr;
   
   *DAT_Point = gui_disp_buf[y][x];						// 輸出數據 
}




/****************************************************************************
*                    與LCM相關的GUI接口函數
****************************************************************************/


/****************************************************************************
* 名稱:GUI_FillSCR()
* 功能:全屏填充。直接使用數據填充顯示緩沖區。
* 入口參數:dat		填充的數據
* 出口參數:無
* 說明:用戶根據LCM的實際情況編寫此函數。
****************************************************************************/
void  GUI_FillSCR(TCOLOR dat)
{  uint32  i, j; 

   /* 填充緩沖區 */
   for(i=0; i<GUI_LCM_YMAX; i++)		// 歷遍所有行
   {  for(j=0; j<GUI_LCM_XMAX; j++)		// 歷遍所有行
      {  gui_disp_buf[i][j] = dat;
	  }
   }
   
   /* 填充LCM */
   LCD_FillAll(dat);
}


/****************************************************************************
* 名稱:GUI_Initialize()
* 功能:初始化GUI,包括初始化顯示緩沖區,初始化LCM并清屏。
* 入口參數:無
* 出口參數:無
* 說明:用戶根據LCM的實際情況編寫此函數。
****************************************************************************/
void  GUI_Initialize(void)
{  LCD_Initialize();					// 初始化LCM模塊工作模式,純圖形模式
   GUI_FillSCR(0x00);					// 初始化緩沖區為0x00,并輸出屏幕(清屏)
}


/****************************************************************************
* 名稱:GUI_ClearSCR()
* 功能:清屏。
* 入口參數:無
* 出口參數:無
* 說明:用戶根據LCM的實際情況編寫此函數。
****************************************************************************/
void  GUI_ClearSCR(void)
{  GUI_FillSCR(0x00);
}



/****************************************************************************
* 名稱:GUI_Point()
* 功能:在指定位置上畫點。
* 入口參數: x		指定點所在列的位置
*           y		指定點所在行的位置
*           color	顯示顏色(對于黑白色LCM,為0時滅,為1時顯示)
* 出口參數:返回值為1時表示操作成功,為0時表示操作失敗。(操作失敗原因是指定地址超出有
*          效范圍)
* 說明:用戶根據LCM的實際情況編寫此函數。對于單色,只有一個位有效,則要使用左移的方法
*      實現point_dat = (point_dat&MASK_TAB [i]) | (color<<n),其它位數的一樣
*      處理。
****************************************************************************/
uint8  GUI_Point(uint32 x, uint32 y, TCOLOR color)
{  /* 參數過濾 */
   if(x>=GUI_LCM_XMAX) return(0);
   if(y>=GUI_LCM_YMAX) return(0);
   
   /* 設置緩沖區相應的點 */
   gui_disp_buf[y][x] = color;

   /* 刷新顯示 */
   LCD_UpdatePoint(x, y);
   return(1);
}


/****************************************************************************
* 名稱:GUI_ReadPoint()
* 功能:讀取指定點的顏色。
* 入口參數:x			指定點所在列的位置
*          y		指定點所在行的位置
*          ret		保存顏色值的指針
* 出口參數:返回0時表示指定地址超出有效范圍。
* 說明:對于單色,設置ret的d0位為1或0,4級灰度則為d0、d1有效,8位RGB則d0--d7有效,
*      RGB結構則R、G、B變量有效。
****************************************************************************/
int  GUI_ReadPoint(uint32 x, uint32 y, TCOLOR *ret)
{  /* 參數過濾 */
   if(x>=GUI_LCM_XMAX) return(0);
   if(y>=GUI_LCM_YMAX) return(0);
  
   /* 取得該點顏色(用戶自行更改) */ 
   *ret = gui_disp_buf[y][x];
   
   return(1);
}


/****************************************************************************
* 名稱:GUI_HLine()
* 功能:畫水平線。
* 入口參數: x0		水平線起點所在列的位置
*           y0		水平線起點所在行的位置
*           x1      水平線終點所在列的位置
*           color	顯示顏色(對于黑白色LCM,為0時滅,為1時顯示)
* 出口參數:無
* 說明:對于單色、4級灰度的液晶,可通過修改此函數作圖提高速度,如單色LCM,可以一次更
*      新8個點,而不需要一個點一個點的寫到LCM中。
****************************************************************************/
void  GUI_HLine(uint32 x0, uint32 y0, uint32 x1, TCOLOR color) 
{  uint32  bak;

   if(x0>x1) 						// 對x0、x1大小進行排列,以便畫圖
   {  bak = x1;
      x1 = x0;
      x0 = bak;
   }
   
   do
   {  GUI_Point(x0, y0, color);		// 逐點顯示,描出垂直線
      x0++;
   }while(x1>=x0);
}


/****************************************************************************
* 名稱:GUI_RLine()
* 功能:畫垂直線。
* 入口參數: x0		垂直線起點所在列的位置
*           y0		垂直線起點所在行的位置
*           y1      垂直線終點所在行的位置
*           color	顯示顏色
* 出口參數:無
* 說明:對于單色、4級灰度的液晶,可通過修改此函數作圖提高速度,如單色LCM,可以一次更
*      新8個點,而不需要一個點一個點的寫到LCM中。
****************************************************************************/
void  GUI_RLine(uint32 x0, uint32 y0, uint32 y1, TCOLOR color) 
{  uint32  bak;

   if(y0>y1) 						// 對y0、y1大小進行排列,以便畫圖
   {  bak = y1;
      y1 = y0;
      y0 = bak;
   }
   do
   {  GUI_Point(x0, y0, color);		// 逐點顯示,描出垂直線
      y0++;
   }while(y1>=y0);	
}



/****************************************************************************
* 名稱:GUI_CmpColor()
* 功能:判斷顏色值是否一致。
* 入口參數:color1		顏色值1
*		   color2		顏色值2
* 出口參數:返回1表示相同,返回0表示不相同。
* 說明:由于顏色類型TCOLOR可以是結構類型,所以需要用戶編寫比較函數。
****************************************************************************/
//int  GUI_CmpColor(TCOLOR color1, TCOLOR color2)
//{  if(color1==color2) return(1);
//     else  return(0);
//}


/****************************************************************************
* 名稱:GUI_CopyColor()
* 功能:顏色值復制。
* 入口參數:color1		目標顏色變量
*		   color2		源顏色變量
* 出口參數:無
* 說明:由于顏色類型TCOLOR可以是結構類型,所以需要用戶編寫復制函數。
****************************************************************************/
//void  GUI_CopyColor(TCOLOR *color1, TCOLOR color2)
//{  *color1 = color2;
//}















?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产高清亚洲一区| 91在线观看一区二区| 福利视频网站一区二区三区| 在线亚洲高清视频| 精品国偷自产国产一区| 一区二区三区在线观看动漫| 国产一区91精品张津瑜| 欧美日韩高清一区二区不卡| 国产精品素人一区二区| 久久精工是国产品牌吗| 欧美特级限制片免费在线观看| 国产精品天干天干在观线| 精品写真视频在线观看| 91精品国产综合久久久久久久久久| 国产精品高潮呻吟久久| 国产精品亚洲一区二区三区妖精 | 国产毛片一区二区| 91麻豆精品91久久久久久清纯| 亚洲精品中文字幕在线观看| 成人成人成人在线视频| 久久久蜜桃精品| 久久精品国产一区二区| 51精品久久久久久久蜜臀| 一区二区三区在线观看视频| 9人人澡人人爽人人精品| 久久看人人爽人人| 老色鬼精品视频在线观看播放| 欧美精品久久天天躁| 亚洲超碰精品一区二区| 欧美怡红院视频| 亚洲国产视频在线| 欧美私模裸体表演在线观看| 亚洲福利一区二区三区| 欧美日韩中字一区| 婷婷丁香激情综合| 91精品国产一区二区三区香蕉| 偷拍与自拍一区| 欧美精品aⅴ在线视频| 日韩高清一级片| 欧美本精品男人aⅴ天堂| 精品一区二区三区免费观看| 久久久久久99精品| a亚洲天堂av| 亚洲一区二区四区蜜桃| 欧美日韩综合在线| 久久福利资源站| 国产午夜亚洲精品理论片色戒| 大美女一区二区三区| 亚洲欧洲日韩在线| 欧美日韩在线综合| 精品午夜一区二区三区在线观看| 26uuu精品一区二区三区四区在线| 国产麻豆精品theporn| 国产三级精品三级在线专区| aaa国产一区| 天天色天天操综合| 2022国产精品视频| 91视频xxxx| 日本欧美大码aⅴ在线播放| 久久久一区二区三区| 91在线视频18| 美女网站色91| 欧美国产日韩精品免费观看| 色婷婷精品大在线视频| 日韩在线观看一区二区| 国产天堂亚洲国产碰碰| 在线观看日韩国产| 国产在线精品一区二区不卡了| 成人免费一区二区三区视频| 欧美伦理视频网站| 成人性视频网站| 日韩制服丝袜av| 国产精品久久久99| 欧美一区日韩一区| 91色porny| 国内久久精品视频| 亚洲成人免费在线| 中文字幕第一区综合| 欧美精品日韩综合在线| av不卡免费电影| 国产一区二区三区四区五区美女| 一区二区欧美国产| 欧美激情一区二区| 欧美大片国产精品| 精品视频资源站| 91免费版在线| 福利91精品一区二区三区| 日韩av不卡在线观看| 成人免费一区二区三区视频| 久久久久久久久久久黄色| 91精品国产丝袜白色高跟鞋| 91国在线观看| 99视频精品在线| 国产成人av福利| 久久aⅴ国产欧美74aaa| 首页国产欧美久久| 一区二区成人在线观看| 国产精品你懂的| 精品入口麻豆88视频| 在线播放日韩导航| 欧美日韩国产一二三| 91猫先生在线| 91在线观看视频| 色综合久久久久| 色综合天天在线| 国产91丝袜在线播放| 国产精品一区专区| 精品一区二区三区蜜桃| 麻豆国产精品777777在线| 日韩精品视频网站| 日韩av一级电影| 亚洲成人av福利| 天堂成人免费av电影一区| 亚洲成a人在线观看| 亚洲成人av福利| 日韩中文字幕麻豆| 蜜桃av噜噜一区二区三区小说| 日本不卡一区二区三区高清视频| 亚洲免费观看高清完整版在线观看 | 亚洲黄色免费电影| 国产精品久久毛片av大全日韩| 国产性色一区二区| 国产精品日韩精品欧美在线| 国产精品无人区| 亚洲欧美日韩一区二区| 一级中文字幕一区二区| 亚洲国产成人精品视频| 亚欧色一区w666天堂| 日韩av一区二区三区四区| 久久99精品久久久久久动态图 | a在线播放不卡| 欧洲一区二区三区在线| 欧美性生交片4| 日韩欧美一卡二卡| 久久美女艺术照精彩视频福利播放| 国产欧美一二三区| 亚洲美女视频在线观看| 三级影片在线观看欧美日韩一区二区| 日本vs亚洲vs韩国一区三区二区| 极品少妇一区二区| 国产成人一区在线| 一本色道亚洲精品aⅴ| 欧美色窝79yyyycom| 日韩美女主播在线视频一区二区三区 | 99久久精品国产观看| 欧美在线播放高清精品| 日韩天堂在线观看| 亚洲国产高清在线观看视频| 亚洲免费色视频| 国产综合久久久久久久久久久久| caoporn国产一区二区| 91精品一区二区三区在线观看| 国产亚洲精品久| 日韩精品一级二级| 91一区一区三区| 精品日韩欧美一区二区| 亚洲美女区一区| 国产一区不卡视频| 欧美麻豆精品久久久久久| 欧美激情一区二区在线| 天使萌一区二区三区免费观看| 国产盗摄女厕一区二区三区| 欧美性猛交xxxx乱大交退制版| 精品免费一区二区三区| 亚洲另类中文字| 国产传媒一区在线| 91精品欧美一区二区三区综合在| 国产精品国产a级| 久久 天天综合| 欧美日韩一区二区三区高清| 国产女人18水真多18精品一级做| 三级在线观看一区二区| 色综合天天综合给合国产| 国产欧美日韩另类一区| 蜜桃视频免费观看一区| 欧美唯美清纯偷拍| 亚洲三级免费电影| 国产精品乡下勾搭老头1| 日韩欧美高清在线| 午夜欧美电影在线观看| 色哟哟日韩精品| |精品福利一区二区三区| 国产精品亚洲午夜一区二区三区 | 亚洲影视在线观看| 成人av电影免费观看| 久久女同精品一区二区| 美国十次综合导航| 欧美日韩一区二区三区视频| 亚洲欧美色综合| 99久久精品国产一区| 国产欧美精品一区二区色综合朱莉| 日日夜夜一区二区| 欧美吞精做爰啪啪高潮| 亚洲国产精品一区二区www | 午夜国产精品一区| 色88888久久久久久影院按摩| 亚洲人123区| 91国偷自产一区二区三区成为亚洲经典| 国产精品久久午夜| 成人av免费在线播放|