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

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

?? 5.2.3-1.c

?? 《單片機C語言編程與實例》的代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include<reg51.h>
#include<math.h>
#include<INTRINS.H>
#define Uchar unsigned char
/*注:8031的晶振頻率為12MHz*/
/***********液晶顯示器接口引腳定義***************/
sbit	Elcm=P2^7;	
sbit	CSALCM=	P2^2;
sbit	CSBLCM=	P2^3;
sbit	Dilcm=P2^0;
sbit	Rwlcm=P2^1;
sfr 	Datalcm=0x80;				/*數據口*/
/***********常用操作命令和參數定義***************/
#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;
	col=0;
	row=0;
	Delay(40);					/*延時大約40Ms,等待外設準備好*/
	Lcminit();					/*液晶模塊初始化,包括全屏幕清屏*/
	Putstr(STR1,12);				/*第一行字符輸出,12字節*/
	col=0;
	row=2;
	Putstr(STR2,14);				/*第二行字符輸出,14字節*/
	col=0;
	row=4;
	Putstr(STR3,11);				/*第三行字符輸出,11字節*/
	col=0;
	row=6;
	Putstr(STR4,12);				/*第四行字符輸出,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(x);			/*定位新的顯示起始行*/
		x++;
		Delay(100);			/*延時,控制滾動速度*/
		};
}

/***********************畫線,任意方向的斜線,不支持垂直的或水平線***********************/
void Linexy(Uchar endx,Uchar endy)
{
	register Uchar t;
	int xerr=0,yerr=0,delta_x,delta_y,distance;
	Uchar incx,incy;
	delta_x=endx-col; 			/*計算兩個方向的距離*/
	delta_y=endy-row;
	if(delta_x>0) incx=1; 			/*計算增量方向,增量為0表示既不是垂直線也不是水平線*/
	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;
	delta_x = cabs( delta_x ); 		/* 判定哪個距離比較大*/
	delta_y = cabs( delta_y );
	if( delta_x > delta_y ) distance=delta_x;
	else distance=delta_y;
/*開始畫線*/
	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();			/*坐標定位,返回時保留分區狀態不變*/
		Dilcm = 1;				/*數據輸出*/
		Rwlcm = 0;			/*寫輸出*/
		Datalcm = X;			/*數據輸出到數據口*/
		Elcm = 1;				/*讀入到LCM*/
		_nop_();
		Elcm = 0;
	}

