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

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

?? gui12864.c

?? AVR單片機驅動128×64LCD實現3D圖像的旋轉顯示
?? C
字號:
/***********************************************************************************************
*  FILE NAME: gui12864.c
*  PURPOSE: lcd1286418 GUI Firmware
*  DESCRIPTION: ONLY FOR 128*64 PIXEL LCD 
*  DEVELOPMENT HISTORY:
*    Date         Author         Release                   Description Of Change
*  --------    ------------     ---------     ------------------------------------------------
*  08-04-11     XuGuohong         1.0                        Testing Edition    	     
/**********************************************************************************************/

/* Include Global Parameters */
#include <iom128v.h>
#include "avr.h"
#include "gui12864.h"

/* Include Global Parameters */


/* Declare Prototypes */
void GuiDrawLine(unsigned char,unsigned char,unsigned char,unsigned char,unsigned char);
void GuiDrawCircle(unsigned char,unsigned char,unsigned char,unsigned char);
void GuiDrawSquare(unsigned char,unsigned char,unsigned char,unsigned char,unsigned char);
void GuiDisCharF3(unsigned char,unsigned char,unsigned char,unsigned char);
void GuiDisStringF3(unsigned char,unsigned char,unsigned char *,unsigned char);
//void GuiDisCharF2(unsigned char,unsigned char,unsigned char,unsigned char);
//void GuiDisCharF1(unsigned char,unsigned char,unsigned char,unsigned char);
void GuiDisLogo(unsigned char);
void GuiDisRoolStringF3(unsigned char,unsigned char,unsigned char,unsigned char *,unsigned char);
void GuiDisBattery(unsigned char,unsigned char,unsigned char);
void GuiDisUsb(unsigned char,unsigned char);
void GuiDisAcin(unsigned char,unsigned char);
void GuiDisTemp(unsigned char,unsigned char,signed char);
void GuiDisShortIcon(unsigned char,unsigned char,unsigned char);
void GuiDisMainMenu(void);
void GuiDisMenuIcon(unsigned char,unsigned char,unsigned char);

/*****************************************
*  FUNCTION NAME: GuiDrawLine
*  DESCRIPTION: Draw A Line From Between
*               Any 2-Point
*  (x1,y1) as start point
*  (x2,y2) as end point
*  Based On "Breshenham Line"
/*****************************************/
void  GuiDrawLine(unsigned char  x1, unsigned char  y1, unsigned char  x2, unsigned char  y2, unsigned char color) 
{
    unsigned char temp;
	int p;	   		 	 		 	 		 /* p-取值判斷因子 */
	unsigned char x;						 /* x-坐標 */
	unsigned char y;						 /* y-坐標 */
	int dx;						             /* x方向差值 */
	int dy;						             /* y方向差值 */
	char signx;	  							 /* x方向標識 */
	char signy;								 /* Y方向標識 */
    if(x1>123 | y1>63 | x2>123 | y2>63)
	    return;
	x = x1;
	y = y1;
	 /* 1.計算X方向的參數 */
	if(x2 > x1)								
	{
	    dx = x2 - x1;	
		signx = 1;					 
	}
	else if(x2 < x1)
	{
	    dx = x1 - x2;	
		signx = -1;					 
	}
	else
	{
	    dx = 0;	
		signx = 0;					 
	}
	 /* 2.計算Y方向的參數 */
	if(y2 > y1)								
	{
	    dy = y2 - y1;	
		signy = 1;					 
	}
	else if(y2 < y1)
	{
	    dy = y1 - y2;	
		signy = -1;					 
	}
	else
	{
	    dy = 0;	
		signy = 0;
	}
	/* 3.計算首個判斷因子 */
	p = 2*dy -dx;	
    /* 4a.以X方向增長畫圖 */				 		 
	if(dx >= dy)								
	{
		for(temp=0; temp<dx; temp++)
		{
	        LcdDisplayDot(x,y,color);		/* 畫點 */
			if(p >= 0)						/* 根據P來判斷畫哪一點 */
			{
			    x = x + signx;
				y = y + signy;
				p = p + 2*(dy - dx);		/* dy,dx需要定義定義成有符號的,才能得到正確的值 */
			}
			else
			{
				x = x + signx;
				y = y;
				p = p + 2*dy;
			}
		}
    }
	else								
	{
		for(temp=0; temp<dy; temp++)
		{
	        LcdDisplayDot(x,y,color);		/* 畫點 */
			if(p >= 0)						/* 根據P來判斷畫哪一點 */
			{
			    y = y + signy;
				x = x + signx;
				p = p + 2*(dx - dy);
			}
			else
			{
				y = y + signy;
				x = x;
				p = p + 2*dx;
			}
		}
    }
    LcdDisplayDot(x2,y2,color);		        /* 畫最后一個點 */
}

