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

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

?? lcm_drive.c

?? 常用的LCD12864驅動
?? C
字號:
/***********************************************************************
* 文件名:LCM_DRIVE.C
* 功能:圖形液晶TG12864B-2驅動程序。
* 說明:在LCM_DRIVE.H文件中定義了LCM操作地址,左半屏的寫命令操作地址為2004H,寫
*      數據操作地址為2005H,右半屏的寫命令操作地址為2000H,寫數據操作地址為2001H;
*      由于GRAPHICS.C中使用了disp_buf作為作圖緩沖區,所以LCM_WriteByte()、LCM_
*      DispFill()均要更新disp_buf。
***********************************************************************/
#include  "CONFIG.H"

/* LCM復位控制腳定義 */
sbit	LCM_RST		= P1^0;			

/***********************************************************************
* 名稱:LCM_Wr1Command()
* 功能:寫命令子程序,所選屏為左半屏(CS1)。
* 入口參數:command  	要寫入LCM的命令字
***********************************************************************/
#define	LCM_Wr1Command(command)		LCMCS1W_COM = command

/***********************************************************************
* 名稱:LCM_Wr2Command()
* 功能:寫命令子程序,所選屏為右半屏(CS2)。
* 入口參數:command  	要寫入LCM的命令字
***********************************************************************/
#define	LCM_Wr2Command(command)		LCMCS2W_COM = command

/***********************************************************************
* 名稱:LCM_Wr1Data()
* 功能:寫數據子程序,所選屏為左半屏(CS1)。
* 入口參數:wrdata  	要寫入LCM的數據
***********************************************************************/
#define LCM_Wr1Data(wrdata) 		LCMCS1W_DAT = wrdata

/***********************************************************************
* 名稱:LCM_Wr2Data()
* 功能:寫數據子程序,所選屏為右半屏(CS2)。
* 入口參數:wrdata  	要寫入LCM的數據
***********************************************************************/
#define LCM_Wr2Data(wrdata) 		LCMCS2W_DAT = wrdata


/***********************************************************************
* 名稱:LCM_DispIni()
* 功能:LCM顯示初始化。使能顯示,設置顯示起始行為0并清屏。
* 入口參數:無
* 出口參數:無
***********************************************************************/
void  LCM_DispIni(void)
{  uint16  i;

   LCM_RST = 0;				// 復位驅動芯片
   for(i=0; i<500; i++);
   LCM_RST = 1;    

   LCM_Wr1Command(LCM_DISPON);		// 打開顯示
   LCM_Wr1Command(LCM_STARTROW);	// 設置顯示起始行為0
   LCM_Wr2Command(LCM_DISPON);	
   LCM_Wr2Command(LCM_STARTROW);		
   LCM_DispClr();			// 清屏
        
   LCM_Wr1Command(LCM_ADDRSTRY+0);	// 設置頁(行)地址
   LCM_Wr1Command(LCM_ADDRSTRX+0);	// 設置列地址,即列
   LCM_Wr2Command(LCM_ADDRSTRY+0);
   LCM_Wr2Command(LCM_ADDRSTRX+0);
}


/***********************************************************************
* 名稱:LCM_WriteByte()
* 功能:向指定點寫數據(一字節)。
* 入口參數:x 		x坐標值(0-127)
*	   y       	y坐標值(0-63)
*          wrdata	所要寫的數據
* 出口參數:無
* 說明:會更新disp_buf相應存儲單元
***********************************************************************/
void  LCM_WriteByte(uint8 x, uint8 y, uint8 wrdata) 
{  x = x&0x7f;				// 參數過濾
   y = y&0x3f;
   
   y = y>>3;
   disp_buf[y][x] = wrdata;
   if(x<64)				// 選擇液晶控制芯片(即CS1--控制前64個點,CS2--控制后64個點)
   {  LCM_Wr1Command(LCM_ADDRSTRX+x);	// 設置當前列地址,即x坐標
      LCM_Wr1Command(LCM_ADDRSTRY+y);	// 設置當前頁地址,即y坐標
      for(x=0; x<5; x++);		// 短延時
      LCM_Wr1Data(wrdata);
   }
   else
   {  x = x-64;				// 調整x變量值
      LCM_Wr2Command(LCM_ADDRSTRX+x);	
      LCM_Wr2Command(LCM_ADDRSTRY+y);	
      for(x=0; x<5; x++);
      LCM_Wr2Data(wrdata);
   }
}


