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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? upsd3300_lcd.c

?? UPSD單片機驅(qū)動程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
			}
		
		 }
		else
		{
			if(i%2==0)
			{
			dot_buffer[i] =	pic[i+1];
					
			}
			if(i%2==1)
			{
				dot_buffer[i] =	pic[i-1];
			
			}
	
		}
	}
}

void disp_one_asc3(unsigned char width,unsigned char length,unsigned char *pic)
{
	unsigned long  i;
	for (i=0;i<width*length;i++)
	{
		if(mode) 
		{
			if(i%3==0)
			{
				dot_buffer[i] =	~pic[i+2];
					
			}
			if(i%3==1)
			{
				dot_buffer[i] =	~pic[i];
					
			}
			if(i%3==2)
			{
				dot_buffer[i] =	~pic[i-2];
					
			}		
		 }
		else
		{
			if(i%3==0)
			{
				dot_buffer[i] =	pic[i+2];
					
			}
			if(i%3==1)
			{
				dot_buffer[i] =	pic[i];
					
			}
			if(i%3==2)
			{
				dot_buffer[i] =	pic[i-2];
					
			}
		}
	}
}

void disp_one_asc4(unsigned char width, unsigned char *pic)
{
	unsigned long  i;
	for (i=0;i<width*4;i++)
	{
		if(mode) 
		{
			if(i%4==0)
			{
				dot_buffer[i] =	~pic[i+3];
					
			}
			if(i%4==1)
			{
				dot_buffer[i] =	~pic[i+1];
					
			}
			if(i%4==2)
			{
				dot_buffer[i] =	~pic[i-1];				
			}	
			if(i%4==3)
			{
				dot_buffer[i] =	~pic[i-3];
			}		
        }
		else
		{
			if(i%4==0)
			{
				dot_buffer[i] =	*(pic+i+3);
			}
			if(i%4==1)
			{
				dot_buffer[i] =	*(pic+i+1);
					
			}
			if(i%4==2)
			{
				dot_buffer[i] =	*(pic+i-1);				
			}	
			if(i%4==3)
			{
				dot_buffer[i] =	*(pic+i-3);
			}		
		}
	}
}


void DrawPic ( unsigned char x0,unsigned char y0,unsigned char width,unsigned char length,unsigned char *bmp)
{
	unsigned char x, address;
	unsigned char * dat;

	unsigned char m;		
	unsigned long i=0;
	unsigned char page =0; // if layer = 0;page = 0,so it will disply the first line Chinese word
	
	bit window = 0;  //display on master LCD
		unsigned char orig_buscon;
           orig_buscon = BUSCON;   // Save buscon value
           BUSCON |= 0x3C;           // Set Xdata Read/Write to max wait states


	if(length%8==0)
	m = length/8;
	else
	m = length/8 + 1;

	if(m==2)
	disp_one_asc2(width, length, bmp);
	if(m==3)
	disp_one_asc3(width, length, bmp);
	if(m==4)
	disp_one_asc4(width, bmp);

    dat = dot_buffer;

	OutMasterCom( 0X00 ); //display column address	
	OutMasterCom ( 0XC0|y0 );//display start line 	

	OutSlaveCom ( 0X00 );
	OutSlaveCom ( 0XC0|y0);

	for(x=x0;x<x0+width;x++)
	{
		if(x>121)
			 return;  //the column exceeded 121 will be ignored
		if (x>60) 	
		{ 
			window =1; //disply on slave LCD
			address = x%61;
		}
 		else 
		address = x;  //display on master LCD

		SetPage (page,page);      //disply the upper part of a Chinese word
		SetAddress(address,address);

		if (window) 
			PutChar0(dat[i]);
		else 
			PutChar1(dat[i]);
				i+=1; 

		if(m>=2)
		{
			SetPage (page+1,page+1);  //disply the lower part of a Chinese word
			SetAddress(address,address);

			if (window) 
				PutChar0(dat[i]);
			else 
				PutChar1(dat[i]);
				i+=1; 
		 }

		 if(m>=3)
		{
			SetPage (page+2,page+2);  //disply the lower part of a Chinese word
			SetAddress(address,address);

			if (window) 
				PutChar0(dat[i]);
			else 
				PutChar1(dat[i]);
				i+=1; 
		 }

		 if(m>=4)
		{
			SetPage (page+3,page+3);  //disply the lower part of a Chinese word
			SetAddress(address,address);

			if (window) 
				PutChar0(dat[i]);
			else 
				PutChar1(dat[i]);
				i+=1; 
		 }
	}
	BUSCON = orig_buscon;  // Restore buscon value
}


