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

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

?? lcddir.h

?? c51 led菜單 程序 功能 上下選擇菜單
?? H
字號:

/***********常用操作命令和參數定義***************/
#define	 DISPON	0x3f	/*顯示on		*/
#define	 DISPOFF	0x3e	/*顯示off		*/
#define	 DISPFIRST	0xc0	/*顯示起始行定義	*/
#define	 SETX		0x40	/*X定位設定指令(頁)	*/
#define	 SETY		0xb8	/*Y定位設定指令(列)	*/
#define	 Lcdbusy	0x80	/*LCM忙判斷位		*/

/**************顯示分區邊界位置*****************/
#define	 MODL		0x00	/*左區			*/
#define	 MODR		0x40	/*中區和右區分界	*/
#define	 LCMLIMIT	0x80	/*顯示區的右邊界	*/

/****************全局變量定義*******************/
Uchar col,row,cbyte;		/*列x,行(頁)y,輸出數據	*/
bit xy;				/*畫線方向標志:1水平	*/

/*****************函數列表**********************/
void Lcminit(void);		/*液晶模塊初始化	*/
void Delay(Uchar);		/*延時,入口數為Ms	*/
void lcdbusyL(void);		/*busy判斷、等待(左區)	*/

void lcdbusyR(void);		/*busy判斷、等待(右區)	*/
void Putedot(Uchar);		/*半角字符輸出		*/
void Putcdot(Uchar);		/*全角(漢字)輸出	*/
void Wrdata(Uchar);		/*數據輸出給LCM		*/
void Lcmcls( void );		/*LCM全屏幕清零(填充0)	*/
void wtcom(void);		/*公用busy等待		*/
void Locatexy(void);		/*光標定位		*/
void WrcmdL(Uchar);		/*左區命令輸出		*/

void WrcmdR(Uchar);		/*右區命令輸出		*/
void Putstr(Uchar *puts,Uchar i);	/*中英文字符串輸出	*/
void Rollscreen(Uchar x);	/*屏幕向上滾動演示	*/
void Rddata(void);		/*  從液晶片上讀數據	*/
void Linehv(Uchar length);	/*橫(豎)方向畫線	*/
void point(void);		/*打點			*/
void Linexy(Uchar endx,Uchar endy);

void Display(Uchar hang,Uchar lie,Uchar *chuan,Uchar shu );//字符輸出函數





/************************************************/
/*畫線。任意方向的斜線,不支持垂直的或水平線	*/
/************************************************/

void Linexy(Uchar endx,Uchar endy)
{
	register Uchar t;
	int xerr=0,yerr=0,delta_x,delta_y,distance;
	Uchar incx,incy;

/* 	compute the distance in both directions */
	delta_x=endx-col;
	delta_y=endy-row;

/* compute  the direction of the increment ,
	an increment of "0" means either a vertical or horizontal lines */

	if(delta_x>0) incx=1;
	else if( delta_x==0 ) incx=0;
		else incx=-1;


	if(delta_y>0) incy=1;
	else if( delta_y==0 ) incy=0;
		else incy=-1;

/*  determine which distance is greater */
	delta_x = cabs( delta_x );
	delta_y = cabs( delta_y );

	if( delta_x > delta_y ) distance=delta_x;
	else distance=delta_y;

/* draw the line */
	for( t=0;t <= distance+1; t++ ) {
		point();
 	   xerr += delta_x ;
		yerr += delta_y ;
		if( xerr > distance ) {
			xerr-=distance;
 		    col+=incx;
		}
		if( yerr > distance ) {
			yerr-=distance;
 		    row+=incy;
		}

	}
}

/****************************************/
/*畫線。只提供X或Y方向的,不支持斜線	*/
/****************************************/
void Linehv(Uchar length)
	{
		Uchar xs,ys;
		if (xy){ys = col;
			for (xs=0;xs<length;xs++){
					col = ys + xs;
					point();}
				}
		else	{xs = row;
			for (ys=0;ys<length;ys++){
					row = xs + ys;
					point();}
				}
}

/****************************************/
/*	畫點				*/
/****************************************/