/***********************************************************************
* 名稱:LCM_DispFill()
* 功能:向顯示屏填充數據
* 入口參數:filldata  	要寫入LCM的填充數據
* 出口參數:無
* 說明:會更新disp_buf相應存儲單元
***********************************************************************/
void  LCM_DispFill(uint8 filldata)
{  uint8  x, y;
	
   LCM_Wr1Command(LCM_STARTROW);	// 設置顯示起始行為0
   LCM_Wr2Command(LCM_STARTROW);	

   for(y=0; y<8; y++)
   {  LCM_Wr1Command(LCM_ADDRSTRY+y);	// 設置頁(行)地址
      LCM_Wr1Command(LCM_ADDRSTRX);	// 設置列地址
      LCM_Wr2Command(LCM_ADDRSTRY+y);
      LCM_Wr2Command(LCM_ADDRSTRX);
   
      for(x=0; x<64; x++)
      {  LCM_Wr1Data(filldata);
         LCM_Wr2Data(filldata);
         disp_buf[y][x] = filldata;
         disp_buf[y][x+64] = filldata;
      }	
   }
}


/* ASCII碼對應的點陣數據表 */
uint8 code  ASCII_TAB20[80] = { 0x00, 0x00, 0x00, 0x00, 0x00,
			 	0x00, 0x00, 0x9e, 0x00, 0x00,
                         	0x00, 0x0e, 0x00, 0x0e, 0x00,
                         	0x28, 0xfe, 0x28, 0xfe, 0x28,
                         	0x48, 0x54, 0xfe, 0x54, 0x24,
                         	0x46, 0x26, 0x10, 0xc8, 0xc4,
                         	0x6c, 0x92, 0xaa, 0x44, 0xa0,
                         	0x00, 0x0a, 0x06, 0x00, 0x00,
			 	0x00, 0x38, 0x44, 0x82, 0x00,
			 	0x00, 0x82, 0x44, 0x38, 0x00,
			 	0x28, 0x10, 0x7c, 0x10, 0x28,
			 	0x10, 0x10, 0x7c, 0x10, 0x10,
			 	0x00, 0xa0, 0x60, 0x00, 0x00,
			 	0x10, 0x10, 0x10, 0x10, 0x10,
			 	0x00, 0xc0, 0xc0, 0x00, 0x00,
			 	0x40, 0x20, 0x10, 0x08, 0x04
		               };

uint8 code  ASCII_TAB30[80] = { 0x7C, 0xA2, 0x92, 0x8A, 0x7C,			
				0x00, 0x84, 0xFE, 0x80, 0x00,
				0x84, 0xC2, 0xA2, 0x92, 0x8C,			
				0x42, 0x82, 0x8A, 0x96, 0x62,			
				0x30, 0x28, 0x24, 0xFE, 0x20,		
				0x4E, 0x8A, 0x8A, 0x8A, 0x72,			
				0x78, 0x94, 0x92, 0x92, 0x60,			
				0x02, 0xE2, 0x12, 0x0A, 0x06,			
				0x6C, 0x92, 0x92, 0x92, 0x6C,			
 				0x0C, 0x92, 0x92, 0x52, 0x3C,			
				0x00, 0x6C, 0x6C, 0x00, 0x00,			
				0x00, 0xAC, 0x6C, 0x00, 0x00,			
				0x10, 0x28, 0x44, 0x82, 0x00,			
				0x28, 0x28, 0x28, 0x28, 0x28,			
				0x00, 0x82, 0x44, 0x28, 0x10,			
				0x04, 0x02, 0xA2, 0x12, 0x0C
		       	       };			