/*---------------------------------------------------------------------------------------
Function:
	this function is used to display a Chinese word. 
Parameters:
	x0:		start column address.
    layer:	if layer = 0,display the first line Chinese word,otherwise display the second line.
	width:	the number of column of a Chinese word dot matrix.
	bmp:	the pointer of the  dot matrix data.
Note:
	the LCD can only display two line Chinese word,so page 0 and 1 is to display the first line,page2
    and page 3 is to display the second line.

----------------------------------------------------------------------------------------*/

void disp_one_ch(unsigned char col,unsigned char layer,unsigned int ch_code,unsigned char mode)
{
	unsigned char i,j,c2,c1;
	extern PSD_REGS PSD_reg;
	unsigned char xdata *ptr;
	
	j = PSD_reg.PAGE ; //reserve page number first
	PSD_reg.PAGE = CHINESE_FONT_PAGE;

	c2 = (unsigned char)((ch_code&0xff00)>>8);  
	c1 = (unsigned char)(ch_code&0x00ff);


	for(i=0;i<159;i++)  //check index table to get the specific location
	{
		if ((c2 == index[i])&&(c1 == index[i+1]))
		{
			ptr = (unsigned char xdata *)((index[i+2])*32);
			break;
		 }
	}

	for(i=0;i<32;i++)
	{
		dot_buffer[i] = *(FONT_BASE_ADDRESS+ptr+i);  //fetch font data from internal flash directly
	}

	if (mode)
	{
		for(i=0;i<32;i++)
		{	
			dot_buffer[i] = ~ dot_buffer[i];
		}
	}
		DrawBmp(col,layer,16,dot_buffer);//display the Chinese word after get the data from flash
		PSD_reg.PAGE = j;  //restore page number
}
#endif
/*---------------------------------------------------------------------------------------
Function:
	this function is used to converts low nibble of unsigned byte.
Parameters:
	byte: this unsigned byte is ready to converting.
Note:
	none

----------------------------------------------------------------------------------------*/
char htoa_lo(unsigned char byte)	 
					 // (0-F hex) to ascii   
{
	{
	byte = byte & 0x0F;	// keep lower nibble only   
	if (byte <= 0x09)
		return(byte + 0x30);
	else
		return (byte + 0x37);
	}
}


/*---------------------------------------------------------------------------------------
Function:
	this function is used to converts low nibble of unsigned byte.
Parameters:
	byte: this unsigned byte is ready to converting.
Note:
	none

----------------------------------------------------------------------------------------*/
char htoa_hi(unsigned char byte)	 // converts hi nibble of unsigned byte
					 // (0-F hex) to ascii   
{
	{
	byte = byte & 0xF0;	// keep upper nibble only   
	byte = byte >> 4;
	if (byte <= 0x09)
		return(byte + 0x30);
	else
		return (byte + 0x37);
	}
}

