⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drv_320240.c

📁 使用键盘上的上、下、左、右四个按键
💻 C
📖 第 1 页 / 共 3 页
字号:
	ushTmpX  = usX1;
	uchTmpY  = ucY1;

	if( bX1LessthanX2 &&  bY1LessthanY2 )
	{
		if( bXIntervalEqualYInterval )
			for( i = 0; i <= ucY2 - ucY1; i++ )
				vAr320240SetPixel( usX1 + i, ucY1 + i, ucPixelColor );
		else
		{
			vAr320240SetPixel( usX1, ucY1, ucPixelColor);
			for( i = 0; i < ushCount; i++ )
			{
				if( shScale >= 0 )
				{
					ushTmpX++;
					shScale -= usYInterval;
				}
				else
				{
					uchTmpY++;
					shScale += usXInterval;
			    }
			    vAr320240SetPixel( ushTmpX, uchTmpY, ucPixelColor );
			}
		}
		return ;
	}
	if( bX1LessthanX2 &&  !bY1LessthanY2 )
	{
		if( bXIntervalEqualYInterval )
			for( i = 0; i <= usX2 - usX1; i++ )
				 vAr320240SetPixel( usX1 + i, ucY1 - i, ucPixelColor );
		else
		{
		    vAr320240SetPixel( usX1, ucY1, ucPixelColor);
			for( i = 0; i < ushCount; i++ )
			{
				if( shScale >= 0 )
				{
					ushTmpX++;
					shScale -= usYInterval;
				}
				else
				{
					uchTmpY--;
					shScale += usXInterval;
				}
				vAr320240SetPixel( ushTmpX, uchTmpY, ucPixelColor );
			}
		}
		return ;
	}
	if( !bX1LessthanX2 &&  bY1LessthanY2 )
	{
		if( bXIntervalEqualYInterval )
			for( i = 0; i <= usX1 - usX2; i++ )
				vAr320240SetPixel( usX1 - i, ucY1 + i, ucPixelColor );
		else
		{
			vAr320240SetPixel( usX1, ucY1, ucPixelColor );
			for( i = 0; i < ushCount; i++ )
			{
			 	if( shScale >= 0 )
			 	{
					ushTmpX--;
					shScale -= usYInterval;
				}
			   	else
				{
					uchTmpY++;
					shScale += usXInterval;
				}
				vAr320240SetPixel( ushTmpX, uchTmpY, ucPixelColor );
			}
		}
		return ;
	}
	if( !bX1LessthanX2 &&  !bY1LessthanY2 )
	{
		if( bXIntervalEqualYInterval )
			for( i = 0; i <= usX1-usX2; i++ )
				vAr320240SetPixel( usX1 - i, ucY1 - i, ucPixelColor );
		else
		{
			vAr320240SetPixel( usX1, ucY1, ucPixelColor );
			for( i = 0; i < ushCount; i++ )
			{
				if( shScale >= 0 )
				{
					ushTmpX--;
					shScale -= usYInterval;
				}
				else
				{
					uchTmpY--;
					shScale += usXInterval;
				}
				vAr320240SetPixel( ushTmpX, uchTmpY, ucPixelColor );
			}
		}
	}
}
/*****************************************************************************/
void  vDrawRect(unsigned short usX1,unsigned char ucY1,unsigned short usX2,unsigned char ucY2,unsigned char ucpixelColor)
{   
	unsigned short temp;
	if (usX1>usX2)
	{
		temp=usX1;
		usX1=usX2;
		usX2=temp;
	}
	if (ucY1>ucY2)
	{
        temp=(unsigned short)ucY1;
		ucY1=ucY2;
		ucY2=(unsigned char)temp;
	}
	    
        
    vDrawLine(usX1,ucY1,usX2,ucY1,ucpixelColor);
    vDrawLine(usX1,ucY2,usX2,ucY2,ucpixelColor);
	vDrawLine(usX1,ucY1,usX1,ucY2,ucpixelColor);
	vDrawLine(usX2,ucY1,usX2,ucY2,ucpixelColor);
}