uint8 code  ASCII_TAB40[80] = { 0x64, 0x92, 0xF2, 0x82, 0x7C,			
				0xFC, 0x22, 0x22, 0x22, 0xFC,			
		 		0xFE, 0x92, 0x92, 0x92, 0x6C,			
				0x7C, 0x82, 0x82, 0x82, 0x44,			
				0xFE, 0x82, 0x82, 0x44, 0x38,		
				0xFE, 0x92, 0x92, 0x92, 0x82,		
				0xFE, 0x12, 0x12, 0x12, 0x02,			
				0x7C, 0x82, 0x92, 0x92, 0xF4,			
				0xFE, 0x10, 0x10, 0x10, 0xFE,		
				0x00, 0x82, 0xFE, 0x82, 0x00,		
				0x40, 0x80, 0x82, 0x7E, 0x02,			
				0xFE, 0x10, 0x28, 0x44, 0x82,			
				0xFE, 0x80, 0x80, 0x80, 0x80,		
				0xFE, 0x04, 0x18, 0x04, 0xFE,			
				0xFE, 0x08, 0x10, 0x20, 0xFE,			
				0x7C, 0x82, 0x82, 0x82, 0x7C
		       	       };

uint8 code  ASCII_TAB50[80] = { 0xFE, 0x12, 0x12, 0x12, 0x0C,
				0x7C, 0x82, 0xA2, 0x42, 0xBC,
				0xFE, 0x12, 0x32, 0x52, 0x8C,			
				0x8C, 0x92, 0x92, 0x92, 0x62,			
				0x02, 0x02, 0xFE, 0x02, 0x02,	
				0x7E, 0x80, 0x80, 0x80, 0x7E,
				0x3E, 0x40, 0x80, 0x40, 0x3E,
				0x7E, 0x80, 0x70, 0x80, 0x7E,
				0xC6, 0x28, 0x10, 0x28, 0xC6,
				0x0E, 0x10, 0xE0, 0x10, 0x0E,
				0xC2, 0xA2, 0x92, 0x8A, 0x86,
				0x00, 0xFE, 0x82, 0x82, 0x00,
				0x04, 0x08, 0x10, 0x20, 0x40,
				0x00, 0x82, 0x82, 0xFE, 0x00,
				0x08, 0x04, 0x02, 0x04, 0x08,
				0x80, 0x80, 0x80, 0x80, 0x80
		      	       };

uint8 code  ASCII_TAB60[80] = { 0x00, 0x02, 0x04, 0x08, 0x00,
				0x40, 0xA8, 0xA8, 0xA8, 0xF0,
				0xFE, 0x90, 0x88, 0x88, 0x70,
				0x70, 0x88, 0x88, 0x88, 0x40,
				0x70, 0x88, 0x88, 0x90, 0xFE,
				0x70, 0xA8, 0xA8, 0xA8, 0x30,
				0x10, 0xFC, 0x12, 0x02, 0x04,
				0x18, 0xA4, 0xA4, 0xA4, 0x7C,
				0xFE, 0x10, 0x08, 0x08, 0xF0,
				0x00, 0x88, 0xFA, 0x80, 0x00,
				0x40, 0x80, 0x88, 0x7A, 0x00,
				0xFE, 0x20, 0x50, 0x88, 0x00,
				0x00, 0x82, 0xFE, 0x80, 0x00,
				0xF8, 0x08, 0x30, 0x08, 0xF8,
				0xF8, 0x10, 0x08, 0x08, 0xF0,
				0x70, 0x88, 0x88, 0x88, 0x70
		               };

