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

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

?? lcddrive.c

?? 周立功SmartARM2200開發板TFT6758 miniGUI驅動程序
?? C
字號:
/***************************************************************************************** 文件名:LCDDRIVE.C* 功能:TFT6758液晶模塊驅動。驅動芯片為HD66781 (片內224640字節GRAM,即240*(96+320)*18/8),*       門驅動(Gate driver)芯片為HD66783。*                                  *  RGB對應值(16位數據,d15--d0):*  d15--d11		R色*  d10--d5      G色*  d4--d0		B色*  寫操作時地址計數器會自動增長,而讀操作則不會自動增長。讀操作時,讀第2個數*  據才是有效的數據****************************************************************************************/#include "lpc2294.h"#include "lcddrive.h"/******************************************************** 名稱: TftSendCom* 功能: 向TFT液晶模塊發送命令字。* 入口參數: com   命令字(uint16)* 出口參數: 無*******************************************************/void  TftSendCom(uint16 com){  HD66781_IR = com;}/******************************************************** 名稱: TftSendDat* 功能: 向TFT液晶模塊發送數據。* 入口參數: dat   待發送的數據(uint16)* 出口參數: 無*******************************************************/void  TftSendDat(uint16 dat){  HD66781_DR = dat;}/******************************************************** 名稱: TftRcvDat* 功能: 讀取TFT液晶模塊的數據。* 入口參數: 無* 出口參數: 返回值即是讀出的數據*******************************************************/uint16  TftRcvDat(void){  uint16  ret;   ret = HD66781_DR;   return(ret);}#define  MAX_WAIT		10000		/* 等待超時控制值 *//******************************************************** 名稱: TftSerialCom* 功能: 向TFT液晶模塊發送串行命令(HD66781-->HD66783)。* 入口參數: indx  目標寄存器索引*           dat   待發送的數據(uint16)* 出口參數: 無*******************************************************/void  TftSerialCom(uint16 indx, uint16 dat){  uint32  delay;   uint16  bak;   TftSendCom(GATEIC_DAT);	   TftSendDat(dat);					// 發送數據      delay = 0;   TftSendCom(GATEIC_CON);   while(1)   {  bak = TftRcvDat();			// 讀TE位(0110H寄存器的d8位)      if((bak&0x0100) == 0) break;	// 若TE=0,表明允許發送數據      delay++;      if(delay>MAX_WAIT) return;	// 超時操作   }   indx |= 0x0100;					// 設置TE=1   TftSendDat(indx);				// 指定目標寄存器索引}/******************************************************** 名稱: TftSetAddr* 功能: 設置數據地址指針(坐標值)。* 入口參數: x		橫坐標的值 (0-239)*           y       縱坐標的值 (0-319)* 出口參數: 設置正確返回TRUE,參數超出范圍返回FALSE*******************************************************/uint8  TftSetAddr(uint16 x, uint16 y){  TftSendCom(SET_ADDR_X);		// 設置地址低8位   TftSendDat(x);      TftSendCom(SET_ADDR_Y);		// 設置地址高9位   TftSendDat(y);      if((x<240) && (y<320)) return(TRUE);     else  return(FALSE);}/******************************************************** 名稱: TftSetWrite* 功能: 設置數據地址指針(坐標值),并發送寫數據命令。*       接著不斷的寫入數據即可,GRAM地址會自動增加。* 入口參數: x		橫坐標的值 (0-239)*           y       縱坐標的值 (0-319)* 出口參數: 設置正確返回TRUE,參數超出范圍返回FALSE*******************************************************/uint8  TftSetWrite(uint16 x, uint16 y){  uint8  ret;   ret = TftSetAddr(x, y);   TftSendCom(WR_RD_DATA);		// 寫數據   return(ret);}/******************************************************** 名稱: TftSetWindow* 功能: 設置數據填充窗口大小。* 入口參數: x0,y0		窗口左上角從標*           x1,y1	    窗口右上角從標* 出口參數: 設置正確返回TRUE,參數錯誤返回FALSE*******************************************************/uint8  TftSetWindow(uint16 x0, uint16 y0, uint16 x1, uint16 y1)  {  // 參數過濾   if(x1>239) x1 = 239;   if(y1>319) y1 = 319;   if((x1<=x0) || (y1<=y0)) return(FALSE);         // 設置數據填充窗口大小   TftSendCom(SET_WINDOW_SX);		   TftSendDat(x0);      TftSendCom(SET_WINDOW_SY);		   TftSendDat(y0);      TftSendCom(SET_WINDOW_EX);		   TftSendDat(x1);      TftSendCom(SET_WINDOW_EY);		   TftSendDat(y1);      return(TRUE);}/******************************************************** 名稱: DelaymS* 功能: 軟件延時(1mS,與系統時鐘有關)。* 入口參數: no   延時控制(uint32),值越大延時越長* 出口參數: 無*******************************************************/void  DelaymS(uint32 no){  uint32 i;   for(; no>0; no--)   {  for(i=0; i<1500; i++);   }}/***************************************************************************** 名稱:TFT_FillSCR()* 功能:全屏填充。直接使用數據填充顯示緩沖區。* 入口參數:dat		填充的數據* 出口參數:無****************************************************************************/void  TFT_FillSCR(uint16 dat){  uint16  i, j;   TftSetWindow(0,0, 239, 319);    TftSetWrite(0, 0);   for(i=0; i<GUI_LCM_YMAX; i++)		// 歷遍所有行   {  for(j=0; j<GUI_LCM_XMAX; j++)		// 歷遍所有行      {  TftSendDat(dat); 				// 填充數據	  }   }}/******************************************************** 名稱: TftReset* 功能: 控制TFT液晶模塊復位。* 入口參數: 無* 出口參數: 無*******************************************************/void  TftReset(void){  IO0DIR = HD66781_RST;   IO0CLR = HD66781_RST;   DelaymS(10);   IO0SET = HD66781_RST;   DelaymS(10);   }// 定義TFT6758初始化數據信息STCOM_INI  TFT6758_INI[] = {  // 設置電源   {HD66783_COM, 0x0001, 0x0474, 0},	// HD66783電壓設置1   {HD66783_COM, 0x0002, 0x02DE, 0},	// HD66783電壓設置2   {HD66783_COM, 0x0001, 0x0C74, 0},   {HD66781_COM, 0x0100, 0x0050, 0},	// HD66781電源控制   {HD66783_COM, 0x0000, 0x080C, 0},	// HD66783電源控制   {HD66783_COM, 0x0002, 0x012E, 0},   {HD66783_COM, 0x0001, 0x04B2, 30},   {HD66783_COM, 0x0001, 0x04F0, 0},   {HD66783_COM, 0x0003, 0x0008, 0},	// HD66783掃描模式設置   {HD66783_COM, 0x0006, 0x09C0, 70},	// HD66783輸出設置      // 打開顯示   {HD66783_COM, 0x0000, 0x0C0A, 0},      {HD66781_COM, 0x0100, 0x0110, 0},	// 電源控制1, STB=0, SLP=0, DSTB=0 (正常工作模式)   {HD66781_COM, 0x0007, 0x0001, 50},   {HD66781_COM, 0x0007, 0x0012, 0},   {HD66783_COM, 0x0000, 0x0C08, 0},   {HD66781_COM, 0x0007, 0x0003, 50},   {HD66781_COM, 0x0007, 0x0013, 0},   {HD66781_COM, 0x0007, 0x0113, 0},	// 顯示控制1, D1:D0=11(使能顯示)      // 其它設置   {HD66781_COM, 0x0001, 0x0100, 0},	// 驅動輸出控制, SS=1   {HD66781_COM, 0x0002, 0x0700, 0},	// 驅動波形控制   {HD66781_COM, 0x0003, 0x1030, 0},	// 啟動模式設置, HWM=0, ID1:ID0 =11, AM=0 (不使用緩沖, 地址自動更新為"左上"至"右下"方式)   										//               BRG=0, OSD=0, TRI=0 (點象素數據為:RRRRRGGGGGGBBBBB)   {HD66781_COM, 0x0004, 0x0000, 0},	// 縮放控制1   {HD66781_COM, 0x0005, 0x0000, 0},	// 縮放控制2   {HD66781_COM, 0x0008, 0x0303, 0},	// 顯示控制2, FP3:FP0=3, BP2:BP0=3 (非顯示周期數)   {HD66781_COM, 0x0009, 0x142C, 0},	// 顯示控制3   {HD66781_COM, 0x000B, 0x0000, 0},	// 顯示控制4, FRCON=0, COL1:0=00 (262144色)   {HD66781_COM, 0x000C, 0x0001, 0},    // 外部顯示接口控制1   {HD66781_COM, 0x000D, 0x0010, 0},	// 幀周期控制   {HD66781_COM, 0x000E, 0x0210, 0},	// 外部顯示接口控制2   {HD66781_COM, 0x000F, 0x0000, 0},	// 外部顯示接口控制3   {HD66781_COM, 0x0010, 0x0000, 0},	// 門驅動(Gate driver)接口控制1   {HD66781_COM, 0x0011, 0x0000, 0},	// 門驅動(Gate driver)接口控制2   {HD66781_COM, 0x0012, 0x0002, 0},    // 門驅動(Gate driver)接口控制3   {HD66781_COM, 0x0013, 0x0000, 0},	// 門驅動(Gate driver)接口控制4   {HD66781_COM, 0x0015, 0x0000, 0},	// 門驅動(Gate driver)接口控制5   {HD66781_COM, 0x0016, 0x0000, 0},	// 門驅動(Gate driver)接口控制6   {HD66781_COM, 0x0017, 0x0000, 0},	// 門驅動(Gate driver)接口控制7   {HD66781_COM, 0x0018, 0x0005, 0},	// 門驅動(Gate driver)接口控制8   {HD66781_COM, 0x0019, 0x0000, 0},	// 門驅動(Gate driver)接口控制9   {HD66781_COM, 0x001B, 0x0000, 0},	// 門驅動(Gate driver)接口控制10   {HD66781_COM, 0x0200, 0x0000, 0},	// GRAM地址設置(R201H,R200H), 0x0000   {HD66781_COM, 0x0201, 0x0000, 0},   {HD66781_COM, 0x0203, 0x0000, 0},	// GRAM寫屏蔽控制(R204H,R203H), 0x0000   {HD66781_COM, 0x0204, 0x0000, 0},   {HD66781_COM, 0x0210, 0x0000, 0},	// window地址設置(R210H,R211H):水平方向為0--239 (x = 239+1)   {HD66781_COM, 0x0211, 0x00EF, 0},   {HD66781_COM, 0x0212, 0x0000, 0},	// window地址設置(R212H,R213H):垂直方向為0--319 (y = 319+1)   {HD66781_COM, 0x0213, 0x013F, 0},   {HD66781_COM, 0x0400, 0x0027, 0},	// 液晶光柵行設置,NL0[5:0]=39, 即(39+1)*8=320   {HD66781_COM, 0x0401, 0x0001, 0},	// 基本顯示控制, REV=1(正方向顯示), VLE=0(不滾屏)   {HD66781_COM, 0x0402, 0x0000, 0},	// 顯示起始行地址(y), 0   {HD66781_COM, 0x0403, 0x013F, 0},	// 顯示終止行地址(y), 319   {HD66781_COM, 0x0404, 0x0000, 0},	// 滾屏行數, 0   {HD66781_COM, 0x0405, 0x0000, 0},    // 縮放顯示起始行地址(y), 0   {HD66781_COM, 0x0406, 0x0000, 0},   	// 縮放顯示終止行地址(y), 0      {DATA_END,    0,      0,      0}};// 定義總線速度控制字 #define	BCFG_DEF	0x10000400#define	IDCY		(0x01<<0)#define 	WST1		(0x03<<5)#define	WST2		(0x03<<11)#define	BCFG3_SET	(BCFG_DEF | IDCY | WST1 | WST2)/******************************************************** 名稱: TftInit* 功能: 初始化TFT液晶模塊。* 入口參數: 無* 出口參數: 無*******************************************************/void  TftInit(void)  {  STCOM_INI  init_dat;   int  i;      BCFG3 = BCFG3_SET;      TftReset();   for(i=0; i<100; i++)		// 設定最多100條初始化命令   {  init_dat = TFT6758_INI[i];      if(init_dat.type==DATA_END) break;            if(init_dat.type==HD66783_COM)      {  TftSerialCom(init_dat.com, init_dat.dat);      }      else      {  TftSendCom(init_dat.com);         TftSendDat(init_dat.dat);      }            DelaymS(init_dat.dly);         }   }/******************************************************** 名稱: TFT_UpdateRects* 功能: 更新LCM顯示區域。更新數據在Framebuffer中。* 入口參數: x,y  		更新區域的起始點*			w,y			區域寬度和高度*           buffer      Framebuffer起始地址* 出口參數: 無*******************************************************/void  TFT_UpdateRects( int x,  int y, 		    // 起始點坐標    	               int w,  int h, 		    // 區域寬度、高度    	               uint16  *buffer)	  		// Framebuffer起始地址 {	int  i, j;    uint16  *addr;#if SWAP_XY_EN==1        int Xok, Yok;    #endif            // 需填充區域參數過濾    if(x<0)    {   w = w + x;        x = 0;    }    if(y<0)    {   h = h + y;        y = 0;    }    #if SWAP_XY_EN==1      if( x > (GUI_LCM_YMAX-1) ||        y > (GUI_LCM_XMAX-1)       )     {   return;    }      if((x+w) > (GUI_LCM_YMAX-1))    {   w = GUI_LCM_YMAX - x;    }    if((y+h) > (GUI_LCM_XMAX-1))    {   h = GUI_LCM_XMAX - y;    }    #else      if( x > (GUI_LCM_XMAX-1) ||        y > (GUI_LCM_YMAX-1)       )     {   return;    }          if((x+w) > (GUI_LCM_XMAX-1))    {   w = GUI_LCM_XMAX - x;    }    if((y+h) > (GUI_LCM_YMAX-1))    {   h = GUI_LCM_YMAX - y;    }        #endif             if((w<=0) || (h<=0)) return; /* 若需要交換x、y軸,則Yok = x, Xok = GUI_LCM_XMAX - y-1。則填充矩形算法為:    起點為(GUI_LCM_XMAX - y - h, x);    每一行數據個數為h個字節,共w行數據;                         行數據起始點地址:addr = buffer + ((y + h - 1)*GUI_LCM_YMAX + x) + i (第i行,n為0--w)。    同一行中,下一點數據地址變化:addr = addr - GUI_LCM_YMAX;    以上所說的"行"、Xok和Yok,是針對液晶屏的。*/#if SWAP_XY_EN==1    Xok = (int)GUI_LCM_XMAX - (y + h);        Yok = x;    for(i=0; i<w; i++)	    // 輸出w行數據    {   // 計算出更新區域的buffer地址        addr = buffer + ((y + h - 1)*GUI_LCM_YMAX + x) + i;                // 輸出一行(w個)數據            TftSetWrite(Xok, Yok);        for(j=0; j<h; j++)        {   TftSendDat(*addr);            addr = addr - GUI_LCM_YMAX;        }                // 指向下一行        Yok++;    }    #else    for(i=0; i<h; i++)			// 輸出h行數據    {  // 計算出更新區域的buffer地址       addr = buffer + (y*GUI_LCM_XMAX + x);              // 輸出一行(w)數據           TftSetWrite(x, y);       for(j=0; j<w; j++)       {  TftSendDat(*addr);          addr++;       }              // 指向下一行       y++;    }    #endif    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色综合天天久久综合精品| 欧美日韩午夜精品| 午夜a成v人精品| 国产精品久久午夜夜伦鲁鲁| 欧美一二三区在线| 91成人免费网站| 成人免费视频网站在线观看| 青青青伊人色综合久久| 日韩理论片中文av| 久久九九久久九九| 91麻豆精品国产91久久久资源速度 | 国产精品欧美综合在线| 欧美一区二区久久久| 色悠悠亚洲一区二区| 国产在线精品国自产拍免费| 午夜成人在线视频| 亚洲六月丁香色婷婷综合久久 | 性欧美大战久久久久久久久| 国产精品美女视频| 久久久久青草大香线综合精品| 日韩一区二区三区四区五区六区 | 国产日韩欧美a| 91精品国产欧美一区二区18| 日本精品一级二级| 91在线云播放| av不卡免费电影| 国产成人综合精品三级| 激情六月婷婷久久| 激情综合色丁香一区二区| 爽好多水快深点欧美视频| 亚洲成a人v欧美综合天堂下载| 18成人在线视频| 亚洲欧美综合色| 亚洲欧洲日韩av| 蜜臀av性久久久久蜜臀aⅴ| 一区二区三区免费网站| 亚洲欧美成aⅴ人在线观看 | 亚洲欧美日韩一区二区三区在线观看 | 色狠狠色噜噜噜综合网| 色哟哟一区二区在线观看| 高清在线成人网| 成人黄色大片在线观看| 成人高清免费观看| 99久久婷婷国产综合精品电影| 国产suv一区二区三区88区| 国产成人自拍高清视频在线免费播放| 狠狠色综合日日| 国产精品亚洲综合一区在线观看| 狠狠狠色丁香婷婷综合久久五月| 国内精品不卡在线| 成人深夜在线观看| 91亚洲精华国产精华精华液| 在线免费一区三区| 7799精品视频| 欧美精品一区二区三区在线播放| 久久蜜臀精品av| 国产精品久线在线观看| 日韩美女视频一区二区| 亚洲国产毛片aaaaa无费看 | 日韩视频不卡中文| 国产日韩欧美a| 亚洲精品视频自拍| 亚洲成人动漫一区| 国产在线视视频有精品| 大陆成人av片| 在线日韩一区二区| 日韩一区二区三区在线视频| 国产亚洲一区二区三区四区| 亚洲欧美日本韩国| 秋霞午夜av一区二区三区| 国产高清亚洲一区| 欧洲人成人精品| 欧美刺激脚交jootjob| 中文字幕一区二| 石原莉奈在线亚洲三区| 国产美女精品人人做人人爽| 91一区二区三区在线观看| 欧美日韩在线三级| www国产成人| 亚洲欧洲另类国产综合| 日韩精品乱码av一区二区| 国产一区 二区| 91麻豆123| 精品黑人一区二区三区久久| 亚洲欧美一区二区三区久本道91 | 强制捆绑调教一区二区| 成人激情校园春色| 91精品国产高清一区二区三区| 欧美高清一级片在线观看| 偷窥国产亚洲免费视频| 国产成人精品午夜视频免费| 欧美高清你懂得| 国产精品理伦片| 美女视频黄免费的久久| 色婷婷国产精品综合在线观看| 亚洲另类色综合网站| 蜜臀精品久久久久久蜜臀 | 日韩中文字幕1| 99re在线视频这里只有精品| 精品精品国产高清a毛片牛牛| 一区二区三区在线观看欧美| 国产一区二区三区四区五区入口| 欧美亚洲国产一区在线观看网站 | 中文字幕的久久| 麻豆国产精品官网| 欧美视频你懂的| 中文字幕在线一区免费| 国产乱人伦偷精品视频不卡 | 91精品国产日韩91久久久久久| 亚洲欧洲精品天堂一级| 激情六月婷婷久久| 91精品视频网| 亚洲国产精品激情在线观看| 亚洲成a人v欧美综合天堂下载| 国产成人综合在线播放| 欧美肥大bbwbbw高潮| 亚洲免费在线播放| www..com久久爱| 国产欧美一区二区三区网站| 麻豆视频观看网址久久| 91精品麻豆日日躁夜夜躁| 亚洲小少妇裸体bbw| 色狠狠色狠狠综合| 亚洲欧美另类小说| 91影院在线观看| 亚洲欧美另类综合偷拍| 91在线观看下载| 亚洲青青青在线视频| av电影天堂一区二区在线| 国产日本欧美一区二区| 久久成人综合网| 日韩视频免费直播| 久久99精品久久久久久久久久久久| 欧美另类一区二区三区| 日韩精品乱码免费| 91精品国产欧美一区二区成人| 日韩一区二区三区在线观看| 捆绑变态av一区二区三区| 91久久精品一区二区三区| 亚洲色图19p| 欧美岛国在线观看| 日韩成人一区二区三区在线观看| 91国偷自产一区二区三区成为亚洲经典 | 欧美日韩午夜在线| 亚洲一区二区黄色| 欧美亚洲国产一区二区三区| 亚洲成人av电影| 欧美一区二区三区男人的天堂| 日韩高清一级片| 精品国产免费人成电影在线观看四季 | 日韩高清一区在线| 91成人免费在线| 亚洲国产综合视频在线观看| 欧美日韩国产美女| 日韩高清中文字幕一区| 欧美成人激情免费网| 国产乱码精品一区二区三区忘忧草 | 毛片不卡一区二区| 久久精品一区二区三区不卡牛牛| 在线播放欧美女士性生活| 免费成人性网站| 欧美精品一区二区三区在线| 成人一区在线观看| 亚洲美女少妇撒尿| 3751色影院一区二区三区| 国产九色精品成人porny| 亚洲少妇最新在线视频| 欧美日韩一级片网站| 捆绑调教一区二区三区| 国产精品色呦呦| 欧美日韩国产精选| 国产麻豆9l精品三级站| 亚洲精品日日夜夜| 亚洲一区电影777| 91丨九色丨蝌蚪富婆spa| 午夜视频一区二区三区| 久久免费视频一区| 欧洲一区二区三区在线| 久久99国内精品| 亚洲桃色在线一区| 日韩一区二区影院| 91污在线观看| 蜜桃视频一区二区三区在线观看| 国产精品天干天干在线综合| 欧美性猛交一区二区三区精品| 国产自产v一区二区三区c| 亚洲另类在线制服丝袜| 精品粉嫩超白一线天av| 色综合天天综合色综合av| 麻豆国产精品官网| 亚洲国产美国国产综合一区二区| 久久久久国产精品麻豆ai换脸| 欧美日韩亚洲国产综合| 成人黄色a**站在线观看| 日本成人中文字幕| 一区二区三区小说| 国产三区在线成人av| 欧美一卡二卡在线| 欧美天堂亚洲电影院在线播放| 日韩一级片在线观看|