void point(void)
	{
		Uchar	x1,y1,x,y;
		x1=col;
		y1=row;
		row=y1>>3;		/*取Y方向分頁地址	*/
		Rddata();
		y=y1&0x07;		/*字節內位置計算	*/
		x=0x01;
		x=x<<y;			/*移入所畫點		*/
		Wrdata(cbyte|x);	/*畫上屏幕		*/
		col=x1;			/*恢復xy坐標		*/
		row=y1;
	}

/****************************************/
/*	屏幕滾動定位			*/
/****************************************/
void Rollscreen(Uchar x)
	{
		cbyte = DISPFIRST|x;	/*定義顯示起始行為x?*/
		WrcmdL(cbyte);
		
		WrcmdR(cbyte);
	}
  
/****************************************/
/*	一個字串的輸出			*/
/****************************************/
void Putstr(Uchar *puts,Uchar i)
	{
		Uchar j,X;
		for (j=0;j<i;j++)
		{
		X = puts[j];
			if (X&0x80)
				{
					Putcdot(X&0x7f);	/*只保留低7位*/
				}
			else Putedot(X-0x20);		/*ascii碼表從0x20開始*/
		}
	}

/****************************************/
/*   半角字符點陣碼數據輸出		*/
/****************************************/
void Putedot(Uchar Order)
	{
	Uchar i,bakerx,bakery;	/*共定義4個局部變量			*/
	int x;			/*偏移量,字符量少的可以定義為UCHAR	*/
	bakerx = col;		/*暫存x,y坐標,已備下半個字符使用	*/
	bakery = row;
	x=Order * 0x10;		/*半角字符,每個字符16字節	*/
/*上半個字符輸出,8列	*/
	for(i=0;i<8;i++)
		{
		cbyte = Ezk[x];				/*取點陣碼,rom數組	*/
		Wrdata(cbyte);				/*寫輸出一字節		*/
		x++;
		col++;
		if (col==LCMLIMIT){col=0;row++;row++;};	/*下一列,如果列越界換行*/
			if (row>7) row=0;		/*如果行越界,返回首行	*/
		}					/*上半個字符輸出結束	*/

	col = bakerx;					/*列對齊		*/
	row = bakery+1;					/*指向下半個字符行	*/
/*下半個字符輸出,8列	*/
	for(i=0;i<8;i++)
		{
		cbyte = Ezk[x];				/*取點陣碼		*/
		Wrdata(cbyte);				/*寫輸出一字節		*/
		x++;
		col++;
		if (col==LCMLIMIT){col=0;row=row+2;};	/*下一列,如果列越界換行*/
			if (row>7) row=1;		/*如果行越界,返回首行	*/
		}					/*下半個字符輸出結束	*/
	row=bakery;
	}						/*整個字符輸出結束	*/


/****************************************/
/*  全角字符點陣碼數據輸出		*/
/****************************************/
void Putcdot(Uchar Order)
	{
	Uchar i,bakerx,bakery;		/*共定義3個局部變量		*/
	int x;				/*偏移量,字符量少的可以定義為UCHAR	*/
	bakerx = col;			/*暫存x,y坐標,已備下半個字符使用	*/
	bakery = row;
	x=Order * 0x20;			/*每個字符32字節	*/
	
/*上半個字符輸出,16列	*/
	for(i=0;i<16;i++)
		{
		Wrdata(Hzk[x]);				/*寫輸出一字節		*/
		x++;
		col++;
		if (col==LCMLIMIT){ col=0;row++;row++;}	/*下一列,如果列越界換行*/
			if (row>6) row=0;		/*如果行越界,返回首行	*/
		}					/*上半個字符輸出結束	*/
		
/*下半個字符輸出,16列	*/
	col = bakerx;
	row = bakery+1;
	for(i=0;i<16;i++)				/*下半部分*/
		{
		Wrdata(Hzk[x]);
		x++;
		col++;
		if (col==LCMLIMIT){col=0;row++;row++;}	/*下一列,如果列越界換行*/
			if (row>7) row=1;		/*如果行越界,返回首行	*/
		}					/*下半個字符輸出結束	*/
	row = bakery;
	}						/*整個字符輸出結束	*/

/****************************************/
/*	清屏,全屏幕清零		*/
/****************************************/
void Lcmcls( void )
	{
	for(row=0;row<8;row++)
   		for(col=0;col<LCMLIMIT;col++) Wrdata(0);
	}