uint8 code  ASCII_TAB70[80] = { 0xF8, 0x28, 0x28, 0x28, 0x10,
				0x10, 0x28, 0x28, 0x30, 0xF8,
				0xF8, 0x10, 0x08, 0x08, 0x10,
				0x90, 0xA8, 0xA8, 0xA8, 0x40,
				0x08, 0x7E, 0x88, 0x80, 0x40,
				0x78, 0x80, 0x80, 0x40, 0xF8,
				0x38, 0x40, 0x80, 0x40, 0x38,
				0x78, 0x80, 0x60, 0x80, 0x78,
				0x88, 0x50, 0x20, 0x50, 0x88,
				0x18, 0xA0, 0xA0, 0xA0, 0x78,
				0x88, 0xC8, 0xA8, 0x98, 0x88,
				0x00, 0x10, 0x6C, 0x82, 0x00,
				0x00, 0x00, 0xFE, 0x00, 0x00,
				0x00, 0x82, 0x6C, 0x10, 0x00,
				0x10, 0x10, 0x54, 0x38, 0x10,
				0x10, 0x38, 0x54, 0x10, 0x10
		       	       };
		       	       
/***********************************************************************
* 名稱:LCM_DispChar()
* 功能:指定地址顯示字符。
* 入口參數:disp_cy		顯示行值(0-7)	
*	   disp_cx		顯示列值(0-15)
*	   dispdata		所要顯示的字符(ASCII碼)
* 注:支持顯示字符0-9、A-Z、a-z及空格,字符顯示格式為5*7,模為8*8,所以
*     屏幕顯示為8*16(共8行,每行16個字符)。
***********************************************************************/
void LCM_DispChar(uint8 disp_cy, uint8 disp_cx, char dispdata) 
{  uint8  code  *pchardata;
   uint8  i;

   disp_cy = disp_cy&0x07;		// 參數過濾
   disp_cx = disp_cx&0x0f;
   
   /* 先要找出顯示數據的類型,并設置相應的點陣數據表,然后設置指針,以取得對應的點陣數據。 */      			
   switch(dispdata&0xf0)
   {  case 0x20:
  	   dispdata = (dispdata&0x0f)*5;
           pchardata = &ASCII_TAB20[dispdata];
           break;

      case 0x30:
  	   dispdata = (dispdata&0x0f)*5;
           pchardata = &ASCII_TAB30[dispdata];
           break;

      case 0x40:
	   dispdata = (dispdata&0x0f)*5;
           pchardata = &ASCII_TAB40[dispdata];
           break;

      case 0x50:
	   dispdata = (dispdata&0x0f)*5;
           pchardata = &ASCII_TAB50[dispdata];
           break;

      case 0x60:
	   dispdata = (dispdata&0x0f)*5;
           pchardata = &ASCII_TAB60[dispdata];
           break;

      case 0x70:
	   dispdata = (dispdata&0x0f)*5;
           pchardata = &ASCII_TAB70[dispdata];
           break;
	    
      default:
	   pchardata = &ASCII_TAB20[0];
	   break;
   } // end of switch(dispdata&0xf0)...
   
   
   if( (disp_cx&0x08) == 0 )				// 選擇液晶控制芯片(即CS1--控制前8個字符,CS2--控制后8個字符)
   {  i = disp_cx<<3;
      LCM_Wr1Command(LCM_ADDRSTRX+i);			// 設置當前列地址,即列
      LCM_Wr1Command(LCM_ADDRSTRY+disp_cy);		// 設置當前頁地址,即行
      
      for(i=0; i<5; i++);
      LCM_Wr1Data(0x00);				// 顯示一列空格
      for(i=0; i<5; i++)
      {  LCM_Wr1Data(*pchardata);			// 發送數據									*/
         pchardata++;
      }
      LCM_Wr1Data(0x00);	
      for(i=0; i<5; i++);
      LCM_Wr1Data(0x00);	
   }
   else
   {  i = (disp_cx&0x07)<<3;				// 若Y>7,則選取用CS2并且地址值要先減去8,再乘以8
      LCM_Wr2Command(LCM_ADDRSTRX+i);
      LCM_Wr2Command(LCM_ADDRSTRY+disp_cy);		// 設置當前頁地址,即行
      
      for(i=0; i<5; i++);
      LCM_Wr2Data(0x00);				// 顯示一列空格
      for(i=0; i<5; i++)
      {  LCM_Wr2Data(*pchardata);			// 發送數據									*/
         pchardata++;
      }
      LCM_Wr2Data(0x00);	
      for(i=0; i<5; i++);
      LCM_Wr2Data(0x00);	
   }
}       	       		       	  


