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

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

?? 12864.asm.txt

?? 這是本人最近編寫的源代碼
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
/*寫漢字液晶子程 液晶屏分為4行*12列漢字,全部使用模擬接口方式。
/*		 TGLCMLIMIT64A接口程序(模擬方式)
	液晶模塊供應商:廣州市盛寶電子有限公司	Tel:020-87592491 Fax:87541571
	Email:	tinsharp@public.guangzhou.gd.cn
;***************************************************************************
;連線圖:
;*LCM---89C52*  *LCM---89C52*   *LCM-------89C52*     *LCM----------89C52* *
;*DB0---P0.0*   *DB4---P0.4*    *D/I-------P2.6*      *CS1----------P2.4*  *
;*DB1---P0.1*   *DB5---P0.5*    *R/W-------P2.7*      *CS2----------P2.5*  *
;*DB2---P0.2*   *DB6---P0.6*    *RST--------VCC*      *CS3----------P3.2*  * 
;*DB3---P0.3*   *DB7---P0.7*    *E---------P2.3*                           *
;注:89C52的晶振頻率為12MHz                                                 *
;***************************************************************************/
//畫線部分請參照avr的c程序。
/*#pragma src			/*生成ASM文件開關,必要時打開	*/
#include<REG52.H>
#include<math.h>
#include<INTRINS.H>

#define	Uchar unsigned char

/***********液晶顯示器接口引腳定義***************/

sbit	Elcm=	P2^3;		//
sbit	CS1LCM=	P2^4;		//
sbit	CS2LCM=	P2^5;		//
sbit	CS3LCM=	P3^2;		/*這個連接只是做實驗的臨時接法。*/
sbit	Dilcm=	P2^6;		//
sbit	Rwlcm=	P2^7;		//
sfr Datalcm=	0x80;		//數據口
unsigned char testi[]={"浸渠叁繩漱塔烴威犧曉玄瑤"};

/***********常用操作命令和參數定義***************/
#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	 MODM		0x40	/*左區和中區分界	*/
#define	 MODR		0x80	/*中區和右區分界	*/
#define	LCMLIMIT	0xC0	/*顯示區的右邊界	*/

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

