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

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

?? lcd.c

?? LM128*64液晶驅動程序
?? C
?? 第 1 頁 / 共 2 頁
字號:

/*******************************************************
程序功能:LCD漢字及圖形點陣顯示
作者:FEDLT
廣西工學院電子信息工程03級
e-mail:fedlt@163.com
QQ:282695105

*********************************************************
接線說明:
89C51  LM1264ldc
P0.0~7 --- DB0~7(7~14)	
P2.0---RS(4)	
P2.1---R/W(5)	
P2.2---E(6)	 
P2.3---CS1(15)	
P2.4---CS2(16)	
P2.5---RST(17)	

*********************************************************/
#include<reg51.h>
#include<math.h>
#include<INTRINS.H>
#define Uchar unsigned char
/*注:89c51的晶振頻率為12MHz*/
/***********液晶顯示器接口引腳定義***************/
sbit	RS=P2^7;               /*RS控制信號*/  
sbit	RW=P2^6;               /*R/W控制信號*/ 
sbit	E=P2^5;	              /*使能信號*/
sbit	CS1=P2^4;              /*CS1控制信號*/
sbit	CS2=P2^3;               /*CS2控制信號*/
sbit	RST=P2^2;	           /*RST清零控制信號*/
sfr 	Data=0x80;				/*數據口*/
/***********常用操作命令和參數定義***************/
#define	 DISPON		0x3f		/*顯示on*/
#define	 DISPOFF	0x3e		/*顯示off	*/
#define	 DISPFIRST	0xc0		/*顯示起始行定義*/
#define	 SETX		0xb8		/*X定位設定指令(頁)*/
#define	 SETY		0x40		/*Y定位設定指令(列)*/
#define	 Lcdbusy	0x80		/*LCM忙判斷位*/

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

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

/*****************函數列表**********************/
void Lcdinit(void);				/*液晶模塊初始化*/
void Delay(Uchar);				/*延時,入口數為Ms	*/
void lcdbusyL(void);				/*busy判斷、等待(左區)*/
void lcdbusyR(void);				/*busy判斷、等待(右區)*/
void Putedot(Uchar);				/*半角字符輸出*/
void Putcdot(Uchar);				/*全角(漢字)輸出*/
void Wrdata(Uchar);				/*數據輸出給LCD*/
void Lcdclr(void);				/*LCD全屏幕清零(填充0)	*/
void wtcom(void);				/*公用busy等待*/
void Locatexy(void);				/*光標定位*/
void WrcmdL(Uchar);				/*左區命令輸出	*/
void WrcmdR(Uchar);				/*右區命令輸出	*/
void Putstr(Uchar posx,Uchar posy,Uchar *puts,Uchar i);		/*中英文字符串輸出*/
void Rollscreen(Uchar x);			/*屏幕向上滾動*/
void Rddata(void);				/*從液晶片上讀數據*/
void Linehv(Uchar posx,Uchar posy,Uchar length,Uchar XY);			/*橫(豎)方向畫線*/
void point(Uchar posx,Uchar posy);					/*打點*/
void Linexy(Uchar posx,Uchar posy,Uchar endx,Uchar endy);
void WR_rowcol(Uchar x,Uchar y);           /*把x,y的坐標值寫到行列對應的值中*/
/******************數組列表*********************/
Uchar code Ezk[];				/*ASCII常規字符點陣碼表	*/
Uchar code Hzk[];				/*自用漢字點陣碼表*/
Uchar code STR1[];				/*自定義字符串*/
Uchar code STR2[];
Uchar code STR3[];
Uchar code STR4[];
Uchar code STR5[];
/****************************************主程序*****************************************/
void main(void)
{
 	Uchar x=0;
	Delay(40);					/*延時大約40Ms,等待外設準備好*/
	Lcdinit();					/*液晶模塊初始化,包括全屏幕清屏*/
	Putstr(0,48,STR1,9);				/*第一行字符輸出,12字節*/
	Putstr(2,2,STR2,14);				/*第二行字符輸出,14字節*/
	Putstr(4,2,STR3,15);				/*第三行字符輸出,11字節*/
	Putstr(6,2,STR4,14);				/*第四行字符輸出,12字節*/
	Putstr(2,18,STR5,1);
	Linehv(0,0,128,1);				/*畫一條橫線(0,0)-(0,127)*/
	Linehv(16,0,128,1);				/*畫一條橫線(15,0)-(15,127)*/
	Linehv(32,0,128,1);				/*畫一條橫線(32,0)-(32,127)*/
    Linehv(48,0,128,1);	
    Linehv(63,0,128,1);	
    Linehv(0,47,16,0);	
	Linehv(1,0,63,0);				/*畫一條豎線(1,0)-(31,0)*/
	Linehv(1,127,63,0);				/*畫一條豎線(1,127)-(31,127)*/
	Linexy(0,0,16,48);				/*畫一段斜線(63,0)-(31,44)	*/
    point(10,3);
	point(10,5);
	point(10,7);
    point(10,9);
    point(10,11);
    
 	while(1){
		Rollscreen(x);			/*定位新的顯示起始行*/
		x++;
		Delay(100);			/*延時,控制滾動速度*/
		};
}