/****************************************/
/*  從液晶片上讀數據,保留在全局變量中	*/
/****************************************/

void Rddata(void)
	{
	Locatexy();		/*坐標定位,返回時保留分區狀態不變	*/
		Datalcm=0xFF;
		Dilcm = 1;	/*數據*/
		Rwlcm = 1;	/*讀數據*/
		Elcm = 1;	/*讀入到LCM*/
		_nop_();
		cbyte = Datalcm;	/*虛讀一次 */
		Elcm = 0;
	   Locatexy();		/*坐標定位,返回時保留分區狀態不變	*/
		Datalcm=0xFF;
		_nop_();
		Dilcm = 1;	/*數據*/
		Rwlcm = 1;	/*讀數據*/
		Elcm = 1;	/*讀入到LCM*/
		_nop_();
		cbyte = Datalcm;	/*從數據口讀數據,真讀 */
		Elcm = 0;
	}

/****************************************/
/*	數據寫輸出			*/
/****************************************/

void Wrdata(Uchar X)
	{
	Locatexy();		/*坐標定位,返回時保留分區狀態不變	*/
    wtcom();
		Dilcm = 1;	/*數據輸出*/
		Rwlcm = 0;	/*寫輸出  */
		Datalcm = X;	/*數據輸出到數據口 */
		Elcm = 1;	/*讀入到LCM*/
		//_nop_();
      Delay(1);
		Elcm = 0;
	}

/****************************************/
/* 命令輸出,每次輸出一個分區控制口	*/
/****************************************/

void Wrcmd(Uchar X)
{
   Locatexy();		/*確定分區,返回時保留分區狀態不變	*/
	wtcom();		/*等待LCM操作允許	*/
	Dilcm = 0;			/*數據操作	*/
	Rwlcm = 0;			/*寫輸出  	*/
	Datalcm = X;			/*數據輸出到數據口 */
	Elcm = 1;_nop_();Elcm = 0;	/*讀入到LCM*/
	}

/********************************/
/* 命令輸出到左區控制口		*/
/********************************/

void WrcmdL(Uchar X)
	{
		lcdbusyL();		/*確定分區,返回時保留分區狀態不變*/
		Dilcm = 0;			/*命令操作	*/
		Rwlcm = 0;			/*寫輸出  	*/
		Datalcm = X;			/*數據輸出到數據口 */
		Elcm = 1;_nop_();Elcm = 0;	/*讀入到LCM*/
	}


/********************************/
/* 命令輸出到右區控制口		*/
/********************************/

void WrcmdR(Uchar X)
	{
		lcdbusyR();	/*確定分區,返回時保留分區狀態不變	*/
		Dilcm = 0;			/*命令操作	*/
		Rwlcm = 0;			/*寫輸出  	*/
		Datalcm = X;			/*命令輸出到數據口 */
		Elcm = 1;_nop_();Elcm = 0;	/*讀入到LCM*/
	}

/********************************************************/
/* 分區操作允許等待,返回時保留分區選擇狀態		*/
/********************************************************/
void lcdbusyL(void)
	{
        CS1LCM = 0;		/*CLR	CS1		*/
        CS2LCM = 1;		/*SETB	CS2		*/

	     wtcom();		/* waitting for enable	*/
	}


void lcdbusyR(void)
	{
        CS1LCM = 1;		/*SETB	CS1		*/
        CS2LCM = 0;		/*SETB	CS2		*/

	     wtcom();		/* waitting for enable	*/
	}

void wtcom(void)
	{
	unsigned char Datalcm1;
	Dilcm = 0;		/*CLR	DI		*/
	Rwlcm = 1;		/*SETB	RW		*/
   Elcm  = 1;
	_nop_();		
	Datalcm1=P2;
 
    Elcm  = 0;
	}

/********************************************************/
/*根據設定的坐標數據,定位LCM上的下一個操作單元位置	*/
/********************************************************/
void Locatexy(void)
	{
	unsigned char  x,y;
	switch (col&0xc0)		/*  col.and.0xC0	*/
		{			/*條件分支執行		*/
		case 0:		{lcdbusyL();break;}	/*左區	*/
		//case 0x40:	{lcdbusyM();break;}	/*中區	*/
		case 0x40:	{lcdbusyR();break;}	/*右區	*/
		}
	x = col&0x3F|SETX;		/*  col.and.0x3f.or.setx	*/
	y = row&0x07|SETY;		/*  row.and.0x07.or.sety	*/
		wtcom();		/*  waitting for enable		*/
		Dilcm = 0;			/*CLR	DI	*/
		Rwlcm = 0;			/*CLR	RW	*/
		Datalcm = y;			/*MOV	P0,Y	*/
		Elcm = 1;_nop_();Elcm = 0;
		wtcom();		/*  waitting for enable		*/
		Dilcm = 0;			/*CLR	DI	*/
		Rwlcm = 0;			/*CLR	RW	*/
		Datalcm = x;			/*MOV	P0,X	*/
		Elcm = 1;_nop_();Elcm = 0;
	}

/********************************/
/*液晶屏初始化			*/
/********************************/

void Lcminit(void)
	{
		cbyte = DISPOFF;	/*關閉顯示屏	*/
   	WrcmdL(cbyte);

		WrcmdR(cbyte);
		cbyte = DISPON;		/*打開顯示屏	*/
		WrcmdL(cbyte);

		WrcmdR(cbyte);
		cbyte = DISPFIRST;	/*定義顯示起始行為零	*/

		WrcmdR(cbyte);
		Lcmcls();
		col=0;		/*清屏		*/
		row=0;
		Locatexy();
	}
/********************************/
/* 延時				*/
/********************************/
void Delay(Uchar MS)
	{
		Uchar us,usn;
		while(MS!=0)
			{ usn = 1;
				while(usn!=0)
					{
						us=0xf0;
						while (us!=0){us--;};
						usn--;
					}
				MS--;
			}
	}