/*****************************************
*  FUNCTION NAME: GuiDrawCircle
*  DESCRIPTION: Draw Circle
*  Based On "Breshenham Circle"
/*****************************************/
void GuiDrawCircle(unsigned char  x0, unsigned char  y0, unsigned char  r, unsigned char  color)
{ 
    int  draw_x0, draw_y0;                  /* 繪制圖點坐標變量 */
    int  draw_x1, draw_y1;         
    int  draw_x2, draw_y2;         
    int  draw_x3, draw_y3;         
    int  draw_x4, draw_y4;         
    int  draw_x5, draw_y5;         
    int  draw_x6, draw_y6;         
    int  draw_x7, draw_y7;         
    int  xx, yy;                           /* 畫圓控制變量 */ 
    int  di;                               /* 決策變量 */
    /* 參數過濾 */ 
    if(r==0) 
        return; 
   /* 計算出8個特殊點(0、45、90、135、180、225、270度),進行顯示 */ 
   draw_x0 = draw_x1 = x0; 
   draw_y0 = draw_y1 = y0 + r; 
   LcdDisplayDot(draw_x0, draw_y0, color);                // 90度 
   draw_x2 = draw_x3 = x0; 
   draw_y2 = draw_y3 = y0 - r; 
   LcdDisplayDot(draw_x2, draw_y2, color);                // 270度 
   draw_x4 = draw_x6 = x0 + r; 
   draw_y4 = draw_y6 = y0; 
   LcdDisplayDot(draw_x4, draw_y4, color);                // 0度 
   draw_x5 = draw_x7 = x0 - r; 
   draw_y5 = draw_y7 = y0; 
   LcdDisplayDot(draw_x5, draw_y5, color);                // 180度    
   if(r==1) 
       return;                                            // 若半徑為1,則已圓畫完 

   /* 使用Bresenham法進行畫圓 */ 
   di = 3 - 2*r;                                          // 初始化決策變量 
   xx = 0; 
   yy = r;         
   while(xx<yy) 
   { 
      if(di<0) 
      { 
         di += 4*xx + 6; 
      } 
      else 
      { 
         di += 4*(xx - yy) + 10; 
           
         yy--; 
         draw_y0--; 
         draw_y1--; 
         draw_y2++; 
         draw_y3++; 
         draw_x4--; 
         draw_x5++; 
         draw_x6--; 
         draw_x7++; 
      } 
           
      xx++; 
      draw_x0++; 
      draw_x1--; 
      draw_x2++; 
      draw_x3--; 
      draw_y4++; 
      draw_y5++; 
      draw_y6--; 
      draw_y7--; 
         
      /* 要判斷當前點是否在有效范圍內 */ 
      LcdDisplayDot(draw_x0, draw_y0, color); 
      LcdDisplayDot(draw_x1, draw_y1, color); 
      LcdDisplayDot(draw_x2, draw_y2, color); 
      LcdDisplayDot(draw_x3, draw_y3, color); 
      LcdDisplayDot(draw_x4, draw_y4, color); 
      LcdDisplayDot(draw_x5, draw_y5, color); 
      LcdDisplayDot(draw_x6, draw_y6, color); 
      LcdDisplayDot(draw_x7, draw_y7, color); 
   } 
} 

/*****************************************
*  FUNCTION NAME: GuiDrawSquare
*  DESCRIPTION: Draw Square
*  (x0,y0)----------------------------
*     |	 	      		 		      |
*	  |				 				  |
*	  | 		                      |					  
*	  |								  |
*	  |								  |
*      -----------------------------(x1,y1)
/*****************************************/
void GuiDrawSquare(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char color)
{
     GuiDrawLine(x0, y0, x0, y1, color);
	 GuiDrawLine(x0, y0, x1, y0, color);
	 GuiDrawLine(x0, y1, x1, y1, color);
	 GuiDrawLine(x1, y0, x1, y1, color);
}

/*****************************************
*  FUNCTION NAME: GuiDisCharF3
*  DESCRIPTION: Display ASCII Char
*      ---------------------------->
*     |	  	      x(0-20) 		      
*	  |				 				  
*	  | y(0-7) 		                      					  
*	  |								  
*	  |								  
/*****************************************/
void GuiDisCharF3(unsigned char x,unsigned char y,unsigned char data,unsigned char color)
{
    unsigned char temp,offset;
	offset = x * 6;		                     	  			   /* Display Place */
	for(temp=0; temp<6; temp++)
	{
	    if(color == 0)
		    LcdDisplaySeg(y,offset+temp,~font6x8[data-32][temp]);
		else
		    LcdDisplaySeg(y,offset+temp,font6x8[data-32][temp]);
	}
}

/*****************************************
*  FUNCTION NAME: GuiDisStringF3
*  DESCRIPTION: Display ASCII String
*      (x0,y0) display start place 
*      Auto Change Line...
*      ---------------------------->
*     |	  	      x(0-20) 		      
*	  |				 				  
*	  | y(0-7) 		                      					  
*	  |								  
*	  |								  
/*****************************************/
void GuiDisStringF3(unsigned char x0,unsigned char y0,unsigned char *p,unsigned char color)
{
	while(*p != 0x00)
	{
		if(x0 == 21)
		{
		    x0 = 0;
			y0 = y0+1;
		}
		GuiDisCharF3(x0,y0,*(p++),color);
		x0++;
	}
}

/*****************************************
*  FUNCTION NAME: GuiDisLogo
*  DESCRIPTION: Display One Full Screen
*               Picture 128X64...						  
/*****************************************/
void GuiDisLogo(unsigned char color)
{
    unsigned char x=0,y=0;
	unsigned int count=0;
	for(count=0;count<128*8;count++)
	{
	    if(x ==128)
		{
		    x = 0;
			y = y +1;
		}
		if(color == 0)
	        LcdDisplaySeg(y,x,~startlogo[count]);
		else
	        LcdDisplaySeg(y,x,startlogo[count]);  
		x++;	
	}
}

/****************************************************
*  FUNCTION NAME: GuiDisRoolStringF3
*  DESCRIPTION: Display One Line With  Left Rolling	
*      ---------------------------->
*     |	  	      x(0-127) 		      
*	  |				 				  
*	  | y(0-7) 		                      					  
*	  |								  
*	  |				  
/****************************************************/
void GuiDisRoolStringF3(unsigned char x0,unsigned char x1,unsigned char y,unsigned char *p,unsigned char color)
{
    unsigned int dislength = x1 - x0 + 1;	      	   			   /* 顯示區域的寬度 */
	unsigned int textlength=0; 	   				  				   /* 要顯示內容的總段數 */
	unsigned int totallength;			                           /* 要移動的總長度 */
	unsigned int step=0;					      				   /* 移動長度計數 */
	unsigned char n;							  				   /* 字庫字偏移地址 */
	unsigned char a;							  				   /* 字庫段偏移地址 */
	unsigned int temp1,temp2,temp3;
	unsigned int i;
	while(*(p+textlength) != 0x00)								   /* 計算顯示內容的總段數 */
	{
	    textlength++;
	}
	textlength = textlength*6;
	totallength = dislength + textlength;						   /* 計算總移顯示內容的長度 */
	for(i=0; i<totallength; i++)
	{
		step++;
		if(step <= dislength)
		{
		        for(temp1=0; temp1<step; temp1++)
			   {
			        if((temp1 +1) > textlength)
				    { 	
				        LcdDisplaySeg(y,x1+1-step+temp1,0x00);
				    }
					else
					{
					    LcdDisplaySeg(y,x1+1-step+temp1,font6x8[*(p + temp1 / 6) - 32][temp1 % 6]);
						Delay10ms(10);
					} 
			    }
		}
		else if(step > textlength)
		{
		    temp2 = 0;
			for(temp1= step - dislength; temp1<step; temp1++)
			{
				if((temp1 +1) > textlength)
				{	
				    LcdDisplaySeg(y,x0 + temp2,0x00);
				} 
				else
				{	
				    LcdDisplaySeg(y,x0 + temp2,font6x8[*(p + temp1 / 6) - 32][temp1 % 6]);
					Delay10ms(10);
				}
				temp2++;
			}
		}
		else
		{
			temp2 = 0;
			for(temp1= step - dislength; temp1<step; temp1++)
			{
				LcdDisplaySeg(y,x0 + temp2,font6x8[*(p + temp1 / 6) - 32][temp1 % 6]);
				Delay10ms(10);
				temp2++;
			}
		}
	}
}

/************************************************************
*  FUNCTION NAME: GuiDisBattery
*  DESCRIPTION: Display Battery Icon
*       level- 0 warn,1 low,2 20%,3 40%,4 60%,5 80%,6 full
*       x - 0-112
*       y - 0-7		  
/************************************************************/
void GuiDisBattery(unsigned char x,unsigned char y,unsigned char level)
{
    unsigned char temp;
	for(temp=0; temp<16; temp++)
	{
	    LcdDisplaySeg(y,x+temp,battery[level][temp]);
	}
}

/************************************************************
*  FUNCTION NAME: GuiDisUsb
*  DESCRIPTION: Display USB Icon  
/************************************************************/
void GuiDisUsb(unsigned char x,unsigned char y)
{
    unsigned char temp;
	for(temp=0; temp<13; temp++)
	{
	    LcdDisplaySeg(y,x+temp,~usb[temp]);
	}
}

/************************************************************
*  FUNCTION NAME: GuiDisAcin
*  DESCRIPTION: Display AC Input Icon
/************************************************************/
void GuiDisAcin(unsigned char x,unsigned char y)
{
    unsigned char temp;
	for(temp=0; temp<6; temp++)
	{
	    LcdDisplaySeg(y,x+temp,acin[temp]);
	}
}


/************************************************************
*  FUNCTION NAME: GuiDisMainMenu
*  DESCRIPTION: Display MainMenu Square
/************************************************************/
void GuiDisMainMenu(void)
{
     unsigned char temp1;
	 for(temp1=0; temp1<128; temp1++)
     {
	     LcdDisplaySeg(0,temp1,0XFF);
		 LcdDisplaySeg(1,temp1,0X07);
	 }
	 GuiDrawSquare(0,0,127,54,1);
}

/************************************************************
*  FUNCTION NAME: GuiDisShortIcon
*  DESCRIPTION: Display Short-Cut Icon
*     0:
*     1:
*     2:
*     3:
*     4:
/************************************************************/
void GuiDisShortIcon(unsigned char x,unsigned char y,unsigned char type)
{
    unsigned char temp1,temp2;
	for(temp1=0; temp1<2; temp1++)
	{
	    for(temp2=0; temp2<16; temp2++)
		{
		    LcdDisplaySeg(y+temp1,x+temp2,~shorticon1[temp1][temp2]);		
		}
	}
}

/************************************************************
*  FUNCTION NAME: GuiDisMenuIcon
*  DESCRIPTION: Display MainMenu Name
/************************************************************/
void GuiDisMenuIcon(unsigned char x,unsigned char y,unsigned char type)
{
    unsigned char temp1,temp2;
	for(temp1=0; temp1<2; temp1++)
	{
	    for(temp2=0; temp2<34; temp2++)
		{
		    LcdDisplaySeg(y+temp1,x+temp2,~menuicon1[temp1][temp2]);		
		}
	}
}

/************************************************************
*  FUNCTION NAME: GuiDisTemp
*  DESCRIPTION: Display temperature icon and value
*  temperature display range from -99 to +99
/************************************************************/
void GuiDisTemp(unsigned char x,unsigned char y,signed char value)
{
    unsigned char temp;	 
	signed char sign;	 	  			 	  /* 寫SIGNED才表明書有符號數 */
	for(temp=0; temp<11; temp++)
	{
	    LcdDisplaySeg(y,x+temp,~temperature[temp]);
	}
	if(value > 0)
	{
	    GuiDisCharF3(x/6 + 2,y,'+',1);
		sign = 1;
	}
	else if(value < 0)
	{
	    GuiDisCharF3(x/6 + 2,y,'-',1);
		sign = -1;
	} 
	else
	{
	    GuiDisCharF3(x/6 + 2,y,' ',1);
		sign = 0;
	}  
	value = sign * value;
	GuiDisCharF3(x/6 + 3,y,(value/10 + 0X30),1);
    GuiDisCharF3(x/6 + 4,y,(value%10 + 0X30),1);
	for(temp=12; temp<17; temp++)
	{
	    LcdDisplaySeg(y,x+21+temp,temperature[temp]);
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合中文字幕| 成人久久视频在线观看| 91黄视频在线| 一区二区三区丝袜| 欧美日韩中文国产| 日韩成人伦理电影在线观看| 91麻豆精品国产91久久久久久| 天天亚洲美女在线视频| 欧美一区二区不卡视频| 韩国精品主播一区二区在线观看 | 丁香六月久久综合狠狠色| 亚洲电影中文字幕在线观看| 91精品1区2区| 秋霞午夜鲁丝一区二区老狼| 日韩精品一区二区三区视频在线观看| 久久激五月天综合精品| 久久久九九九九| 色诱视频网站一区| 日韩高清电影一区| 久久久国产午夜精品| 91免费在线播放| 男男gaygay亚洲| 国产精品丝袜在线| 欧美日韩一区二区三区在线看| 日韩在线卡一卡二| 欧美激情一区二区三区全黄 | 天使萌一区二区三区免费观看| 亚洲少妇中出一区| 欧美美女bb生活片| 大桥未久av一区二区三区中文| 亚洲乱码国产乱码精品精的特点 | 国产日韩欧美麻豆| 99免费精品视频| 奇米综合一区二区三区精品视频| 亚洲精品一区二区三区99| 91欧美一区二区| 国产在线播放一区| 亚洲综合成人在线| 国产日产欧产精品推荐色| 在线观看成人免费视频| 国产精品一区二区91| 亚洲一区二区五区| 国产精品伦一区| 日韩视频国产视频| 欧美在线视频全部完| 国产成人久久精品77777最新版本| 亚洲福利一区二区三区| 国产精品看片你懂得| 日韩欧美精品三级| 欧美日韩精品一区二区三区蜜桃| 国产成a人亚洲精品| 久久成人免费电影| 天使萌一区二区三区免费观看| 亚洲成人一区二区在线观看| 国产婷婷色一区二区三区在线| 欧美日韩一区二区在线视频| 99久久久精品| 处破女av一区二区| 国产美女精品一区二区三区| 亚洲 欧美综合在线网络| 亚洲人成亚洲人成在线观看图片 | 亚洲一区二区综合| 亚洲美女在线一区| 亚洲国产另类精品专区| 18欧美亚洲精品| 国产欧美一区二区三区鸳鸯浴| 欧美私人免费视频| 色婷婷国产精品综合在线观看| 国产91精品一区二区麻豆网站| 看电视剧不卡顿的网站| 丝袜亚洲另类欧美| 三级精品在线观看| 亚洲国产精品久久不卡毛片| 亚洲另类一区二区| 亚洲免费高清视频在线| 日韩一卡二卡三卡| 一区二区三区在线免费播放| 中文字幕国产一区二区| 久久丝袜美腿综合| 精品国产电影一区二区| 日韩免费观看2025年上映的电影 | 亚洲一线二线三线视频| 亚洲欧美电影一区二区| 亚洲女同一区二区| 一卡二卡欧美日韩| 五月天中文字幕一区二区| 污片在线观看一区二区| 奇米一区二区三区av| 久久狠狠亚洲综合| 国产老肥熟一区二区三区| 国产一区二区三区在线观看精品 | 日韩一区二区三区视频| 欧美成人福利视频| 国产婷婷色一区二区三区在线| 国产精品视频免费| 一区二区三区四区av| 日韩二区三区四区| 久久爱另类一区二区小说| 国产精品综合久久| 99v久久综合狠狠综合久久| 欧美亚洲综合色| 欧美一二三四在线| 国产拍揄自揄精品视频麻豆| 亚洲男人的天堂av| 日韩制服丝袜av| 福利一区二区在线| 欧美亚洲日本一区| 2020国产精品| 亚洲人成亚洲人成在线观看图片| 亚洲高清一区二区三区| 国产在线精品一区二区| aaa欧美大片| 在线成人av网站| 国产精品午夜电影| 91香蕉视频在线| 91精品视频网| 中文字幕视频一区二区三区久| 亚洲亚洲人成综合网络| 国产精品白丝av| 欧美三级蜜桃2在线观看| 久久日韩粉嫩一区二区三区| 综合欧美一区二区三区| 偷拍一区二区三区| 国产成人aaa| 这里只有精品免费| 欧美日韩精品专区| 国产一区二区三区四区在线观看| 风间由美性色一区二区三区| 在线视频国内一区二区| 精品福利av导航| 亚洲一区二区三区四区的| 国产在线精品不卡| 欧美日韩精品一区二区三区蜜桃| 国产校园另类小说区| 日韩成人午夜精品| 欧美午夜精品一区二区三区| 国产日韩视频一区二区三区| 午夜欧美大尺度福利影院在线看 | 丝袜美腿亚洲一区| 97se亚洲国产综合自在线不卡| 欧美成人高清电影在线| 水野朝阳av一区二区三区| 色诱视频网站一区| 国产精品久久一级| 国产精品中文欧美| 精品毛片乱码1区2区3区| 午夜日韩在线电影| 在线观看不卡视频| 亚洲欧美日韩一区| 成人av免费在线观看| 久久久精品日韩欧美| 美女一区二区三区在线观看| 亚洲三级小视频| 欧美国产一区视频在线观看| 午夜精品久久久久| 在线一区二区视频| 成人欧美一区二区三区黑人麻豆| 国内精品视频一区二区三区八戒| 欧美日本一区二区三区| 一区二区三区视频在线看| 色悠悠久久综合| 亚洲人午夜精品天堂一二香蕉| 成人丝袜视频网| 国产精品久久夜| 色综合中文字幕国产 | 国产激情偷乱视频一区二区三区| 制服丝袜亚洲播放| 日本大胆欧美人术艺术动态| 91国偷自产一区二区使用方法| 亚洲人一二三区| 91久久精品日日躁夜夜躁欧美| 亚洲精品成人天堂一二三| 色老头久久综合| 亚洲高清视频的网址| 欧美裸体一区二区三区| 日韩**一区毛片| 欧美大片在线观看| 国产原创一区二区| 国产人成一区二区三区影院| 日本一区二区三区在线观看| 99久久综合精品| 欧美激情在线看| 国产ts人妖一区二区| 国产精品免费免费| 色综合天天综合在线视频| 亚洲精品视频免费看| 欧美人动与zoxxxx乱| 麻豆精品在线播放| 国产喂奶挤奶一区二区三区| 成人国产一区二区三区精品| 亚洲精品ww久久久久久p站| 欧美三级在线播放| 韩国三级在线一区| 国产精品免费丝袜| 欧美午夜片在线看| 蜜桃视频免费观看一区| 国产日韩欧美麻豆| 欧美在线免费播放| 韩国精品主播一区二区在线观看 | 国内一区二区视频|