/*********************************命令輸出到左區控制口*********************************/
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;			/*寫輸出*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人中文字幕在线| 欧美在线观看一区| 日本精品一级二级| 欧美va亚洲va在线观看蝴蝶网| 国产精品久久久久一区二区三区| 日日夜夜精品视频免费| 国产成人精品网址| 欧美一区中文字幕| 亚洲免费伊人电影| 成人h版在线观看| 亚洲精品在线三区| 秋霞影院一区二区| 欧美一a一片一级一片| 中文字幕av资源一区| 蜜臀91精品一区二区三区| 欧美午夜精品一区二区三区| 国产精品麻豆一区二区| 国产成人自拍网| 精品sm在线观看| 裸体一区二区三区| 日韩一级片网址| 日韩1区2区3区| 欧美日韩三级一区二区| 一区二区三区.www| 日本福利一区二区| 亚洲美女免费在线| 91极品视觉盛宴| 一区二区三区不卡视频| 欧美性一级生活| 五月婷婷激情综合网| 欧美日韩一区二区三区四区五区 | 九九视频精品免费| 91精品中文字幕一区二区三区| 一区二区三区在线影院| 色av综合在线| 夜夜揉揉日日人人青青一国产精品| 91在线播放网址| 亚洲色欲色欲www在线观看| 99久久久久免费精品国产| 欧美激情一区二区| 成人av免费在线观看| 中文字幕一区在线| 91精彩视频在线观看| 亚洲国产精品久久人人爱蜜臀| 欧美视频第二页| 丝袜a∨在线一区二区三区不卡| 91精品国产91久久久久久最新毛片 | 色香蕉久久蜜桃| 亚洲午夜国产一区99re久久| 欧美日韩一区二区三区视频| 日韩高清不卡一区二区三区| 日韩亚洲欧美中文三级| 国产精品99久久久久久久vr | 亚洲视频在线一区二区| 色婷婷激情一区二区三区| 亚洲福利国产精品| 日韩精品最新网址| 国产福利一区二区三区| 综合久久综合久久| 欧美精品v日韩精品v韩国精品v| 视频一区国产视频| 久久日一线二线三线suv| 高清不卡一二三区| 一区二区三区日韩欧美| 欧美一区二区在线视频| 韩国av一区二区三区在线观看| 国产精品午夜电影| 欧美放荡的少妇| 成人自拍视频在线观看| 天天做天天摸天天爽国产一区| 久久综合色婷婷| 在线一区二区三区四区| 精品制服美女丁香| 亚洲色图欧美在线| 日韩视频中午一区| 97精品国产露脸对白| 蜜臀久久99精品久久久久久9| 中文字幕中文字幕在线一区 | 国产91丝袜在线观看| 亚洲成人tv网| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 国产精品久久久久精k8 | 亚洲第一av色| 国产精品久久久久9999吃药| 欧美二区在线观看| 色综合久久综合| 国产精品亚洲人在线观看| 亚洲观看高清完整版在线观看| 久久久亚洲午夜电影| 精品视频一区三区九区| 成人少妇影院yyyy| 国产一本一道久久香蕉| 日本不卡免费在线视频| 一区二区三区四区不卡在线 | 韩国av一区二区| 日韩精品每日更新| 一区二区三区国产精华| 中文字幕av免费专区久久| 精品久久久久久久久久久久包黑料| 在线影视一区二区三区| 成人午夜激情视频| 国产精品一区二区久久精品爱涩| 三级一区在线视频先锋| 一区二区三区国产精华| 亚洲精品国产第一综合99久久| 国产欧美日韩视频在线观看| 精品理论电影在线观看| 欧美一区二区视频免费观看| 欧美日韩一区二区在线观看视频| 色欲综合视频天天天| 99国产精品国产精品久久| 国产一区二区按摩在线观看| 久久99国内精品| 美女免费视频一区| 美女一区二区视频| 日本午夜一本久久久综合| 视频一区在线播放| 偷窥少妇高潮呻吟av久久免费| 亚洲一二三四久久| 亚洲国产视频一区二区| 亚洲.国产.中文慕字在线| 亚洲va韩国va欧美va| 丝袜亚洲另类欧美| 日本欧美肥老太交大片| 久久成人综合网| 国产精品影视天天线| 国产激情精品久久久第一区二区 | 一区二区成人在线视频| 一级精品视频在线观看宜春院| 樱花影视一区二区| 午夜影院在线观看欧美| 免费高清在线一区| 国产成人在线视频网站| av一二三不卡影片| 欧美丝袜丝nylons| 日韩一级片在线观看| 国产视频一区二区在线| 综合分类小说区另类春色亚洲小说欧美 | 国内欧美视频一区二区| 国产成人免费视频网站| 93久久精品日日躁夜夜躁欧美| 色8久久人人97超碰香蕉987| 9191成人精品久久| 久久丝袜美腿综合| 亚洲乱码国产乱码精品精的特点| 亚洲成av人影院| 国产一区二区精品久久99| 99久久99久久精品免费看蜜桃 | 欧美电影影音先锋| 久久久久国产精品免费免费搜索| 亚洲国产精品av| 日产精品久久久久久久性色| 国产一区在线观看视频| 一本到高清视频免费精品| 欧美一区二区成人| 国产精品欧美精品| 免费在线看成人av| av不卡在线播放| 日韩你懂的在线播放| 亚洲欧洲av色图| 蜜桃一区二区三区四区| 91色综合久久久久婷婷| 欧美一个色资源| 亚洲黄色免费网站| 国产美女久久久久| 欧美系列在线观看| 久久色中文字幕| 亚洲成人精品一区| 99精品欧美一区二区三区综合在线| 3d动漫精品啪啪1区2区免费| 国产精品天天看| 久久成人免费网站| 欧美人xxxx| 亚洲精品免费在线观看| 国产激情一区二区三区四区| 欧美精品欧美精品系列| 亚洲免费伊人电影| 成人黄色小视频在线观看| 精品国产一二三| 天天色 色综合| 在线观看欧美精品| 国产欧美精品一区二区色综合| 麻豆精品一二三| 欧美午夜寂寞影院| 亚洲欧美乱综合| 成人永久看片免费视频天堂| 欧美变态tickling挠脚心| 婷婷国产在线综合| 欧美日韩亚洲综合| 一区二区三区日韩欧美| 91在线高清观看| 中文字幕视频一区| 成人动漫视频在线| 国产精品网站导航| 成人av免费在线播放| 欧美激情一区二区| gogo大胆日本视频一区| 中文字幕av一区二区三区免费看| 国产盗摄视频一区二区三区| 久久久美女艺术照精彩视频福利播放 |