/*****************函數列表**********************/
void Lcminit(void);		/*液晶模塊初始化	*/
void Delay(Uchar);		/*延時,入口數為Ms	*/
void lcdbusyL(void);		/*busy判斷、等待(左區)	*/
void lcdbusyM(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 WrcmdM(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);

/******************數組列表*********************/
Uchar code Ezk[];		/*ASCII常規字符點陣碼表	*/
Uchar code Hzk[];		/*自用漢字點陣碼表	*/
Uchar code STR1[];		/*自定義字符串		*/
Uchar code STR2[];		//
Uchar code STR3[];		//
Uchar code STR4[];		//


/********************************/
/* 演示主程序			*/
/********************************/
void main(void)

{
 	Uchar x,y;
	col=0;
	row=0;
	Delay(40);		/*延時大約40Ms,等待外設準備好	*/
	Lcminit();		/*液晶模塊初始化,包括全屏幕清屏*/
	Putstr(STR2,24);	/*第一行字符輸出,24字節	*/
	col=0;
	row=2;
	Putstr(STR1,12);	/*第二行字符輸出,12字節	*/
	col=0;
	row=4;
	Putstr(STR3,24);	/*第三行字符輸出,24字節	*/
	col=0;
	row=6;
	Putstr(STR4,24);	/*第四行字符輸出,12字節	*/
	x=0;
	col=0;
	row=0;
	xy = 1;			/*方向標志。定為水平方向	*/
	Linehv(192);		/*畫一條橫線(0,0)-(191,0)	*/
	col=0;
	row=15;
	xy = 1;
	Linehv(192);		/*畫一條橫線(0,15)-(191,15)	*/
	col=0;
	row=32;
	xy = 1;
	Linehv(192);		/*畫一條橫線(0,32)-(191,32)	*/
	col=0;
	row=1;
	xy = 0;			/*方向標志。定為垂直方向	*/
	Linehv(31);		/*畫一條豎線(0,1)-(0,31)	*/
	col=191;
	row=1;
	xy = 0;
	Linehv(31);		/*畫一條豎線(191,1)-(191,31)	*/
	col=0;			/*設定斜線的起點坐標		*/
	row=63;
	Linexy(44,31);		/*畫一段斜線(0,63)-(44,31)	*/
	col=44;
	row=31;
	Linexy(190,62);		/*繼續畫斜線(44,31)-(191,63)	*/
	while(1){
		Rollscreen(y);	/*定位新的顯示起*/
		y++;
		y %=8;
		x=testi[y];
		Delay(100);	/*延時,控制滾動速度	*/
		};
}


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

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);
		WrcmdM(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_();
		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 WrcmdM(Uchar X)
	{
		lcdbusyM();		/*確定分區,返回時保留分區狀態不變*/
		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		*/
        CS3LCM = 1;		/*SETB	CS3		*/
	wtcom();		/* waitting for enable	*/
	}

void lcdbusyM(void)
	{
        CS1LCM = 1;		/*SETB	CS1		*/
        CS2LCM = 0;		/*CLR	CS2		*/
        CS3LCM = 1;		/*SETB	CS3		*/
	wtcom();		/* waitting for enable	*/
	}

void lcdbusyR(void)
	{
        CS1LCM = 1;		/*SETB	CS1		*/
        CS2LCM = 1;		/*SETB	CS2		*/
        CS3LCM = 0;		/*CLR	CS3		*/
	wtcom();		/* waitting for enable	*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
舔着乳尖日韩一区| 国产成人丝袜美腿| 中文天堂在线一区| 欧美日韩高清一区| www.一区二区| 美女网站色91| 一区二区三区四区乱视频| 精品国产自在久精品国产| 欧洲精品一区二区| 国产91高潮流白浆在线麻豆| 美女国产一区二区| 亚洲一区视频在线观看视频| 中文字幕的久久| 精品国产不卡一区二区三区| 欧美精品在欧美一区二区少妇| av在线一区二区三区| 国产精品综合网| 麻豆成人免费电影| 婷婷久久综合九色综合绿巨人| 亚洲免费高清视频在线| 中文字幕高清不卡| 国产日韩综合av| 2021中文字幕一区亚洲| 欧美一区二区成人| 91.xcao| 欧美色视频在线观看| av电影天堂一区二区在线观看| 国产精品一区二区三区99| 九九久久精品视频| 免费高清在线一区| 91丨国产丨九色丨pron| 国产美女在线观看一区| 久草这里只有精品视频| 另类调教123区| 久久国产精品72免费观看| 轻轻草成人在线| 日韩制服丝袜先锋影音| 婷婷久久综合九色综合绿巨人| 亚洲高清不卡在线| 亚洲国产成人av网| 天天综合色天天综合| 天天综合网 天天综合色| 日韩精品一二三区| 日本一不卡视频| 久久精品国产成人一区二区三区| 日本欧美在线观看| 韩国毛片一区二区三区| 国产在线国偷精品产拍免费yy| 韩国成人在线视频| 从欧美一区二区三区| eeuss影院一区二区三区| 99re6这里只有精品视频在线观看| 99国产精品久| 欧美精品一二三四| 欧美成va人片在线观看| 国产日韩欧美不卡在线| ...xxx性欧美| 亚洲午夜一区二区| 蜜桃一区二区三区四区| 精品一区二区三区久久| 国产精品自在在线| 色一区在线观看| 欧美精品在线视频| 精品成人一区二区三区四区| 国产欧美综合色| 一区二区三区国产精华| 六月婷婷色综合| 国产成人av电影在线| 一本一道综合狠狠老| 欧美日韩二区三区| 久久综合色天天久久综合图片| 国产精品网曝门| 亚洲第一成人在线| 国产激情一区二区三区四区| 9人人澡人人爽人人精品| 欧美日韩不卡一区二区| 亚洲激情第一区| 青青青伊人色综合久久| 波多野结衣一区二区三区| 欧美日韩一级二级三级| 久久精品免视看| 亚洲高清视频在线| 国产亚洲精品aa| 中文字幕国产一区| 久久99国产精品久久| 国产a级毛片一区| 欧美美女一区二区| 久久精品夜夜夜夜久久| 国产精品视频九色porn| 日韩精品色哟哟| 成人av电影在线| 日韩三级av在线播放| 欧美高清在线一区二区| 日本中文字幕一区二区视频| 国产精品女同互慰在线看| 亚洲一区二区三区国产| 国产老肥熟一区二区三区| 精品视频1区2区3区| 欧美激情在线一区二区三区| 亚洲成人一区二区在线观看| 成人国产精品免费观看动漫| 91精品国产91久久久久久一区二区| 欧美经典一区二区| 日本色综合中文字幕| 色婷婷狠狠综合| 久久久不卡网国产精品二区| 首页国产丝袜综合| 91美女片黄在线| 中文字幕第一区第二区| 久久精品国产免费| 777久久久精品| 亚洲精品菠萝久久久久久久| 粉嫩一区二区三区性色av| 日韩女优电影在线观看| 亚洲成在人线在线播放| 精品美女一区二区三区| 亚洲国产美女搞黄色| 成人av在线一区二区三区| 久久久99免费| 国产美女精品人人做人人爽 | 亚洲成人高清在线| 色欧美片视频在线观看| 中文字幕永久在线不卡| 国产精品一区二区久激情瑜伽 | av午夜一区麻豆| 亚洲精品一区二区三区福利| 秋霞电影一区二区| 91精品久久久久久久久99蜜臂 | 大陆成人av片| 亚洲国产成人午夜在线一区| 国产综合久久久久久鬼色| 精品久久久久久久久久久院品网| 奇米精品一区二区三区在线观看| 欧美伦理影视网| 日韩综合一区二区| 日韩欧美高清在线| 精品国产免费人成电影在线观看四季| 精品中文字幕一区二区| 日本一区二区三区视频视频| 欧美三级日韩在线| 国产露脸91国语对白| 亚洲三级视频在线观看| 欧美视频中文一区二区三区在线观看| 亚洲电影你懂得| 国产精品你懂的在线| 日韩一区二区三区免费观看| 欧美日韩大陆一区二区| 97精品电影院| 亚洲一区二三区| 欧美影视一区在线| 性欧美疯狂xxxxbbbb| 91精品国产高清一区二区三区 | 精品国产91乱码一区二区三区| 免费成人在线视频观看| 日韩久久久精品| 国产一区999| 国产精品国产三级国产普通话99| av不卡在线播放| 亚洲午夜久久久久久久久久久| 欧美日韩国产高清一区二区三区| 青娱乐精品在线视频| 国产亚洲欧美色| 91丝袜美腿高跟国产极品老师| 一区二区三区免费观看| 91精品黄色片免费大全| 国产九九视频一区二区三区| 亚洲丝袜精品丝袜在线| 欧美另类z0zxhd电影| 国产又粗又猛又爽又黄91精品| 国产精品三级在线观看| 欧美午夜精品一区二区三区| 久久99精品视频| 亚洲欧美日韩久久精品| 欧美一级二级在线观看| 懂色av一区二区夜夜嗨| 亚洲不卡在线观看| 国产午夜精品一区二区三区嫩草| 色哟哟国产精品| 精品一区二区三区在线观看| ●精品国产综合乱码久久久久| 欧美精品日韩精品| 成人性生交大片| 日韩精品一级中文字幕精品视频免费观看 | 97精品国产97久久久久久久久久久久 | 中文字幕欧美激情| 欧美精品欧美精品系列| 成人午夜电影网站| 奇米影视在线99精品| 亚洲欧美福利一区二区| 精品少妇一区二区三区在线播放| 91美女片黄在线观看91美女| 久久er精品视频| 一区二区三区四区在线免费观看| 欧美成va人片在线观看| 欧美日韩在线播放| 高清国产一区二区三区| 日本免费新一区视频| 一区二区三区欧美| 国产精品女主播在线观看| 亚洲精品一区在线观看|