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

📄 icetek-vc5509-edu.h

📁 利用DSP5000系列的5509编写的一个关于FIR滤波器算法的一个程序
💻 H
📖 第 1 页 / 共 2 页
字号:
	unsigned char dbReturn;
	
	dbReturn=CTRKEY;
	dbClearKey=CTRCLKEY;
	return dbReturn;
}

char ConvertScanToChar(unsigned char cScanCode)
{
	char cReturn;
	
	cReturn=0;
	switch ( cScanCode )
	{
		case SCANCODE_0: cReturn='0'; break;
		case SCANCODE_1: cReturn='1'; break;
		case SCANCODE_2: cReturn='2'; break;
		case SCANCODE_3: cReturn='3'; break;
		case SCANCODE_4: cReturn='4'; break;
		case SCANCODE_5: cReturn='5'; break;
		case SCANCODE_6: cReturn='6'; break;
		case SCANCODE_7: cReturn='7'; break;
		case SCANCODE_8: cReturn='8'; break;
		case SCANCODE_9: cReturn='9'; break;
		case SCANCODE_Plus: cReturn='+'; break;
		case SCANCODE_Minus: cReturn='-'; break;
	}
	return cReturn;
}

void InitCTR()
{
	int i;
	
	for ( i=0;i<8;i++ )
	{
		ledbuf[i]=0x0ff;		// 显示为空白
		ledx[i]=(i<<4);	// 生成显示列控制字
	}
    CTRGR=0; CTRGR=0x80; CTRGR=0;
    CTRLR=0; CTRLR=0x40;
    CTRLR=0x0c0;
	LCDCMD(LCDCMDTURNOFF);	
	dbClearKey=CTRCLKEY;
	LBDS=0;
}
void _Delay(unsigned int nDelay)
{
	int jj,kk=0;
		for ( jj=0;jj<12;jj++ )
		{
			kk++;
		}
}

void Delay(unsigned int nDelay)
{
	int ii,jj,kk=0;
	for ( ii=0;ii<nDelay;ii++ )
	{
		for ( jj=0;jj<1024;jj++ )
		{
			kk++;
		}
	}
}

void Delay1(unsigned int nDelay)
{
	int ii,jj,kk=0;
	for ( ii=0;ii<nDelay;ii++ )
	{
		for ( jj=0;jj<64;jj++ )
		{
			RefreshLEDArray();
			kk++;
		}
	}
}

void RefreshLEDArray()
{
	int i;
	for ( i=0;i<8;i++ )
	{
		CTRGR=ledx[i];
		CTRLA=ledbuf[i];
	}
}

void SetLEDArray(int nNumber)
{
	int i;
	for ( i=0;i<8;i++ )
		ledbuf[i]=~ledkey[nNumber][7-i];
}

void LCDWriteLeft(unsigned char dbData)
{
	CTRLCDLCR=dbData;
	CTRLCDCR=0;
}

void LCDWriteRight(unsigned char dbData)
{
	CTRLCDRCR=dbData;
	CTRLCDCR=0;
}