/*************************************液晶屏初始化**************************************/
void Lcdinit(void)
	{   
		cbyte = DISPOFF;			/*關閉顯示屏*/
		WrcmdL(cbyte);
		WrcmdR(cbyte);
		cbyte = DISPON;		    	/*打開顯示屏*/
		WrcmdL(cbyte);
		WrcmdR(cbyte);
		cbyte = DISPFIRST;			/*定義顯示起始行為零*/
		WrcmdL(cbyte);
		WrcmdR(cbyte);
		Lcdclr();                 /*清屏*/
		Locatexy();
	}
/*********************************制定坐標函數******************************************/
void WR_rowcol(Uchar x,Uchar y) 
  {row=x;
   col=y;
   }
/*********************************命令輸出到左區控制口*********************************/
void WrcmdL(Uchar X)
	{
		lcdbusyL();			/*確定分區,返回時保留分區狀態不變*/
		RS= 0;				/*命令操作*/
		RW = 0;			    /*寫輸出*/
		Data= X;			/*數據輸出到數據口*/
		E = 1;_nop_();E= 0;	/*讀入到LCD*/
	}

/*********************************命令輸出到右區控制口********************************/
void WrcmdR(Uchar X)
	{
		lcdbusyR();				/*確定分區,返回時保留分區狀態不變*/
		RS= 0;			     /*命令操作*/
		RW= 0;			/*寫輸出*/
		Data = X;			/*命令輸出到數據口*/
		E = 1;_nop_();E = 0;	/*讀入到LCM*/
	}
/************************分區操作允許等待,返回時保留分區選擇狀態*************************/
void lcdbusyL(void)
	{
        CS1 = 1; CS2 = 0;	/*置CS1為1,CS2為0,選擇左區*/
	   wtcom();				/*等待使能*/
	}
void lcdbusyR(void)
	{
        CS1= 0; CS2=1;	/*置CS1為0,CS2為1,選擇右區*/
        wtcom();	    /*等待使能*/
	}
void wtcom(void)
	{
	     RS= 0;				/*清零RS*/
	     RW = 1;			/*置RW為1*/
          Data = 0xFF;
	     E= 1;_nop_();	
     	while(Data & Lcdbusy);
      	E = 0;
	}
/************************************清屏,全屏幕清零***********************************/
void Lcdclr( void )
	{
	for(row=0;row<8;row++)
   		for(col=0;col<LCDLIMIT;col++) Wrdata(0);
	}
/******************根據設定的坐標數據,定位LCD上的下一個操作單元位置******************/
void Locatexy(void)
	{  Uchar  x,y;
	   switch (col&0x40)				/* col與0xC0*/
		{						/*條件分支執行	*/

case 0:	{lcdbusyL();break;}	/*左區*/
case 0x40:	{lcdbusyR();break;}	/*右區*/
		}
	   	x = row&0x07|SETX;
y = col&0x3F|SETY;
	    wtcom();				/*等待使能*/
	    RS= 0;					/*清零rs	*/
		RW= 0;				    /*清零RW*/
		Data = x;			
		E= 1;_nop_();E = 0;
		wtcom();				
     	RS = 0;					
		RW= 0;				
		Data= y;			
		E = 1;_nop_();E = 0;
	}
/*************************************數據寫輸出/**************************************/
void Wrdata(Uchar X)
	{
	    Locatexy();			/*坐標定位,返回時保留分區狀態不變*/
		RS= 1;				/*數據輸出*/
		RW = 0;			/*寫輸出*/
		Data = X;			/*數據輸出到數據口*/
		E = 1;				/*讀入到LCD*/
		_nop_();
		E = 0;
	}
/***********************畫線,任意方向的斜線,不支持垂直的或水平線***********************/
void Linexy(Uchar posx,Uchar posy,Uchar endx,Uchar endy)
{   
    Uchar t;
	int xerr=0,yerr=0,delta_x,delta_y,distance;
	Uchar incx,incy;
	WR_rowcol(posx,posy) ;
	delta_x=endy-row; 			/*計算兩個方向的距離*/
	delta_y=endx-col;
	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(row,col);
 	   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 posx,Uchar posy,Uchar length,Uchar XY)
	{   Uchar xs,ys;
	    if(XY==0x00)
	      xy=0;
		else xy=1;
	    WR_rowcol(posx,posy); 
		if (xy)
		   {ys = col;
			for (xs=0;xs<length;xs++)
			   { col = ys + xs;
				 point(row,col);}
			}
		else	{xs = row;
			for (ys=0;ys<length;ys++)
{
					row = xs + ys;
					point(row,col);}
				 }
}

/*****************************************畫點******************************************/
void point(Uchar posx,Uchar posy)
	{  	Uchar x1,y1,x,y; 
	    WR_rowcol(posx,posy);	
		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 posx,Uchar posy,Uchar *puts,Uchar i)
	{   Uchar j,X;
	    WR_rowcol(posx,posy); 
		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)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合狠狠综合| 一本一道波多野结衣一区二区| 欧美激情一区二区三区四区| 一本一道波多野结衣一区二区| 免费成人在线视频观看| 综合色中文字幕| 久久九九国产精品| 91精品欧美福利在线观看| 91年精品国产| 国产福利一区二区| 久热成人在线视频| 午夜天堂影视香蕉久久| 中文字幕巨乱亚洲| 亚洲精品一区二区三区精华液| 欧美日韩一区小说| 99久久精品一区二区| 国产乱码字幕精品高清av| 日本 国产 欧美色综合| 亚洲国产中文字幕在线视频综合| 国产精品视频一二三区 | kk眼镜猥琐国模调教系列一区二区| 午夜久久久久久电影| 亚洲免费电影在线| 成人欧美一区二区三区小说 | 国产欧美日韩精品一区| 欧美一区二区三区四区五区| 在线免费视频一区二区| 91亚洲午夜精品久久久久久| 成人一级片在线观看| 国产自产高清不卡| 久久99精品久久久久| 日韩电影在线观看一区| 午夜婷婷国产麻豆精品| 亚洲国产一区二区三区青草影视| 亚洲精品久久久蜜桃| 亚洲人成伊人成综合网小说| 国产精品久久久久久久久免费桃花 | 亚洲欧洲综合另类在线| 综合久久一区二区三区| 亚洲私人黄色宅男| 亚洲激情男女视频| 亚洲精品欧美综合四区| 亚洲精品成人精品456| 亚洲一区二区欧美日韩| 亚洲电影在线免费观看| 亚洲国产精品久久不卡毛片 | 日韩欧美一卡二卡| 日韩欧美一区在线观看| 精品美女被调教视频大全网站| 欧美大片在线观看一区二区| 精品久久久久久综合日本欧美| 日韩欧美国产wwwww| 久久综合色播五月| 国产精品美女久久久久久 | 亚洲专区一二三| 亚洲bt欧美bt精品| 久久爱www久久做| 国产成人啪免费观看软件| 9久草视频在线视频精品| 欧美少妇xxx| 日韩一二三四区| 国产色91在线| 亚洲精品自拍动漫在线| 婷婷激情综合网| 九色porny丨国产精品| 国产**成人网毛片九色| 色综合久久久久网| 欧美一区中文字幕| 久久九九影视网| 亚洲欧洲日韩女同| 午夜视频一区二区三区| 国产一区二区在线观看视频| 成人不卡免费av| 欧美精品久久天天躁| 久久亚洲一级片| 一区二区久久久| 久久66热re国产| 99精品桃花视频在线观看| 久久精品男人的天堂| 中文字幕日韩一区| 蜜臀av性久久久久蜜臀aⅴ| 国产成人精品一区二| 欧美日韩亚洲综合一区二区三区| 久久婷婷色综合| 一区二区欧美精品| 国产一区二区三区四区五区入口| 色诱视频网站一区| 欧美精品一区二区三区在线| 亚洲欧美乱综合| 激情图区综合网| 欧美性猛交xxxxxx富婆| 久久精品这里都是精品| 亚洲高清久久久| 成人a免费在线看| 欧美一区二区精品久久911| 亚洲女同一区二区| 国产一区二区三区精品欧美日韩一区二区三区 | 日本一道高清亚洲日美韩| 国产精品18久久久久| 欧美挠脚心视频网站| 国产精品人成在线观看免费 | 国产喷白浆一区二区三区| 午夜国产精品影院在线观看| 不卡的av网站| 久久综合九色综合97_久久久| 亚洲aaa精品| 色偷偷成人一区二区三区91| 久久精品在这里| 麻豆一区二区三| 欧美日韩视频专区在线播放| 国产精品私人影院| 国产成人一区二区精品非洲| 精品日韩在线一区| 日韩精品色哟哟| 精品视频在线免费观看| 樱花影视一区二区| 色域天天综合网| 亚洲人一二三区| 成人激情电影免费在线观看| 国产欧美日韩三级| 国产一区二区三区免费播放| 欧美成人综合网站| 美女视频第一区二区三区免费观看网站| 在线观看视频一区| 亚洲裸体在线观看| 91视频com| 一区二区三区**美女毛片| 色综合久久99| 亚洲自拍都市欧美小说| 在线观看日韩av先锋影音电影院| 一区精品在线播放| 色综合天天综合在线视频| 亚洲欧美成人一区二区三区| 99精品1区2区| 亚洲美女视频在线| 欧美伊人精品成人久久综合97| 伊人色综合久久天天| 91高清在线观看| 亚洲午夜电影网| 在线成人av网站| 日韩不卡一区二区三区| 日韩欧美不卡在线观看视频| 久久电影国产免费久久电影| 精品国产乱码久久久久久蜜臀| 精品一区二区三区免费毛片爱| 精品日韩欧美一区二区| 国产乱码精品一区二区三区忘忧草 | 蜜臀99久久精品久久久久久软件| 日韩一区国产二区欧美三区| 麻豆一区二区三区| 久久精品无码一区二区三区| 大桥未久av一区二区三区中文| 日韩毛片在线免费观看| 在线观看亚洲成人| 蜜臀91精品一区二区三区| 欧美成人伊人久久综合网| 国产91精品免费| 亚洲精品成人精品456| 91精品国产一区二区三区| 狠狠色狠狠色综合日日91app| 国产日韩精品一区二区三区 | 亚洲精品国产高清久久伦理二区| 日本韩国欧美一区| 日韩电影免费在线| 国产视频一区在线播放| 色综合久久综合中文综合网| 一区二区不卡在线播放 | 日韩免费观看2025年上映的电影 | 色成年激情久久综合| 视频一区二区不卡| 日本一区二区三区四区在线视频| 91女厕偷拍女厕偷拍高清| 日韩成人一区二区三区在线观看| 国产午夜精品一区二区三区四区| 91麻豆免费观看| 人妖欧美一区二区| 亚洲图片另类小说| 91精品视频网| 91在线云播放| 蜜臀久久99精品久久久久久9 | 精品国产乱码久久久久久免费 | 亚洲一区二区三区国产| 久久这里只有精品6| 欧美三区在线观看| 国产成人av电影| 男男成人高潮片免费网站| 日本一区二区免费在线观看视频| 欧美在线观看18| 国产精品1024| 日本不卡在线视频| 《视频一区视频二区| 欧美v日韩v国产v| 日本韩国欧美在线| 成人午夜大片免费观看| 日本视频中文字幕一区二区三区| 国产精品视频第一区| 日韩精品中文字幕一区| 欧美亚一区二区| 本田岬高潮一区二区三区| 捆绑调教一区二区三区|