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

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

?? sed1335.c

?? C8051F020的SED1335驅動程序
?? C
字號:
//============================================================================
// Header:   SED1335驅動320x240圖形液晶驅動程序
// Author:   wjxiao 
// Date:     2005-08-15 
//============================================================================
#include <C8051F020.h>
//#include <CharInt.h>
#include <intrins.h>
#include <string.h>
#include <font.c>
#include <Asc16x24.c>
#include <ASc16x16.c>
#include <ASc8x16.c>
//============================================================================
// 	地址定義
//----------------------------------------------------------------------------
uchar	bdata	lcd_cbus;
sbit	WR	=	lcd_cbus^3;
sbit	RD	=	lcd_cbus^4;
sbit	CS	=	lcd_cbus^5;
sbit	A0	=	lcd_cbus^6;
sbit	RES	=	lcd_cbus^7;
//============================================================================
#define SystemSet	0x40	// 	初始化設置,后續8字節參數串ParaSysTable8[]
	uchar code ParaSysTable8[] = // P1-P8參數
	{	
		0x30,0x87,0x07,0x27,0x42,0xf0,0x28,0x00	
	};	
//----------------------------------------------------------------------------  		
#define Scroll		0x44	// 	 顯示域設置,后續10字節參數串ParaScrTableA[]
	#define BasePart1	0x00
	#define BasePart2	0x28
	#define BasePart3	0x28*2
	#define BasePart4	0x00
	uchar code ParaScrTableA[] = 
	{	
		0x00,BasePart1,0xF0,0x00,BasePart2,0xF0,0x00,BasePart3,0x00,BasePart4 
	};
//----------------------------------------------------------------------------
#define SleepIn		0x53	//	休閑模式設置  	 后續參數:無 

#define DispOn		0x59	//	顯示狀態設置  	 后續參數1字節
#define	DispOff		0x58

#define HdotScr		0x5a	//	點位移設置		 后續參數1字節 
#define	Ovlay		0x5b	//	顯示合成方式設置 后續參數1字節
#define CgramAdr	0x5c	//	Cgram首地址設置	 后續參數2字節
#define	CsrForm		0x5d	//	光標形狀設置	 后續參數2字節



#define CsrDirR		0x4c	//	光標移動方向設置  后續參數:無
#define CsrDirL		0x4d
#define CsrDirU		0x4e
#define CsrDirD		0x4f



#define	CsrW		0x46	//	光標指針設置	后續參數2字節
#define	CsrR		0x47	//	讀取光標指針	后續參數2字節
#define	mWrite		0x42	//	數據寫入設置	后續參數N字節
#define	mRead		0x43	//	數據讀取設置	后續參數N字節
//==============================================================================
#define Busy		0x40	 // 忙狀態標志位0b0100 0000
#define	paraP9		40		 // 相對于320 X 240
//==============================================================================
void WriteData( uchar dataW );
void WriteCommand( uchar CommandByte );
void LcmClear( uchar port );
void Locatexy(uchar x,uchar y, uchar attribs);
void PutStr24( uchar Port, uchar x, uchar y, char *ptr, uchar len, bit attr );
void PutStr16( uchar Port, uchar x, uchar y, char *ptr, uchar len, bit attr );
void PutStr32( uchar Port, uchar x, uchar y, char *ptr, uchar len, bit attr );
//============================================================================
// 寫指令代碼子程序 
//----------------------------------------------------------------------------
#define		databus		P7
void WriteCommand( uchar Command )
{	
	P74OUT   = 0xf3;

	CS  = 	0;
	A0	=	1;
	RD	=	1;
	WR	=	0; 
	P6	= lcd_cbus;
	databus	= Command;
	WR	=	1;
	CS = 1;
	P6	= lcd_cbus;
}
//============================================================================
// 寫參數及顯示數據子程序 
//----------------------------------------------------------------------------
void WriteData( uchar dataW )
{	
	P74OUT   = 0xf3;

	A0	=	0;
	RD	=	1;
	WR	=	0;  
	CS 	=	0;
	P6	= 	lcd_cbus;
	databus	= dataW;
	WR	=	1;
	CS = 1;
	P6	= lcd_cbus;
}
//============================================================================
// 讀參數及顯示數據子程序
//----------------------------------------------------------------------------
uchar ReadDataLcm( void )
{
	uchar dataD;
	
	P74OUT   = 0x33;
	P7  =	0xff;
	A0	=	1;
	WR	=	1;
	RD	=	0;   
	CS 	= 	0;
	P6	= 	lcd_cbus;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	dataD = databus;

	RD	=	1;
	CS  =   1;
	P6	= 	lcd_cbus;
	return dataD;
}
//============================================================================
// 	初試化
//----------------------------------------------------------------------------
void LcmInition( void ) 
{
	uchar i;
	
	RES = 1;	
	WriteCommand( SystemSet );		// 系統參數設置
	for (i=0;i<8;i++) 
	{				
		WriteData( ParaSysTable8[i] );	
	}

	WriteCommand( Scroll ); 		// 設定顯示區域起始地址
	for (i=0;i<10;i++) 
	{
		WriteData( ParaScrTableA[i] );
	}

	WriteCommand( HdotScr );		// 寫入點位移指令代碼
	WriteData( 0 );					// 寫入P1參數
	
	WriteCommand( Ovlay );			// 顯示合成方式設置
	WriteData( 0x0d );				// 顯示一區圖形,三區圖形屬性,二重"異或"合成

	WriteCommand( DispOn );			// 寫入指令代碼
	WriteData( 0x14 );				// 顯示 1~4 區開顯示,光標關顯示

   		
}
//============================================================================
// 	光標位定位,圖形方式下
//	(1)	x:	水平方向字節單位坐標
//	(2)	y:	垂直方向以行線定位的坐標
//	(3) 左上角約定坐標為( 0, 0 )
//----------------------------------------------------------------------------
void Locatexy(uchar port, uchar x,uchar y)
{
	uint temp;
	
	temp = (uint)y*paraP9 + x;
	WriteCommand( CsrW );				// 光標Locate,定位
	WriteData( (uchar)(temp & 0xff) );	// 寫入參數CSRL設置參數光標指針低8位
	WriteData( (uchar)( (temp >>8 ) + 0x28 * port) );	// 寫入參數CSRH設置參數光標指針高8位
}													
//============================================================================
// 	清屏  port 區
//----------------------------------------------------------------------------
void LcmClear( uchar port )
{
	uint i = 40*240;

	WriteCommand( CsrDirR ); 			// 光標自動右移
	Locatexy( port,0,0 );
	WriteCommand( mWrite );				// 數據寫入指令,代碼0x42
	while(i--)	
		WriteData( 0 );
}
//============================================================================
// 	顯示中西文混合字符串
//	(1) uchar port		: 	顯示區
//	(2)	uchar x			:	水平方向字節單位坐標
//	(3) uchar y			:	垂直方向以行線定位的坐標
//	(4)	uchar * Str		:	字符串指針,以 \0 結尾
//	(5) uchar LibName	:	字庫名(指針號)
//	(6)	bit attr		:	0 - 正常
//							1 - 反白
//----------------------------------------------------------------------------
void PutStr( uchar Port,uchar x,uchar y,char * Str,uchar LibName, bit attr)
{
	// 相對于ASCII,漢字為□字
	
	#define	Dot8	 	0 	
	#define	Dot16 		1
	#define	Dot24		2
	#define Dot32		3

	#define	ascii8		1, 16	
	#define	ascii16 	2, 16
	#define	ascii24		2, 24
	#define ascii32		0, 0

	#define	gb8			0, 0	
	#define	gb16	 	2, 16
	#define	gb24		3, 24
	#define gb32		4, 32
	
	uchar i,j,k;
	char  ASC_GB;
	char  code *p;

	struct
	{
	 	uchar byte;
		uchar high;					   
	} lattice[][4] = 
	{
	 	{	// ASCII字庫
			ascii8	, 	
			ascii16	, 
			ascii24	, 
			ascii32	,
		},									  
		{
			gb8		,
			gb16 	, 
			gb24	, 
			gb32	,  	
		}
		
	};	
				 
	WriteCommand( CsrDirD );        // 	光標自動下移
 	
	for( i=0;i<strlen(Str);i++)	
	{
		uchar c1,c2;
	
		c1 = Str[i];
        c2 = Str[i+1];
		//--------------------------------------------------------------------
		if(c1 <=128)  // ASCII
		{
			ASC_GB = 0;
			switch(LibName)
			{
				case Dot8:
					j = Str[i]-0x20;
					p = Asc8x16[j];
					break;

				case Dot16:
					for(j=0;j<sizeof(Asc16x16)/sizeof(Asc16x16[0]);j++)   // 查找定位
            			if( c1 == Asc16x16[j].Index[0] ) break;
					p = Asc16x16[j].Msk;
					break;

				case Dot24:
					for(j=0;j<sizeof(Asc16x24)/sizeof(Asc16x24[0]);j++)   // 查找定位
            			if( c1 == Asc16x24[j].Index[0] ) break;
					p = Asc16x24[j].Msk;
					break;
			}
		}	
		else 	// 漢字	
		{
       	  	ASC_GB = 1;
		  	switch(LibName)
			{
				case Dot16:
					for(j=0;j<sizeof(GB16)/sizeof(GB16[0]);j++)   // 查找定位
            			if( c1 == GB16[j].Index[0] &&
							c2 == GB16[j].Index[1] ) 
						break;
				 	p = GB16[j].Msk;
					break;

				case Dot24:
					for(j=0;j<sizeof(GB24)/sizeof(GB24[0]);j++)   // 查找定位
            			if( c1 == GB24[j].Index[0] &&
							c2 == GB24[j].Index[1] ) 
						break;
				 	p = GB24[j].Msk;
					break;

				case Dot32:
					for(j=0;j<sizeof(GB32)/sizeof(GB32[0]);j++)   // 查找定位
            			if( c1 == GB32[j].Index[0] &&
							c2 == GB32[j].Index[1] ) 
						break;
				 	p = GB32[j].Msk;
					break;
			}
		}
		
		for(j=0;j<lattice[ASC_GB][LibName].byte;j++)  // 分列輸出
        {
        	Locatexy(Port,x,y);
            WriteCommand( mWrite );     // 寫數據(命令)
            for(k=0;k<lattice[ASC_GB][LibName].high;k++) 
			{					
				uchar dat;

				dat = *p++;
				if(attr) dat = ~dat;
				WriteData(dat);
			}
			x++;  // 列數加1 
        }
		if(ASC_GB) i++;
	}
}
//============================================================================
// 顯示 顯示光標
//----------------------------------------------------------------------------
void DispCursor(uchar x, uchar y, uchar byte, uchar High, bit attr )
{
	uchar i,j;

	WriteCommand( CsrDirD ); 
	
	for(i=0;i<byte;i++)             // 分列輸出
    {
    	Locatexy(1,x+i,y);
        WriteCommand( mWrite );     // 寫數據(命令)
        for(j=0;j<High;j++) 
			if(attr) WriteData( 0xff );
			else     WriteData( 0x00 );
    }	
}


//=====================================================================================
//  繪點子程序,攜入參數X坐標的最高位決定寫或擦點
// ====================================================
void Point(uchar port, uint Px, uchar Py, bit attr )
{
	uint tempPtr;
	uchar tempD,tempP;
		
	tempPtr = (uint)Py * paraP9 + Px / 8;		
	WriteCommand( CsrDirD );						// CSRDIR 代碼(光標自動下移)
	WriteCommand( CsrW );							// 設置光標地址
	WriteData( (uchar)(tempPtr & 0xff) );
	WriteData( (uchar)(tempPtr /256) + 0x28 * port );
	WriteCommand( mRead );							// 讀顯示ram指令
	//Delay(50);
	tempD = ReadDataLcm();							// 讀取當前顯示數據
	tempP = 1<<(uchar)(7-Px & 0x0007);

// 根據預定屬性決定寫點或擦除
	if( attr )tempD |= tempP;	// 畫點
	else tempD &= ~tempP;				// 消點

	WriteCommand( CsrW );						// 重新設置光標地址
	WriteData( (uchar)(tempPtr & 0xff) );
	WriteData( (uchar)(tempPtr /256) + 0x28 * port );
	WriteCommand( mWrite );						// 代碼0x42,數據寫入指令
	WriteData( tempD );							// 寫入合成數據

}
/********************************************/
/*畫線。任意方向的斜線,直線數學方程	aX+bY=1	*/
/********************************************/
// 參數類型有待修改
void Linexy(uchar port, uint x0,uchar y0,uint xt,uchar yt,bit att)
{
	register uint t;
	int xdata 	xerr=0,yerr=0,delta_x,delta_y,distance;
	int	xdata incx,incy;
	uint row,col;
	delta_x	= xt-x0;							//計算坐標增量
	delta_y	= yt-y0;
	col	= x0;
	row	= y0;
	if(delta_x>0) incx=1;						//設置單步方向
	else 
    {
    	if( delta_x==0	) incx=0;				//垂直線
		else {incx=-1;delta_x=-delta_x;}
	}
	if(delta_y>0) incy=1;
	else
    {
    	if( delta_y==0	) incy=0;				//水平線
		else {incy=-1;delta_y=-delta_y;}
	}
	if(	delta_x	> delta_y )	distance=delta_x;	//選取基本增量坐標軸
	else distance=delta_y;

	for( t=0;t <= distance+1; t++ )
	{											//畫線輸出
		Point(port,(uint)col,row,att);				//畫點
		xerr +=	delta_x	;
		yerr +=	delta_y	;
		
		if(	xerr > distance	)
		{
			xerr-=distance;
			col+=incx;
		}
		if(	yerr > distance	)
		{
			yerr-=distance;
			row+=incy;
		}
	}
}
//======================================================================
//	矩形