/*---------------------------------------------------------------------------------------
printfLCD(chr_ptr) 

This function is used to display a string of Chinese words and standard ASCII codes on
the LCD display.

chr_ptr - unsigned char*
		- pointer to string to display on LCD.
----------------------------------------------------------------------------------------*/
void printfLCD(unsigned char *ptr, ...) 
{
	unsigned char c1,c2;
	unsigned int  c3;

	//unsigned char *var_ptr=&ptr+1;
	unsigned char var;
	unsigned char orig_buscon;
	#ifdef __RC51__	//use ANSI stdarg
	va_list var_ptr;
	va_start(var_ptr,0);
	#else	
	unsigned char *var_ptr=&ptr+1;
	#endif
   orig_buscon = BUSCON;   // Save buscon value
   BUSCON |= 0x3C;           // Set Xdata Read/Write to max wait states


	if(ulayer >3)  //if page exceed the range 0 to 3,force it to 0.
		ulayer = 0;

	while (*ptr != NULL) 
	{
		c1 = *ptr;
		c2 = *(ptr+1);
		c3 = c1;
		c3 = (c3<<8)|c2;
		if(c1 <= 128)   // deal with asc code , if c1<=128 ,it will deal with asc code,otherwise Chinese word.
		{
			if ( *ptr == '\r')
			{
				ptr++;
				ucol = 0;
			}
			else if( *ptr == '\n')
			{
				ptr++;
				ucol = 0;
				ulayer++;
			}
			else if( *ptr == '%')
			{
				ptr++;
				
				if (*ptr == 'd')
				{
					ptr++;
			 		#ifdef __RC51__	//use ANSI stdarg
 					var = *var_ptr--;
 					var_ptr--;
	            #else	
					var = *var_ptr++;
					#endif
					c1 = (var & 0x0F)+'0';
					disp_one_asc(ucol,ulayer,c1,mode);
					ucol+=7;
				}
				else if (*ptr == 'x')
			 	{  
			 		#ifdef __RC51__	//use ANSI stdarg
 					var = *var_ptr--;
 					var_ptr--;
	            #else	
					var = *var_ptr++;
					#endif
					c1 = htoa_hi(var);
					disp_one_asc(ucol,ulayer,c1,mode);
					ucol+=7;
					c1 = htoa_lo(var);
					disp_one_asc(ucol,ulayer,c1,mode);
					ucol+=7;
					ptr++;
				}
				else if (*ptr == 'w')
				{
					ptr++;
			 		#ifdef __RC51__	//use ANSI stdarg
 					var_ptr--;
 					var = *var_ptr;
 					
 					#else	
					var = *var_ptr++;
					#endif
					c1 = htoa_hi(var);
					disp_one_asc(ucol,ulayer,c1,mode);
					ucol+=7;
					c1 = htoa_lo(var);
					disp_one_asc(ucol,ulayer,c1,mode);
					ucol+=7;
			 		#ifdef __RC51__	//use ANSI stdarg
			 		var_ptr++;
 					var = *var_ptr;
			 		var_ptr-=2;			
 					#else	
					var = *var_ptr++;
					#endif
					c1 = htoa_hi(var);
					disp_one_asc(ucol,ulayer,c1,mode);
					ucol+=7;
					c1 = htoa_lo(var);
					disp_one_asc(ucol,ulayer,c1,mode);
					ucol+=7;

				}
				else 
				{
					c1 = *ptr;
					disp_one_asc(ucol,ulayer,c1,mode);
					ucol+=7;
					ptr++;
				}
			}
			else
			{				
				disp_one_asc(ucol,ulayer,c1,mode);
				ucol+=7;
				ptr++;    // one asc need one byte in computer system
			}
		
		 }
		#ifdef ENGLISH_CHINESE_FONT
		 else    //deal with Chinese, if c1<=128 ,it will deal with asc code, otherwise Chinese word.
		 {

			if(mode) 
				disp_one_ch(ucol,ulayer,c3,1);
			else    
				disp_one_ch(ucol,ulayer,c3,0);
			ucol+=16;  //16*16 Chinese dot matrix
			ptr += 2;  //one Chinese word need two byte in computer system
		
		  }
		#endif
	}
	BUSCON = orig_buscon;  // Restore buscon value
}


unsigned char font_detection(void) 
{
	unsigned char xdata j,a,b;	
	unsigned char xdata *ascii;

	#ifdef ENGLISH_CHINESE_FONT
	unsigned char xdata c,d;	
	unsigned char xdata *chchar;
    #endif

	extern xdata PSD_REGS PSD_reg;

	j = PSD_reg.PAGE;  // page number  will be changed in fetching ASC font data,so reserve page number first

	#ifndef ENGLISH_CHINESE_FONT
	ascii = (unsigned char xdata *)(FONT_BASE_ADDRESS);
	PSD_reg.PAGE =ENGLISH_FONT_PAGE; 
	a = ascii[0];
	b = ascii[1];
	#else
	ascii = (unsigned char xdata *)(FONT_BASE_ADDRESS);
	chchar = (unsigned char xdata *)(FONT_BASE_ADDRESS);
	PSD_reg.PAGE =ENGLISH_FONT_PAGE; 
	a = ascii[0];
	b = ascii[1];
	PSD_reg.PAGE =CHINESE_FONT_PAGE;
	c = chchar[0];
	d = chchar[1];
	#endif


    // If the font is not detected in the flash 
    // then display a bitmapped "no font" message on the LCD

	#ifndef ENGLISH_CHINESE_FONT
		if ((a == E_FONT_DETECT_BYTE_0) && (b == E_FONT_DETECT_BYTE_1)) 
	#else
		if (  (a == E_FONT_DETECT_BYTE_0) && (b == E_FONT_DETECT_BYTE_1)  && 
          		(c == C_FONT_DETECT_BYTE_0) && (d == C_FONT_DETECT_BYTE_1) )  
	#endif

	{
		return(0);        // Indicate the font was detected.
	}
    else              // Font not detected, so display bitmapped messaged.
	{ 
		DrawBmp(0,0,7,nn);    // n    
		DrawBmp(8,0,7,oo);    // o

		DrawBmp(24,0,7,ff);   // f
		DrawBmp(32,0,7,oo);   // o   
		DrawBmp(40,0,7,nn);   // n
		DrawBmp(48,0,7,tt);   // t

		return(1);    // Indicate the font was not detected.
	}
} 

/*---------------------------------------------------------------------------------------
Function:
	this function is used to merge LCD initialization and set display start line and column address. 
Parameters:
	ptr: none
Note:
	this function only used once just before user start using void printfLCD(unsigned char *ptr, ...).

----------------------------------------------------------------------------------------*/

void lcd_init(void)  
{
	unsigned char orig_buscon;
    orig_buscon = BUSCON;   // Save buscon value
    BUSCON |= 0x3C;           // Set Xdata Read/Write to max wait states 
	///////////////////////LCD initialization/////////
	BusyCheck();
	LcdConfig ( );	
	lcd_clear ( );	
	//////////////////////////set display start line and column address/////////
	OutMasterCom ( 0xC0 );
	OutSlaveCom ( 0xC0 );
	OutMasterCom ( 0x00 );
	OutSlaveCom ( 0x00 );

    if (font_detection())  // If font not detected,
	{
	while(1);              // wait here forever.
	}
	BUSCON = orig_buscon;  // Restore buscon value
}





?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合天天综合色综合av| 在线播放视频一区| 麻豆精品蜜桃视频网站| 亚洲综合视频在线观看| 18涩涩午夜精品.www| 国产精品网站在线| 国产日韩欧美高清在线| 欧美极品少妇xxxxⅹ高跟鞋 | 亚洲一区二区不卡免费| 亚洲日本va在线观看| 亚洲欧美日韩中文播放| 一区二区三区四区高清精品免费观看| 亚洲欧美综合另类在线卡通| 国产精品视频九色porn| 欧美国产乱子伦| 国产精品网站在线观看| 一区二区免费看| 日本在线不卡一区| 欧美aⅴ一区二区三区视频| 午夜精品福利视频网站| 日韩国产高清影视| 国产在线不卡一卡二卡三卡四卡| 免费观看在线综合| 国产99精品在线观看| 91亚洲精品乱码久久久久久蜜桃| 91美女在线视频| 91麻豆精品91久久久久久清纯| 欧美一区二区三区日韩视频| 欧美成人性福生活免费看| 久久蜜桃av一区精品变态类天堂| 久久精品人人做人人爽人人| 国产精品视频免费看| 一区二区理论电影在线观看| 日本不卡一二三区黄网| 国产一区啦啦啦在线观看| a美女胸又www黄视频久久| 欧美图区在线视频| 欧美电视剧在线观看完整版| 亚洲视频在线观看三级| 亚洲女与黑人做爰| 蜜臀久久99精品久久久久久9| 国产91在线观看| 在线播放日韩导航| 日本一区二区三区四区在线视频 | 久久成人免费电影| 播五月开心婷婷综合| 欧美四级电影网| 精品999久久久| 洋洋成人永久网站入口| 国产原创一区二区| 欧美三级视频在线观看| 精品1区2区在线观看| 偷窥少妇高潮呻吟av久久免费| 国产精品白丝jk白祙喷水网站| 欧美日韩国产在线观看| 国产日韩欧美精品综合| 狠狠色综合播放一区二区| 欧美日韩亚洲国产综合| 日韩一区在线看| 国产成人丝袜美腿| 欧美变态凌虐bdsm| 日欧美一区二区| 欧美日韩中文另类| 亚洲欧美综合色| 成+人+亚洲+综合天堂| 欧美精品一区二区蜜臀亚洲| 午夜久久久久久久久| 91麻豆免费在线观看| 国产婷婷色一区二区三区四区 | 欧美日韩大陆在线| 国产精品青草综合久久久久99| 精品一二线国产| 欧美日韩国产影片| 日韩福利电影在线观看| 欧美在线观看一区| 亚洲自拍偷拍综合| 欧美综合色免费| 亚洲自拍偷拍麻豆| 欧美撒尿777hd撒尿| 亚洲一区二区在线观看视频| 色8久久精品久久久久久蜜| 国产精品不卡一区二区三区| 国内久久精品视频| 国产午夜精品福利| 国产成人一区二区精品非洲| 久久久www成人免费无遮挡大片| 精品一区二区三区在线观看国产 | 欧美综合亚洲图片综合区| 一区二区三区四区精品在线视频| 色噜噜狠狠成人中文综合| 亚洲精品高清视频在线观看| 91在线码无精品| 国产精品久久一级| 一本大道综合伊人精品热热| 亚洲男人电影天堂| 欧美日韩国产片| 日韩av网站在线观看| 久久午夜羞羞影院免费观看| 国产成人在线免费| 亚洲一区二区高清| 日韩久久精品一区| 韩国欧美国产一区| √…a在线天堂一区| 在线免费av一区| 亚洲va在线va天堂| 欧美大度的电影原声| 成人av电影在线网| 五月开心婷婷久久| 国产日韩欧美精品综合| 久久综合一区二区| 成人亚洲精品久久久久软件| 国产精品国产三级国产a| 91免费精品国自产拍在线不卡| 一个色综合av| 欧美大度的电影原声| 99re这里只有精品首页| 蜜臀a∨国产成人精品| 国产精品另类一区| 在线不卡免费av| 成人app网站| 极品少妇xxxx精品少妇偷拍 | 五月天欧美精品| 中文字幕一区二区三区在线播放 | 国产福利精品一区二区| 樱桃视频在线观看一区| 精品成人私密视频| 欧美日韩国产综合视频在线观看| 国产高清久久久| 免费成人你懂的| 一区二区三区日韩精品视频| 欧美一区二区在线看| k8久久久一区二区三区| 国产在线精品一区在线观看麻豆| 亚洲一区二区三区影院| 欧美国产精品劲爆| 精品av久久707| 91精品国产一区二区三区| 色乱码一区二区三区88| a亚洲天堂av| kk眼镜猥琐国模调教系列一区二区| 精品影院一区二区久久久| 秋霞国产午夜精品免费视频| 一区二区三区欧美亚洲| 亚洲日本在线天堂| 国产精品剧情在线亚洲| 中文字幕av不卡| 欧美国产亚洲另类动漫| 久久久久久久久久久黄色| 日韩欧美国产午夜精品| 欧美一区二区视频在线观看2022| 欧美最猛黑人xxxxx猛交| 欧美自拍偷拍一区| 一本到一区二区三区| 日本道色综合久久| 91国产视频在线观看| 高清视频一区二区| 国产在线精品一区二区不卡了| 日韩精品午夜视频| 免费xxxx性欧美18vr| 免费欧美在线视频| 裸体一区二区三区| 激情六月婷婷久久| 国产福利一区二区三区视频 | 日本韩国欧美一区二区三区| 色综合中文字幕| 色婷婷精品久久二区二区蜜臀av | 国产成人av影院| 国产精品一二三在| 成人久久久精品乱码一区二区三区 | 日av在线不卡| 黄色日韩网站视频| 成人在线综合网站| 色综合亚洲欧洲| 91精品国产综合久久久久久| 欧美一卡2卡三卡4卡5免费| 精品日产卡一卡二卡麻豆| 久久久久一区二区三区四区| 国产精品视频看| 亚洲欧美经典视频| 亚洲色图一区二区| 亚洲国产一二三| 青青草视频一区| 高清beeg欧美| 欧美亚洲丝袜传媒另类| 日韩精品自拍偷拍| ㊣最新国产の精品bt伙计久久| 亚洲一二三四区不卡| 三级成人在线视频| 国产自产v一区二区三区c| 国产精品亚洲专一区二区三区| 成人动漫中文字幕| 精品视频在线看| 久久综合久久综合九色| 又紧又大又爽精品一区二区| 日韩 欧美一区二区三区| 不卡电影一区二区三区| 日韩西西人体444www| 亚洲女同女同女同女同女同69| 日韩综合在线视频| 成人视屏免费看|