/*******************************************************************************/
void vFillRect(unsigned short  usX1,unsigned char ucY1,unsigned short usX2,unsigned char ucY2,unsigned char ucpixelColor)
{
	unsigned short temp;
	unsigned char i;

	if (usX1>usX2)
	{
		temp=usX1;
		usX1=usX2;
		usX2=temp;
	}
	if (ucY1>ucY2)
	{
        temp=(unsigned short)ucY1;
		ucY1=ucY2;
		ucY2=(unsigned char)temp;
	}
    for(i=ucY1;i<=ucY2;i++)
		vDrawLine(usX1,i,usX2,i,ucpixelColor);

}
/*******************************************************************************/
void vDrawCircle(unsigned short usX, unsigned short ucY,unsigned char radius,unsigned char ucpixelColor)
{
	 short x,y,d;
	x=usX;
	y=ucY+radius;
	d=3-2*radius;

	do{
		vAr320240SetPixel (x, y,ucpixelColor);
		if((ucY-(y-ucY))>=0)
        vAr320240SetPixel (x, (unsigned short)(ucY-(y-ucY)),ucpixelColor);
        if((usX-(x-usX))>=0)
        vAr320240SetPixel (( unsigned short)((usX-(x-usX))), y,ucpixelColor);
		if((((usX-(x-usX))>=0) && ((ucY-(y-ucY))>=0))==1)
        vAr320240SetPixel (( unsigned short)((usX-(x-usX))), (unsigned short)(ucY-(y-ucY)),ucpixelColor);
        if((((usX+(y-ucY))>=0) && ((ucY+(x-usX))>=0))==1) 
        vAr320240SetPixel ((unsigned short)(usX+(y-ucY)), (unsigned short)(ucY+(x-usX)),ucpixelColor);
		if((((usX+(y-ucY))>=0) && ((ucY-(x-usX))>=0))==1)
        vAr320240SetPixel ((unsigned short)(usX+(y-ucY)), (unsigned short)(ucY-(x-usX)),ucpixelColor);
        if((((usX-(y-ucY))>=0) && ((ucY+(x-usX))>=0))==1)  
        vAr320240SetPixel ((unsigned short)(usX-(y-ucY)), (unsigned short)(ucY+(x-usX)),ucpixelColor);
		if((((usX-(y-ucY))>=0) && ((ucY-(x-usX))>=0))==1)
        vAr320240SetPixel ((unsigned short)(usX-(y-ucY)), (unsigned short)(ucY-(x-usX)),ucpixelColor);

        if (d<0) {
            d = d+((x-usX)<<2)+6;
        } else {
            d = d+(((x-usX)-(y-ucY))<<2)+10;
            y--;
        }

        x++;

    } while((x-usX)<=(y-ucY));

}
/******************************************************************************/
void vFillCircle(unsigned short usX, unsigned short ucY,unsigned char radius,unsigned char ucpixelColor)
{
	short x,y,d;
	x=usX;
	y=ucY+radius;
	d=3-2*radius;
	do{ 
	//	if( ((x>=0) && ((ucY-(y-ucY))>=0) && (y>=0))=1)
        vDrawLine (x, (unsigned short)(ucY-(y-ucY)), x, y,ucpixelColor);
	//	if(
        vDrawLine ((unsigned short)(usX-(x-usX)), (unsigned short)(ucY-(y-ucY)), (unsigned short)(usX-(x-usX)), y,ucpixelColor);

        vDrawLine ((unsigned short)(usX-(y-ucY)), (unsigned short)(ucY-(x-usX)), (unsigned short)(usX+(y-ucY)), (unsigned short)(ucY-(x-usX)),ucpixelColor);
        vDrawLine ((unsigned short)(usX-(y-ucY)), (unsigned short)(ucY+(x-usX)), (unsigned short)(usX+(y-ucY)), (unsigned short)(ucY+(x-usX)),ucpixelColor);

        if (d<0)
		{
            d = d+((x-usX)<<2)+6;
        } else
		{
            d = d+(((x-usX)-(y-ucY))<<2)+10;
            y--;
        }

        x++;

    } while((x-usX)<=(y-ucY));

}

       
/******************************************************************************/
void Ar320240Demo(void)
{
        //unsigned char i;
	  // unsigned char i=0;	
      // unsigned short j=0;
    
	while(1)
	{

	   vAr320240Clr();
	   vFillCircle(159,119,56,67);
       vDrawRect(23,30,46,50,1);
	   vFillRect(34,40,230,120,234);
       vAr320240SetPixel(1,1,1);
	   vDrawLine(0,0,319,239,1);

	//	color();
	   vAr320240Clr();
       _Test_DrawVerticalStripe();
	//	vDelay();
	//	vDelay();
		 
       _Test_DrawHorizontalStripe();
	
//		vDelay();
//		vDelay();
		//vSwivelView(90);
		vDrawASC(1,1,'A',34);
		vDrawASCII(1,1,'A',34);
		//vSwivelView(180);
		// vAr320240Clr();
		// vDelay();
		vDrawASCString(0,7,"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-=,./;'[]`~!@#$%^&*()_+|:{}?><",67);
	//	vSingleColor(i);
	//	}
	//	vAr320240Clr();

//	vPutImage( LJX,320, 240 );
/*	
    vEnableSubWindow();
    vVideoInvert();
	vDisableSubWindow();

*/
	}
}