void TurnOnLCD()
{
	LCDCMD(LCDCMDTURNON);
}
void LCDCLS()
{
	int i,j;
	unsigned int *pWork;
	
	CTRLCDCMDR=LCDCMDSTARTLINE; _Delay(_nLCDDelay); CTRLCDCR=0; _Delay(_nLCDDelay);
	pWork=_pScreen;
	for ( i=0;i<_nYWord;i++ )
	{
		CTRLCDCMDR=LCDCMDPAGE+i; _Delay(_nLCDDelay);
		CTRLCDCR=0;
		_Delay(_nLCDDelay);
		CTRLCDCMDR=LCDCMDVERADDRESS; _Delay(_nLCDDelay);
		CTRLCDCR=0;
		_Delay(_nLCDDelay);
		for ( j=0;j<_nXWord;j++,pWork++ )
		{
			CTRLCDLCR=0; _Delay(_nLCDDelay); CTRLCDCR=0;	_Delay(_nLCDDelay);
			(*pWork)=0;
		}
		CTRLCDCMDR=LCDCMDPAGE+i; _Delay(_nLCDDelay);
		CTRLCDCR=0;	_Delay(_nLCDDelay);
		CTRLCDCMDR=LCDCMDVERADDRESS; _Delay(_nLCDDelay);
		CTRLCDCR=0;	_Delay(_nLCDDelay);
		for ( j=0;j<_nXWord;j++,pWork++ )
		{
			CTRLCDRCR=0; _Delay(_nLCDDelay); CTRLCDCR=0;	_Delay(_nLCDDelay);
			(*pWork)=0;
		}
	}
}
void _LCDCLS()
{
	int i,j;
	LCDCMD(LCDCMDSTARTLINE);
	for ( i=0;i<8;i++ )
	{
		LCDCMD(LCDCMDPAGE+i);
		LCDCMD(LCDCMDVERADDRESS);
		for ( j=0;j<64;j++ )
			LCDWriteLeft(0);
		LCDCMD(LCDCMDPAGE+i);
		LCDCMD(LCDCMDVERADDRESS);
		for ( j=0;j<64;j++ )
			LCDWriteRight(0);
	}
}
 
void LCDPutString(unsigned int *pData,int x,int y,unsigned int nCharNumber,unsigned color)
{
	int i,j,l;
	unsigned int k,mcolor;
	
	for ( l=0;l<nCharNumber;l++ )
		for ( i=0;i<8;i++ )
		{
			k=1;
			for ( j=0;j<16;j++,k<<=1 )
			{
				if ( color==2 )	mcolor=2;
				else
				{
					mcolor=( pData[l*8+i]&k )?(1):(0);
					if ( color==0 )	mcolor=1-mcolor;
				}
				LCDPutPixel(x+l*8+i,y-j,mcolor);
			}
		}
	LCDRefreshScreen();
}

void ShowTitle()
{
	LCDPutCString(str1,CCXRTCX,CCYRTCX,4,1);
	LCDPutCString(str2+32,CCXJXSYX,CCYJXSYX,5,1);
	LCDPutCString(str12,CCXSD,CCYSD,2,1);

	LCDPutCString(str4,CCXFMQ,CCYFMQ,3,1);
	LCDPutCString(str5,CCXJP,CCYJP,2,1);
	LCDPutCString(str8,CCXAD,CCYAD,6,1);
//	LCDPutString(str8,CCXAD,CCYAD,2,1);
	LCDPutString(str3,CCXLED,CCYLED,3,1);
	LCDPutCString(str9,CCXZL,CCYZL,2,1);
	LCDPutCString(str6,CCXDJ1,CCYDJ1,2,1);
	LCDPutCString(str10,CCXBJ,CCYBJ,2,1);
	LCDPutCString(str6,CCXDJ2,CCYDJ2,2,1);
}

void LCDRefreshScreen()
{
	int i,j;
	int yl;
	unsigned int *pWork,nWork,nWork1;
//	if ( nRefreshMode==0 )
	{
		yl=_nYWord; pWork=_pScreen;
		CTRLCDCMDR=LCDCMDSTARTLINE; _Delay(_nLCDDelay);
		CTRLCDCR=0; _Delay(_nLCDDelay);
		for ( i=0;i<yl;i++ )
		{
			CTRLCDCMDR=LCDCMDPAGE+i; _Delay(_nLCDDelay);
			CTRLCDCR=0; _Delay(_nLCDDelay);
			CTRLCDCMDR=LCDCMDVERADDRESS; _Delay(_nLCDDelay);
			CTRLCDCR=0; _Delay(_nLCDDelay);
			for ( j=0;j<_nXWord;j++,pWork++ )
			{
				nWork=(*pWork)&0x0ff; nWork1=((*pWork)>>8);
				if ( nWork1==0 )
				{
					CTRLCDLCR=nWork; _Delay(_nLCDDelay);
					CTRLCDCR=0; _Delay(_nLCDDelay);
					(*pWork)=nWork;
				}
			}
		}
		for ( i=0;i<yl;i++ )
		{
			CTRLCDCMDR=LCDCMDPAGE+i; _Delay(_nLCDDelay);
			CTRLCDCR=0; _Delay(_nLCDDelay);
			CTRLCDCMDR=LCDCMDVERADDRESS; _Delay(_nLCDDelay);
			CTRLCDCR=0; _Delay(_nLCDDelay);
			for ( j=0;j<_nXWord;j++,pWork++ )
			{
				nWork=(*pWork)&0x0ff; nWork1=((*pWork)>>8);
				if ( nWork1==0 )
				{
					CTRLCDRCR=nWork; _Delay(_nLCDDelay);
					CTRLCDCR=0; _Delay(_nLCDDelay);
					(*pWork)=nWork;
				}
			}
		}
	}
}