void Rectangle(uchar port, uint x0, uchar y0, uint x1, uchar y1, bit attr)
{
	Linexy(port, x0, y0, x1, y0, attr);
	Linexy(port, x1, y0, x1, y1, attr);
	Linexy(port, x1, y1, x0, y1, attr);
	Linexy(port, x0, y1, x0, y0, attr);
}

void PortXCH(bit XCH) //	交換1、3顯示區
{
	uchar i;
	uchar code ParaScrTableA[][10] = 
	{	
		0x00,0x00,  0xF0,0x00,0x28,0xF0,0x00,0x28*2,0x00,0 ,
		0x00,0x28*2,0xF0,0x00,0x28,0xF0,0x00,0x00,  0x00,0 ,		
	};
		
	WriteCommand( 0x44 ); 			//設定顯示區域起始地址
	for (i=0;i<10;i++) 
		WriteData( ParaScrTableA[XCH][i] );
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色8久久精品久久久久久蜜| 国产精品伦理在线| 国产精品美女久久久久aⅴ| 亚洲图片有声小说| 国产福利精品一区二区| 欧美日韩国产乱码电影| 国产精品视频第一区| 日本va欧美va瓶| 欧美亚洲国产bt| 欧美国产日产图区| 九一九一国产精品| 欧美高清精品3d| 亚洲日本丝袜连裤袜办公室| 狠狠网亚洲精品| 欧美一区二区三区免费视频| 亚洲色图在线看| 成人精品电影在线观看| 久久精品亚洲乱码伦伦中文| 青青草97国产精品免费观看无弹窗版| av亚洲产国偷v产偷v自拍| 26uuu另类欧美| 精一区二区三区| 欧美一区二区黄| 性做久久久久久免费观看| 99国产精品久| 国产精品免费视频观看| 国产黄人亚洲片| 国产人妖乱国产精品人妖| 国产综合一区二区| 久久久久亚洲蜜桃| 国产精品69久久久久水密桃| 久久人人爽人人爽| 国产成人99久久亚洲综合精品| 久久久久久久久久久久久女国产乱| 精品一区二区久久久| 久久综合色之久久综合| 国内精品在线播放| 国产三级精品视频| 成人小视频在线| 亚洲色图都市小说| 欧美性一二三区| 日韩电影在线观看一区| 日韩欧美成人一区| 国产精品99久久久久久似苏梦涵 | 久久奇米777| 国产精品伊人色| 中文字幕日本不卡| 欧洲视频一区二区| 午夜国产精品一区| 精品国产一区二区三区忘忧草| 国产乱人伦精品一区二区在线观看| 国产日韩欧美高清| 色婷婷精品大视频在线蜜桃视频| 亚洲www啪成人一区二区麻豆| 337p亚洲精品色噜噜狠狠| 久久黄色级2电影| 国产精品免费久久久久| 欧美网站一区二区| 国产剧情一区在线| 亚洲欧美国产毛片在线| 欧美电影在哪看比较好| 国产高清无密码一区二区三区| 中文字幕在线不卡国产视频| 欧美日韩黄视频| 国产精品自产自拍| 一二三四区精品视频| 日韩一卡二卡三卡四卡| 国产精品18久久久久| 亚洲免费观看高清完整版在线观看熊 | 黑人精品欧美一区二区蜜桃| 国产精品电影一区二区三区| 欧美日韩国产一级| 成人一区在线观看| 日本伊人色综合网| 亚洲视频一区二区在线| 精品第一国产综合精品aⅴ| 91在线国产观看| 日韩成人午夜精品| 亚洲三级免费电影| 精品国产伦理网| 欧美精品日韩精品| 99re6这里只有精品视频在线观看| 日本不卡中文字幕| 亚洲精选免费视频| 国产日韩精品一区二区三区在线| 正在播放亚洲一区| av爱爱亚洲一区| 激情综合网最新| 午夜亚洲国产au精品一区二区| 国产拍揄自揄精品视频麻豆| 欧美一区二区三区思思人| 一本大道综合伊人精品热热| 国产98色在线|日韩| 蜜桃免费网站一区二区三区| 亚洲老司机在线| 亚洲欧美日韩中文字幕一区二区三区| 欧美成人a在线| 欧美一区二区久久久| 欧美性做爰猛烈叫床潮| 91蜜桃视频在线| 丁香桃色午夜亚洲一区二区三区| 美女视频第一区二区三区免费观看网站| 亚洲人成在线观看一区二区| 国产欧美日韩亚州综合 | 亚洲另类中文字| 国产精品日韩成人| 国产欧美日韩三区| 国产欧美一区二区精品性色| 26uuu久久天堂性欧美| 精品欧美乱码久久久久久1区2区| 91精品在线一区二区| 欧美日韩国产免费一区二区| 欧美色综合网站| 欧美在线不卡一区| 欧美日韩在线一区二区| 欧美日韩日日夜夜| 91精品国产全国免费观看| 欧美午夜精品免费| 欧美日韩二区三区| 欧美一级高清片| 久久综合久久综合久久综合| 久久久一区二区| 国产精品美女久久久久久| 国产精品网友自拍| 亚洲黄色在线视频| 亚洲va在线va天堂| 秋霞午夜鲁丝一区二区老狼| 久久精品国产成人一区二区三区 | 精品一区二区成人精品| 狠狠色丁香九九婷婷综合五月| 国产精品一区二区久久不卡| 国模套图日韩精品一区二区 | 欧美亚洲丝袜传媒另类| 欧美精品国产精品| 欧美xxxxxxxxx| 国产视频一区二区在线| 国产精品成人免费精品自在线观看| 亚洲女人小视频在线观看| 午夜精品福利久久久| 看片网站欧美日韩| 99精品视频一区二区| 欧美卡1卡2卡| 久久精品免视看| 一区二区三区日韩在线观看| 欧美aaaaaa午夜精品| 国产v综合v亚洲欧| 欧美三级蜜桃2在线观看| 日韩一区二区三区观看| 国产精品久久久久久福利一牛影视 | 午夜精品影院在线观看| 黄一区二区三区| 色婷婷激情综合| 久久综合九色综合97婷婷女人 | 精品毛片乱码1区2区3区| 久久欧美中文字幕| 一区二区三区日韩欧美| 寂寞少妇一区二区三区| 日本道精品一区二区三区| 日韩美女主播在线视频一区二区三区| 国产午夜精品美女毛片视频| 亚洲国产综合人成综合网站| 国内精品第一页| 欧美视频一区二区在线观看| 欧美激情中文字幕| 日韩成人免费看| 91久久精品一区二区三| www国产成人| 天天综合色天天| 色系网站成人免费| 久久精品视频一区二区三区| 亚洲午夜精品17c| 91视视频在线观看入口直接观看www| 日韩精品中文字幕一区| 亚洲成年人影院| 在线视频国内一区二区| 国产精品网站导航| 韩国三级在线一区| 91精品久久久久久久91蜜桃| 亚洲人成网站精品片在线观看| 国产美女娇喘av呻吟久久| 91精品国产综合久久精品| 亚洲精品乱码久久久久久| 成人av网站免费| 欧美国产精品一区| 国模套图日韩精品一区二区| 日韩欧美一级二级| 美女视频网站久久| 欧美片网站yy| 丝袜美腿一区二区三区| 欧美日韩和欧美的一区二区| 一区二区三区 在线观看视频| 97精品国产97久久久久久久久久久久| 久久久精品国产免大香伊| 韩国v欧美v日本v亚洲v| 精品国产三级电影在线观看| 美女视频第一区二区三区免费观看网站| 欧美人狂配大交3d怪物一区| 亚洲一区二区在线播放相泽| 在线视频观看一区| 亚洲h动漫在线|