void Display(Uchar hang,Uchar lie,Uchar *chuan,Uchar shu )
  
     {row =hang;
      col=lie;
      Putstr(chuan,shu);
     }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情综合网av| 国产午夜精品福利| 欧美一二三四区在线| 99在线精品免费| 成人sese在线| 亚洲成精国产精品女| 美女视频黄频大全不卡视频在线播放| 日韩影院精彩在线| 国产乱一区二区| a美女胸又www黄视频久久| 91麻豆精品秘密| 欧美日韩国产在线播放网站| 日韩欧美国产午夜精品| 欧洲中文字幕精品| 国产精品私人影院| 久久久国产精品不卡| 91麻豆精品秘密| 国产成人免费高清| 国产精品三级在线观看| 国产视频一区二区在线观看| 久久亚洲一区二区三区明星换脸| 精品999久久久| 91视视频在线直接观看在线看网页在线看| 视频一区二区不卡| 国产精品久久久久久久久晋中| 久久色成人在线| 不卡的电影网站| 国产ts人妖一区二区| 色av一区二区| 91视视频在线观看入口直接观看www| 国产欧美日韩综合精品一区二区| 精品午夜久久福利影院| 韩国精品久久久| 久久久久国产精品厨房| 国产一级精品在线| 国产精品你懂的在线| 国产午夜一区二区三区| 国产欧美日韩三级| 国产日韩av一区二区| 亚洲国产精品久久艾草纯爱| 日本不卡一区二区| 欧日韩精品视频| 久久日韩粉嫩一区二区三区 | 午夜视频在线观看一区二区三区| 亚洲综合一区二区三区| 日韩情涩欧美日韩视频| 亚洲成人www| 精久久久久久久久久久| 在线观看成人小视频| 欧美日韩国产电影| 国产成人综合亚洲网站| 91在线播放网址| 欧美一级理论性理论a| 欧美一二三四在线| 亚洲成人1区2区| 丰满少妇在线播放bd日韩电影| 美女视频黄 久久| 91美女在线看| 欧美日韩成人综合在线一区二区| 欧洲视频一区二区| 中文字幕不卡在线播放| 亚洲精品免费电影| 激情综合一区二区三区| 亚洲一卡二卡三卡四卡五卡| 久久成人18免费观看| 91精品国产综合久久蜜臀| 亚洲成年人影院| 青青草国产成人99久久| 亚洲欧洲国产专区| 一区二区三区在线视频观看| 日韩影院在线观看| 精品一区二区三区视频在线观看| a亚洲天堂av| 成人免费毛片a| 欧美v国产在线一区二区三区| 日韩欧美一区二区视频| 亚洲免费在线播放| 欧美精品在线观看播放| 一区二区三区在线观看欧美 | 国产精品久久久久久久久免费桃花 | 久久精品视频免费观看| 国产精品乱子久久久久| 337p粉嫩大胆噜噜噜噜噜91av| 欧美一级免费观看| 5858s免费视频成人| 亚洲精品在线三区| 五月激情六月综合| 久久久另类综合| 日一区二区三区| 图片区小说区国产精品视频| 丰满放荡岳乱妇91ww| 国产精品乱人伦一区二区| 国产麻豆午夜三级精品| 欧美一区午夜视频在线观看 | 日韩无一区二区| 亚洲日本va在线观看| 成人三级伦理片| 久久日一线二线三线suv| 亚洲激情av在线| 一本在线高清不卡dvd| 日韩理论片在线| 不卡一区二区三区四区| 国产精品乱码一区二区三区软件| 91国偷自产一区二区使用方法| 亚洲电影一区二区| 日韩精品在线看片z| 国产一区二区三区日韩| 亚洲国产aⅴ成人精品无吗| 国产.欧美.日韩| 亚洲色图.com| 午夜精品123| 国产高清亚洲一区| 精品视频在线免费| 久久久久国产精品厨房| 精品无人码麻豆乱码1区2区| 成人午夜视频在线观看| 有码一区二区三区| 在线观看国产91| 91精品国产品国语在线不卡| 麻豆精品在线播放| 欧美日韩一级二级三级| 日韩av中文字幕一区二区| 日韩一级免费一区| 日本成人在线不卡视频| 国产亚洲一本大道中文在线| 韩国一区二区三区| 欧美va亚洲va在线观看蝴蝶网| 欧美性感一区二区三区| 国产毛片精品一区| 国内精品第一页| 国产欧美一区在线| 欧洲精品一区二区| 图片区小说区区亚洲影院| 粉嫩一区二区三区性色av| 亚洲国产电影在线观看| 国产精品久久久久国产精品日日| 欧美日韩在线一区二区| 亚洲日韩欧美一区二区在线| 日韩午夜在线观看视频| 99re8在线精品视频免费播放| 91色综合久久久久婷婷| 国产精品影视网| 欧美国产精品久久| 欧美狂野另类xxxxoooo| 国产乱子轮精品视频| 亚洲天堂久久久久久久| 国产日产欧美一区| 91精品国产91热久久久做人人| 成人亚洲精品久久久久软件| 不卡欧美aaaaa| 免费一级片91| 欧美人牲a欧美精品| 日本一道高清亚洲日美韩| 91精品国产福利| 国产91丝袜在线观看| 日韩精品一二三区| 欧美一级夜夜爽| 欧美浪妇xxxx高跟鞋交| 亚洲制服丝袜一区| 久久女同互慰一区二区三区| 久久一日本道色综合| 欧美一卡二卡在线| 午夜精品久久久久| 亚洲精品日韩综合观看成人91| 亚洲午夜激情av| 亚洲精品视频在线| 日韩高清国产一区在线| 亚洲福利视频一区| 亚洲国产精品一区二区www在线| 欧洲精品在线观看| 国产三级三级三级精品8ⅰ区| 中文字幕一区二区三区乱码在线| 欧美日韩免费观看一区二区三区 | 国产精品影视在线| 九九国产精品视频| 蜜桃视频在线观看一区| 午夜精品一区二区三区三上悠亚| 亚洲欧美日韩国产综合| 午夜日韩在线电影| 美腿丝袜亚洲一区| 国产大陆a不卡| 精品在线免费观看| 国产精品99久| aaa欧美日韩| 欧美体内she精高潮| 国产精品白丝jk黑袜喷水| 国产成人免费视频| 欧美区在线观看| 欧美精品高清视频| 久久嫩草精品久久久精品| 国产精品高潮呻吟| 亚洲国产aⅴ成人精品无吗| 日本成人中文字幕在线视频 | 欧美日韩视频专区在线播放| 波多野结衣一区二区三区 | 亚洲视频在线一区| 香蕉影视欧美成人| 国产美女在线观看一区| 精品国产髙清在线看国产毛片| 亚洲丝袜另类动漫二区|