void LCDPutPixel(int x,int y,unsigned int color)
{
	int nX,nY;
	unsigned int *pWork,nWork;
	
	nX=x+_nOriginX; nY=_nYLength-y-1;
	if ( nX<_nScreenX0 || nX>_nScreenX1 )	return;
	if ( nY<_nScreenY0 || nY>_nScreenY1 )	return;
	nWork=( nX<_nXWord )?(nX):(nX+448);
	nWork+=((nY/8)*_nXWord);
	pWork=_pScreen+nWork;
	nWork=(0x80>>(7-nY%8));
	if ( color==2 )
	{
		(*pWork)^=nWork;
	}
	else if ( color==0 )
	{
		nWork=(~nWork)&0x0ff;
		(*pWork)&=nWork;
	}
	else
	{
		(*pWork)|=nWork;
	}
	(*pWork)&=0x0ff;
}

void LCDDrawLine(int x0, int y0, int x1, int y1, unsigned char color)
{
	int x,y;
	int dx,dy,t,error,xd,yd;

	if ( (x0==x1)&&(y0==y1) ) LCDPutPixel(x0,y0,color);
	else	if ( y0==y1 )
	{	if ( x0>x1 )	{ t=x0; x0=x1; x1=t; t=y0; y0=y1; y1=t; }
	 	for ( x=x0;x<=x1;x++ )	LCDPutPixel(x,y0,color);
    } 
    else	if ( x0==x1 )
	{	if ( y0>y1 ) { t=x0; x0=x1; x1=t; t=y0; y0=y1; y1=t; }
	   	for ( y=y0;y<=y1;y++ ) LCDPutPixel(x0,y,color);
	}
	else
	{	xd=abs(x1-x0); yd=abs(y1-y0);
	   	if ( xd>=yd )
	    {	if ( x0>x1 ) { t=x0; x0=x1; x1=t; t=y0; y0=y1; y1=t; }
	       	error=(yd<<1)-(xd); LCDPutPixel(x0,y0,color);
	       	x=x0; y=y0; dy=(y1>y0)?1:(-1);
	       	while ( x<x1 )
		 	{	x++;
		   		if ( error<0 ) error+=(yd<<1); else { error+=((yd-xd)<<1); y+=dy; }
		   		LCDPutPixel(x,y,color);
		 	}
	    }
	  	else
	   	{	if ( y0>y1 ) { t=x0; x0=x1; x1=t; t=y0; y0=y1; y1=t; }
	     	error=(xd<<1)-(yd); LCDPutPixel(x0,y0,color);
	     	x=x0; y=y0; dx=(x1>x0)?1:(-1);
	     	while ( y<y1 )
	      	{	y++;
				if ( error<0 ) error+=(xd<<1); else { error+=((xd-yd)<<1); x+=dx; }
				LCDPutPixel(x,y,color);
	      	}
	   	}
	}
}

#define DATAINTMODE 0
#define DATAUINTMODE 1
#define LINEMODE 0
#define PIXELMODE 1
#define BARMODE 2

void LCDGraph(struct struLCDGraph *Gstru)
{
	LCDDrawGraph(Gstru);
	LCDRefreshScreen();
}

void LCDGraph2(struct struLCDGraph *Gstru,struct struLCDGraph *Gstru1)
{
	LCDDrawGraph(Gstru);
	LCDDrawGraph(Gstru1);
	LCDRefreshScreen();
}