void vSwivelView( unsigned short usAngle )
{
	switch( usAngle )
	{
		case	90:
			*( volatile unsigned char * )( REGISTER_OFFSET + REG_SPECIAL_EFFECTS ) &= ( unsigned char )0x0FC;
			*( volatile unsigned char * )( REGISTER_OFFSET + REG_SPECIAL_EFFECTS ) |= ( unsigned char )0x01;
			*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_DISP_START_ADDR0 ) = ( unsigned char )0x3b;
			*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_DISP_START_ADDR1 ) = ( unsigned char )0x00;
			*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_DISP_START_ADDR2 ) = ( unsigned char )0x00;
			*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_ADDR_OFFSET0 ) = ( unsigned char )0x3c;
			*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_ADDR_OFFSET1 ) = ( unsigned char )0x00;
			break;
			
		case	180:
			*( volatile unsigned char * )( REGISTER_OFFSET + REG_SPECIAL_EFFECTS ) &= ( unsigned char )0x0FC;
			*( volatile unsigned char * )( REGISTER_OFFSET + REG_SPECIAL_EFFECTS ) |= ( unsigned char )0x02;
			*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_DISP_START_ADDR0 ) = ( unsigned char )0xff;
			*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_DISP_START_ADDR1 ) = ( unsigned char )0x4a;
			*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_DISP_START_ADDR2 ) = ( unsigned char )0x00;
			*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_ADDR_OFFSET0 ) = ( unsigned char )0x50;
			*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_ADDR_OFFSET1 ) = ( unsigned char )0x00;
			break;
			
		case	270:
			*( volatile unsigned char * )( REGISTER_OFFSET + REG_SPECIAL_EFFECTS ) &= ( unsigned char )0x0FC;
			*( volatile unsigned char * )( REGISTER_OFFSET + REG_SPECIAL_EFFECTS ) |= ( unsigned char )0x03;
			*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_DISP_START_ADDR0 ) = ( unsigned char )0xc4;
			*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_DISP_START_ADDR1 ) = ( unsigned char )0x4a;
			*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_DISP_START_ADDR2 ) = ( unsigned char )0x00;
			*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_ADDR_OFFSET0 ) = ( unsigned char )0x3c;
			*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_ADDR_OFFSET1 ) = ( unsigned char )0x00;
			break;
		
		default:
			break;
	}
}
/********************************************************************************************************/
void vDisableSubWindow( void )
{
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_DISP_START_ADDR0 ) = ( unsigned char )0x7F;
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_DISP_START_ADDR1 ) = ( unsigned char )0x25;
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_DISP_START_ADDR2 ) = ( unsigned char )0x00;
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_ADDR_OFFSET0 ) = ( unsigned char )0x28;
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_ADDR_OFFSET1 ) = ( unsigned char )0x00;
}

void vEnableSubWindow( void )
{
	// enable sub-window
	//*( volatile unsigned char * )( REGISTER_OFFSET + REG_SPECIAL_EFFECTS ) |= ( unsigned char )0x10;
	
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_DISP_START_ADDR0 ) = ( unsigned char )0x6f;
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_DISP_START_ADDR1 ) = ( unsigned char )0x3f;
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_DISP_START_ADDR2 ) = ( unsigned char )0x00;
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_ADDR_OFFSET0 ) = ( unsigned char )0x4B;
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_MAIN_WIN_ADDR_OFFSET1 ) = ( unsigned char )0x00;
	
	// Sub-window display start address
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_SUB_WIN_DISP_START_ADDR0 ) = 0x7f;
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_SUB_WIN_DISP_START_ADDR1 ) = 0x25;
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_SUB_WIN_DISP_START_ADDR2 ) = 0x00;
	
	// Sub-window Line address offset
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_SUB_WIN_ADDR_OFFSET0 ) = 0x28;
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_SUB_WIN_ADDR_OFFSET1 ) = 0x00;
	
	// Sub-window X start position
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_SUB_WIN_X_START_POS0 ) = 40;
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_SUB_WIN_X_START_POS1 ) = 0x00;
	
	// Sub-window Y start position
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_SUB_WIN_Y_START_POS0 ) = 240;
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_SUB_WIN_Y_START_POS1 ) = 0x00;
	
	// Sub-window X end position
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_SUB_WIN_X_END_POS0 ) = 0x00;
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_SUB_WIN_X_END_POS1 ) = 0x00;
	
	// Sub-window Y end position
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_SUB_WIN_Y_END_POS0 ) = 0x00;
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_SUB_WIN_Y_END_POS1 ) = 0x00;
}
/**********************************************************************************************/
/***********************************************************************************************
 * vVideoInvert
 *   Type :	void
 *   Ret val :	none
 *   Argument :	none
 *   Function :	Invert the LCD
 ***********************************************************************************************/
void vVideoInvert( void )
{
	*( volatile unsigned char * )( REGISTER_OFFSET + REG_DISPLAY_MODE  ) |= ( unsigned char )0x10;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -