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

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

?? lcddrive.c

?? Linux沒有圖形界面還是不好看
?? C
字號:
/***************************************************************************************** 文件名:LCDDRIVE.C* 功能:TFT6758液晶模塊驅動。驅動芯片為HD66781 (片內224640字節(jié)GRAM,即240*(96+320)*18/8),*       門驅動(Gate driver)芯片為HD66783。*                                  *  RGB對應值(16位數(shù)據(jù),d15--d0):*  d15--d11		R色*  d10--d5      G色*  d4--d0		B色*  寫操作時地址計數(shù)器會自動增長,而讀操作則不會自動增長。讀操作時,讀第2個數(shù)*  據(jù)才是有效的數(shù)據(jù)****************************************************************************************/#include "lpc2294.h"#include "lcddrive.h"/******************************************************** 名稱: TftSendCom* 功能: 向TFT液晶模塊發(fā)送命令字。* 入口參數(shù): com   命令字(uint16)* 出口參數(shù): 無*******************************************************/void  TftSendCom(uint16 com){  HD66781_IR = com;}/******************************************************** 名稱: TftSendDat* 功能: 向TFT液晶模塊發(fā)送數(shù)據(jù)。* 入口參數(shù): dat   待發(fā)送的數(shù)據(jù)(uint16)* 出口參數(shù): 無*******************************************************/void  TftSendDat(uint16 dat){  HD66781_DR = dat;}/******************************************************** 名稱: TftRcvDat* 功能: 讀取TFT液晶模塊的數(shù)據(jù)。* 入口參數(shù): 無* 出口參數(shù): 返回值即是讀出的數(shù)據(jù)*******************************************************/uint16  TftRcvDat(void){  uint16  ret;   ret = HD66781_DR;   return(ret);}#define  MAX_WAIT		10000		/* 等待超時控制值 *//******************************************************** 名稱: TftSerialCom* 功能: 向TFT液晶模塊發(fā)送串行命令(HD66781-->HD66783)。* 入口參數(shù): indx  目標寄存器索引*           dat   待發(fā)送的數(shù)據(jù)(uint16)* 出口參數(shù): 無*******************************************************/void  TftSerialCom(uint16 indx, uint16 dat){  uint32  delay;   uint16  bak;   TftSendCom(GATEIC_DAT);	   TftSendDat(dat);					// 發(fā)送數(shù)據(jù)      delay = 0;   TftSendCom(GATEIC_CON);   while(1)   {  bak = TftRcvDat();			// 讀TE位(0110H寄存器的d8位)      if((bak&0x0100) == 0) break;	// 若TE=0,表明允許發(fā)送數(shù)據(jù)      delay++;      if(delay>MAX_WAIT) return;	// 超時操作   }   indx |= 0x0100;					// 設置TE=1   TftSendDat(indx);				// 指定目標寄存器索引}/******************************************************** 名稱: TftSetAddr* 功能: 設置數(shù)據(jù)地址指針(坐標值)。* 入口參數(shù): x		橫坐標的值 (0-239)*           y       縱坐標的值 (0-319)* 出口參數(shù): 設置正確返回TRUE,參數(shù)超出范圍返回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* 功能: 設置數(shù)據(jù)地址指針(坐標值),并發(fā)送寫數(shù)據(jù)命令。*       接著不斷的寫入數(shù)據(jù)即可,GRAM地址會自動增加。* 入口參數(shù): x		橫坐標的值 (0-239)*           y       縱坐標的值 (0-319)* 出口參數(shù): 設置正確返回TRUE,參數(shù)超出范圍返回FALSE*******************************************************/uint8  TftSetWrite(uint16 x, uint16 y){  uint8  ret;   ret = TftSetAddr(x, y);   TftSendCom(WR_RD_DATA);		// 寫數(shù)據(jù)   return(ret);}/******************************************************** 名稱: TftSetWindow* 功能: 設置數(shù)據(jù)填充窗口大小。* 入口參數(shù): x0,y0		窗口左上角從標*           x1,y1	    窗口右上角從標* 出口參數(shù): 設置正確返回TRUE,參數(shù)錯誤返回FALSE*******************************************************/uint8  TftSetWindow(uint16 x0, uint16 y0, uint16 x1, uint16 y1)  {  // 參數(shù)過濾   if(x1>239) x1 = 239;   if(y1>319) y1 = 319;   if((x1<=x0) || (y1<=y0)) return(FALSE);         // 設置數(shù)據(jù)填充窗口大小   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,與系統(tǒng)時鐘有關)。* 入口參數(shù): no   延時控制(uint32),值越大延時越長* 出口參數(shù): 無*******************************************************/void  DelaymS(uint32 no){  uint32 i;   for(; no>0; no--)   {  for(i=0; i<1500; i++);   }}/***************************************************************************** 名稱:TFT_FillSCR()* 功能:全屏填充。直接使用數(shù)據(jù)填充顯示緩沖區(qū)。* 入口參數(shù):dat		填充的數(shù)據(jù)* 出口參數(shù):無****************************************************************************/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); 				// 填充數(shù)據(jù)	  }   }}/******************************************************** 名稱: TftReset* 功能: 控制TFT液晶模塊復位。* 入口參數(shù): 無* 出口參數(shù): 無*******************************************************/void  TftReset(void){  IO0DIR = HD66781_RST;   IO0CLR = HD66781_RST;   DelaymS(10);   IO0SET = HD66781_RST;   DelaymS(10);   }// 定義TFT6758初始化數(shù)據(jù)信息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 (點象素數(shù)據(jù)為: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 (非顯示周期數(shù))   {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},	// 滾屏行數(shù), 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液晶模塊。* 入口參數(shù): 無* 出口參數(shù): 無*******************************************************/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顯示區(qū)域。更新數(shù)據(jù)在Framebuffer中。* 入口參數(shù): x,y  		更新區(qū)域的起始點*			w,y			區(qū)域寬度和高度*           buffer      Framebuffer起始地址* 出口參數(shù): 無*******************************************************/void  TFT_UpdateRects( int x,  int y, 		    // 起始點坐標    	               int w,  int h, 		    // 區(qū)域寬度、高度    	               uint16  *buffer)	  		// Framebuffer起始地址 {	int  i, j;    uint16  *addr;#if SWAP_XY_EN==1        int Xok, Yok;    #endif            // 需填充區(qū)域參數(shù)過濾    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);    每一行數(shù)據(jù)個數(shù)為h個字節(jié),共w行數(shù)據(jù);                         行數(shù)據(jù)起始點地址:addr = buffer + ((y + h - 1)*GUI_LCM_YMAX + x) + i (第i行,n為0--w)。    同一行中,下一點數(shù)據(jù)地址變化: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行數(shù)據(jù)    {   // 計算出更新區(qū)域的buffer地址        addr = buffer + ((y + h - 1)*GUI_LCM_YMAX + x) + i;                // 輸出一行(w個)數(shù)據(jù)            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行數(shù)據(jù)    {  // 計算出更新區(qū)域的buffer地址       addr = buffer + (y*GUI_LCM_XMAX + x);              // 輸出一行(w)數(shù)據(jù)           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一区二区三区免费野_久草精品视频
午夜精品久久久久久久99水蜜桃 | 99久久久国产精品免费蜜臀| 成人激情动漫在线观看| 色婷婷精品久久二区二区蜜臂av | 午夜精品久久久久久久久久久| 老司机午夜精品99久久| 成人免费毛片嘿嘿连载视频| 欧美曰成人黄网| 欧美精品一区二区精品网| 国产精品网站导航| 亚洲狠狠爱一区二区三区| 精品一区二区在线播放| eeuss鲁片一区二区三区在线看| 欧美精品一区二区三区在线| 亚洲精品视频一区二区| 另类中文字幕网| 91色综合久久久久婷婷| 日韩欧美中文一区| 专区另类欧美日韩| 蜜桃视频在线观看一区二区| av亚洲产国偷v产偷v自拍| 在线不卡欧美精品一区二区三区| 国产日韩精品视频一区| 亚洲成人福利片| 国产99久久久国产精品免费看| 欧美性欧美巨大黑白大战| 久久亚洲精精品中文字幕早川悠里| 亚洲人成7777| 国产一区二区三区免费在线观看| 欧美色成人综合| 国产精品污www在线观看| 毛片av一区二区| 91福利在线看| 久久九九久精品国产免费直播| 亚洲国产精品久久人人爱蜜臀| 国产成人自拍网| 欧美一区二区精品在线| 亚洲一区影音先锋| 成年人国产精品| 2020国产精品| 蜜桃一区二区三区在线| 欧美写真视频网站| 亚洲三级在线观看| 成人午夜短视频| 久久伊人中文字幕| 蜜臀久久99精品久久久久宅男| 欧美在线观看你懂的| 亚洲美女免费视频| av一区二区久久| 国产女人18水真多18精品一级做 | 久久亚洲一级片| 日本欧美加勒比视频| 欧美性色综合网| 亚洲精品日产精品乱码不卡| 成人激情小说网站| 欧美极品美女视频| 国产精品一区二区三区99| 精品久久久久久无| 热久久久久久久| 5566中文字幕一区二区电影| 亚洲bt欧美bt精品777| 在线观看欧美日本| 一区二区不卡在线视频 午夜欧美不卡在 | 99re免费视频精品全部| 中文字幕国产一区二区| 国产99一区视频免费 | 成人综合在线网站| 国产色产综合产在线视频| 国产在线播放一区三区四| ww久久中文字幕| 国产精品亚洲一区二区三区妖精| 欧美v日韩v国产v| 美国欧美日韩国产在线播放| 欧美一级片免费看| 久久成人免费日本黄色| 精品少妇一区二区三区免费观看| 麻豆成人免费电影| 久久综合成人精品亚洲另类欧美| 国产一区二区影院| 亚洲国产成人一区二区三区| 成人app下载| 亚洲综合视频在线| 欧美精品久久久久久久久老牛影院 | 菠萝蜜视频在线观看一区| 国产精品视频线看| av电影在线观看完整版一区二区| 亚洲欧洲精品成人久久奇米网 | 亚洲va在线va天堂| 欧美精品 国产精品| 激情图片小说一区| 国产欧美一区二区三区在线看蜜臀| 不卡一区二区中文字幕| 一区二区三区不卡在线观看| 欧美日韩大陆一区二区| 捆绑变态av一区二区三区| 久久久久久久久久久电影| 99r国产精品| 亚洲成人久久影院| 欧美va亚洲va香蕉在线| 成人激情图片网| 亚洲高清在线精品| 精品国产精品一区二区夜夜嗨| 风间由美一区二区av101| 亚洲精品视频自拍| 51精品国自产在线| 国产成人免费av在线| 一级日本不卡的影视| 日韩欧美成人一区| 白白色 亚洲乱淫| 午夜久久久影院| 2020国产精品自拍| 欧美自拍偷拍午夜视频| 六月丁香综合在线视频| 一区二区中文视频| 欧美一区二区精品在线| 成人av网站在线| 日韩中文字幕91| 中文字幕欧美日本乱码一线二线| 欧美主播一区二区三区| 国产精品一色哟哟哟| 亚洲图片欧美色图| 欧美国产日韩亚洲一区| 欧美日韩精品欧美日韩精品| 国产精品一区二区男女羞羞无遮挡 | 麻豆国产91在线播放| 中文字幕在线不卡一区| 日韩亚洲欧美综合| 91香蕉视频污在线| 美国毛片一区二区| 一区二区欧美在线观看| 久久久久久久综合狠狠综合| 欧美日韩免费观看一区二区三区| 国产成人亚洲综合色影视| 五月激情六月综合| 日韩一区在线播放| 国产亚洲成av人在线观看导航| 欧美日韩精品一区二区三区蜜桃| 粉嫩一区二区三区性色av| 日韩一区精品字幕| 亚洲精品午夜久久久| 国产欧美精品一区二区三区四区| 日韩一区二区精品葵司在线| 一本大道久久精品懂色aⅴ| 国产原创一区二区| 喷水一区二区三区| 一区二区三区欧美亚洲| 国产精品久久久久国产精品日日| 精品久久一区二区| 欧美另类高清zo欧美| 91久久免费观看| 不卡视频一二三| 国产成人三级在线观看| 麻豆精品久久精品色综合| 午夜精品一区二区三区三上悠亚 | 欧美日韩综合在线| av电影在线观看不卡| 国产999精品久久久久久| 麻豆成人免费电影| 男男视频亚洲欧美| 亚洲成人福利片| 亚洲国产精品欧美一二99| 亚洲欧美色综合| 中文字幕在线视频一区| 国产午夜精品一区二区| 精品久久久久久久一区二区蜜臀| 欧美一级免费大片| 欧美乱熟臀69xxxxxx| 欧美日韩三级视频| 欧美亚洲综合久久| 欧美亚日韩国产aⅴ精品中极品| 色综合久久久久综合99| 一本大道av一区二区在线播放| av综合在线播放| 欧美成人精品二区三区99精品| 91精品国产麻豆| 7777精品伊人久久久大香线蕉经典版下载 | 久久蜜桃av一区精品变态类天堂| 欧美一区二区不卡视频| 欧美挠脚心视频网站| 欧美群妇大交群的观看方式| 欧美日韩国产高清一区| 欧美精品成人一区二区三区四区| 7777女厕盗摄久久久| 日韩免费视频一区| 精品国产区一区| 337p日本欧洲亚洲大胆色噜噜| 精品福利在线导航| 国产亚洲女人久久久久毛片| 国产色一区二区| 国产精品久久久久一区二区三区共 | 精品一区二区三区不卡 | 国产日韩v精品一区二区| 久久久亚洲高清| 中文av一区二区| √…a在线天堂一区| 亚洲欧美区自拍先锋| 亚洲国产综合色| 秋霞电影一区二区| 久久不见久久见中文字幕免费| 国产在线看一区|