void LCDDrawGraph(struct struLCDGraph *Gstru)
{
	unsigned int *pUint,uWork,sx0,sy0,sx1,sy1,*puWork;
	int *pInt,*pnWork,nWork,nx0,ny0,nx1,ny1;
	int i;
	float fWork,fxSample,fySample;
	
	if ( Gstru->bShowXCcoordinate )	LCDDrawLine(Gstru->nOriginX,Gstru->nOriginY,Gstru->nOriginX,Gstru->uWindowY1,1);
	if ( Gstru->bShowYCcoordinate )	LCDDrawLine(Gstru->nOriginX,Gstru->nOriginY,Gstru->uWindowX1,Gstru->nOriginY,1); 
	sx0=_nScreenX0; sx1=_nScreenX1; sy0=_nScreenY0; sy1=_nScreenY1;
	pInt=(int *)(Gstru->pData); pUint=(unsigned int *)(Gstru->pData);
	fySample=( Gstru->nOriginY==Gstru->uWindowY0 )?((float)(Gstru->uMaxValue)/abs(Gstru->uWindowY1-Gstru->uWindowY0)):((float)(Gstru->uMaxValue)/abs(Gstru->nOriginY-Gstru->uWindowY0));
	fySample=-fySample;
	fxSample=(float)(Gstru->uDataLength)/abs(Gstru->uWindowX1-Gstru->uWindowX0);
	pnWork=pInt; puWork=pUint;
	ny0=Gstru->nOriginY-(*pnWork)/fySample; nx0=Gstru->nOriginX; nx1=nx0+1;
	_nScreenX0=Gstru->uWindowX0; _nScreenX1=Gstru->uWindowX1; _nScreenY0=_nYLength-Gstru->uWindowY1; _nScreenY1=_nYLength-Gstru->uWindowY0;
	for ( i=1;i<Gstru->uWindowX1-Gstru->uWindowX0;i++,nx1++ )
	{
		uWork=i*fxSample;
		switch ( Gstru->uDataMode )
		{
			case DATAINTMODE:
				ny1=Gstru->nOriginY-(*(pnWork+uWork))/fySample;
				break;
			case DATAUINTMODE:
				ny1=Gstru->nOriginY-(*(puWork+uWork))/fySample;
				break;
		}
		switch ( Gstru->uLineMode )
		{
			case LINEMODE:
				LCDDrawLine(nx0,ny0,nx1,ny1,1);
				break;
			case PIXELMODE:
				LCDPutPixel(nx1,ny1,1);
				break;
			case BARMODE:
				LCDDrawLine(nx1,Gstru->nOriginY,nx1,ny1,1);
				break;
		}
		nx0=nx1; ny0=ny1;
	}
	_nScreenX0=sx0; _nScreenX1=sx1; _nScreenY0=sy0; _nScreenY1=sy1;
}
void LCDWriteBytes(unsigned int *pData,int x,int y,unsigned color)
{
	int i,j;
	unsigned int k,mcolor;
	
	for ( i=0;i<8;i++ )
	{
		k=1;
		for ( j=0;j<8;j++,k<<=1 )
		{
			if ( color==2 )	mcolor=2;
			else
			{
				mcolor=( pData[i]&k )?(1):(0);
				if ( color==0 )	mcolor=1-mcolor;
			}
			LCDPutPixel(x+i,y-j,mcolor);
		}
	}
	LCDRefreshScreen();
}

void LCDPutCString(unsigned int *pData,int x,int y,unsigned int nCharNumber,unsigned color)
{
	int i,j,l;
	unsigned int k,mcolor;
	
	for ( l=0;l<nCharNumber;l++ )
		for ( i=0;i<16;i++ )
		{
			k=1;
			for ( j=0;j<16;j++,k<<=1 )
			{
				if ( color==2 )	mcolor=2;
				else
				{
					mcolor=( pData[l*16+i]&k )?(1):(0);
					if ( color==0 )	mcolor=1-mcolor;
				}
				LCDPutPixel(x+l*16+i,y-j,mcolor);
			}
		}
	LCDRefreshScreen();
}


⌨️ 快捷键说明

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