/***********************************************************************
* 名稱:LCM_DispStr()
* 功能:字符串顯示輸出。
* 入口參數:disp_cy 	顯示起始行(0-7)
*	   disp_cx      顯示起始列(0-15)
*	   disp_str	字串指針
* 出口參數:無
* 注:支持顯示字符0-9、A-Z、a-z及空格,字符顯示格式為5*7,模為8*8,所以屏幕顯示
*     為8*16(共8行,每行16個字符)。
***********************************************************************/
void  LCM_DispStr(uint8 disp_cy, uint8 disp_cx, char *disp_str) 
{  while( *disp_str != '\0')
   {  disp_cy = disp_cy&0x07;				// 參數過濾
      disp_cx = disp_cx&0x0f;	
      LCM_DispChar(disp_cy, disp_cx, *disp_str); 	// 顯示字符
   	
      disp_str++;					// 指向下一字符數據
      disp_cx++;
      if(disp_cx>15) disp_cy++;				// 指向下一顯示行
   }
}
   




?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品福利视频网站| 亚洲一区二区视频在线| 日本中文字幕一区| 在线免费观看不卡av| 亚洲女子a中天字幕| 99久久er热在这里只有精品15| 欧美一区二区女人| 久久99精品国产91久久来源| 精品捆绑美女sm三区| 狠狠色丁香婷综合久久| 久久成人精品无人区| 99精品视频在线观看免费| 久久理论电影网| 国产白丝网站精品污在线入口| 国产三级精品在线| 91尤物视频在线观看| 亚洲成国产人片在线观看| 91精品国产品国语在线不卡| 精品一区免费av| 国产精品视频看| 欧美午夜精品免费| 麻豆精品在线看| 中文字幕一区二区三区在线不卡| 色美美综合视频| 日本在线观看不卡视频| 久久久99精品免费观看不卡| 国产午夜一区二区三区| 26uuu精品一区二区| 午夜久久久久久| 国产午夜亚洲精品午夜鲁丝片| 在线亚洲高清视频| 亚洲国产高清在线观看视频| 亚洲精品一区二区三区99| 高清不卡一二三区| 亚洲综合精品自拍| 久久久久国色av免费看影院| aaa欧美色吧激情视频| 日韩电影在线一区| 亚洲女性喷水在线观看一区| 欧美精品日韩一本| av资源网一区| 裸体一区二区三区| 亚洲男人天堂av| 久久中文字幕电影| 欧美日韩色综合| 成人18视频在线播放| 丝瓜av网站精品一区二区| 国产无一区二区| 欧美二区三区的天堂| 成人av高清在线| 久久精品国产澳门| 亚洲一区在线观看免费观看电影高清| 久久精品无码一区二区三区| 欧美色综合久久| 天堂久久久久va久久久久| 欧美视频一区二区三区| 91亚洲国产成人精品一区二三 | 国产乱色国产精品免费视频| 亚洲三级电影网站| 国产日韩欧美高清在线| 91精品国产日韩91久久久久久| 欧洲一区二区三区在线| 成人蜜臀av电影| 国产在线国偷精品产拍免费yy| 亚洲成人7777| 亚洲综合色在线| 玉足女爽爽91| 亚洲精品综合在线| 国产精品久久福利| 中文一区在线播放| 久久久久久一二三区| 亚洲人成影院在线观看| 国产亚洲精品资源在线26u| 日韩你懂的电影在线观看| 欧美日韩中文国产| 欧美三级电影在线观看| 在线视频你懂得一区二区三区| av电影天堂一区二区在线 | 成+人+亚洲+综合天堂| 国产精品99久| 国产成人精品网址| 成人午夜看片网址| 99久久国产综合色|国产精品| 国产黄色91视频| 大胆欧美人体老妇| aaa欧美日韩| 欧日韩精品视频| 欧美日本乱大交xxxxx| 在线不卡中文字幕播放| 91精品国产福利在线观看| 欧美一区2区视频在线观看| 欧美一级二级在线观看| 欧美一级欧美三级在线观看| 欧美一区二区三区播放老司机| 9191精品国产综合久久久久久| 制服丝袜在线91| 亚洲精品一区二区三区福利| 国产欧美日韩精品在线| 自拍偷在线精品自拍偷无码专区| 亚洲美女淫视频| 亚洲国产一区在线观看| 日本强好片久久久久久aaa| 裸体健美xxxx欧美裸体表演| 国产成人精品免费在线| av影院午夜一区| 欧美伊人精品成人久久综合97| 欧美美女一区二区| 精品国产百合女同互慰| 国产麻豆视频一区| 97国产一区二区| 欧美日韩国产电影| 久久影音资源网| 亚洲欧美日韩系列| 日日摸夜夜添夜夜添国产精品 | 久久精品av麻豆的观看方式| 国产精品一级片| 日本高清成人免费播放| 日韩手机在线导航| 综合av第一页| 看片的网站亚洲| 色哟哟一区二区在线观看| 这里是久久伊人| 国产精品久久99| 美腿丝袜在线亚洲一区| 99国产精品一区| 日韩精品中文字幕在线不卡尤物| 国产精品嫩草久久久久| 日日夜夜精品视频免费| 91一区二区在线| 精品欧美乱码久久久久久| 亚洲精品自拍动漫在线| 国产一区二区三区免费在线观看| 在线免费精品视频| 亚洲国产精品精华液2区45| 日韩高清一级片| 91在线视频网址| 久久久精品2019中文字幕之3| 91在线视频18| 7777精品伊人久久久大香线蕉 | 美女www一区二区| heyzo一本久久综合| 精品日韩欧美一区二区| 亚洲综合男人的天堂| 国产成人精品影视| 欧美成人福利视频| 香蕉久久夜色精品国产使用方法| 成人手机电影网| 久久久精品人体av艺术| 青娱乐精品在线视频| 色94色欧美sute亚洲线路二| 欧美激情在线看| 国内精品伊人久久久久av影院| 欧美精品高清视频| 亚洲成人中文在线| 色噜噜狠狠色综合欧洲selulu | 亚洲日本在线a| 色综合视频在线观看| 久久精品亚洲国产奇米99| 久草中文综合在线| 日韩一区二区影院| 日韩成人精品在线观看| 欧美久久一二三四区| 亚洲自拍偷拍欧美| 久久99国产精品久久| 亚洲摸摸操操av| 91影院在线免费观看| 国产精品国产馆在线真实露脸| 韩国精品一区二区| 精品国产一区二区三区av性色| 青椒成人免费视频| 欧美一级日韩免费不卡| 日韩av一级电影| 日韩免费电影一区| 老鸭窝一区二区久久精品| 日韩一级片在线播放| 秋霞成人午夜伦在线观看| 日韩精品自拍偷拍| 国产一区视频网站| 中文无字幕一区二区三区| 国产成a人亚洲| 中文字幕在线不卡一区二区三区| av激情成人网| 樱桃视频在线观看一区| 欧美日韩精品欧美日韩精品一综合| 亚洲电影一区二区| 91精品国产色综合久久ai换脸| 蜜桃视频免费观看一区| 精品电影一区二区| 成人精品小蝌蚪| 亚洲精品高清在线| 欧美区一区二区三区| 久久精品国产亚洲a| 久久夜色精品一区| eeuss影院一区二区三区| 亚洲精品乱码久久久久久日本蜜臀| 欧美性猛交xxxxxx富婆| 人人狠狠综合久久亚洲| 久久精品视频免费观看| 94-欧美-setu| 青椒成人免费视频|