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

📄 display.c

📁 7541数字高频头源程序
💻 C
字号:
/*********************************************************
	Project:		ST FST(TDA7540)
	File name:	DISPLAY.C
	Description:	
	Write/Modify:	Perry
	Time:		2005-11-22- 10:02:50
*********************************************************/

#include "public.h"

void DisplayInit(void)
{
	PD_DISP_RS=1;//yete ask
	PO_DISP_RS=1;

	PD_DISP_RW=1;
	PO_DISP_RW=1;

	PD_DISP_E=1;
	PO_DISP_E=1;

	PO_ALL_DB=0xFF;
	PD_ALL_DB=0xFF;// output
	
	// Function set
	DisplaySendCommand(y00111000);//yete ask
	Wait1ms(5);
	DisplaySendCommand(y00111000);
	Wait10us(100);
	DisplaySendCommand(y00111000);
	Wait10us(100);
	WaitWhenBusy();
	// Display Off
	DisplaySendCommand(y00001000);
	WaitWhenBusy();
	// Display Clear
	DisplaySendCommand(y00000001);
	WaitWhenBusy();
	// Increase Mode
	DisplaySendCommand(y00000110);
	WaitWhenBusy();
	// Display On
	DisplaySendCommand(y00001100);

	Display(DISP_CLEAR);

}

void DisplayMain(void)
{
	Flash(0,0xFF);
	Animation(ANIMATION_RUN);
	if(F_DispRefresh)
	{
		F_DispRefresh=0;
		DisplayRefresh();
	}
}

void Display(unsigned char command)
{
	unsigned char i;
	switch(command)
	{
		case DISP_CLEAR:
			for (i=0;i<32;i++)
				DispBuff[i]=' ';
		case DISP_REFRESH:
			F_DispRefresh=1;
			break;
	}
}

void PrintAnimation(unsigned char *p)
{
	unsigned char i;
	for(i=0;;i++,p++)
	{
		AniBuff[i]=*p;
		if(*p==0)break;
	}
}

void Animation(unsigned char mode,unsigned char *p,unsigned char bgtime)
{
	unsigned char i,temp;
	switch(mode)
	{
		case 0:
			if(!F_DispAnimation)
				break;
			if(AniTimer>0)
				break;
			AniTimer=4;
				
			for(i=0,temp=0;i<16;i++)
			{
				if(*PAni)
				{
					DispBuff[i]=*PAni;
				}
				else
				{
					DispBuff[i]=' ';
					temp=1;
				}
				PAni++;
			}
			if(temp)
			{
				PAni=PAni-AniPos-16;
				AniPos=0;
				AniTimer=AniBeginTime;
			}
			else
			{
				if(AniPos==0)
					AniTimer=AniBeginTime;
				PAni-=15;
				AniPos++;
			}
			F_DispRefresh=1;
			break;
		case 1:
			PAni=p;
			AniPos=0;
			AniBeginTime=bgtime;
			F_DispAnimation=1;
			break;
		case 2:
			F_DispAnimation=0;
			break;
	}
	
}

void Flash(unsigned char start, unsigned char length)
{
	unsigned char i;
	if(length==0xFF)
	{
		if(F_HalfSecondOut && F_DispFresh)
		{
			F_DispRefresh=1;
		}
	}
	else if(length==0)
	{
		F_DispRefresh=1;
		
		FlashStart=0;
		FlashLength=0;
		F_DispFresh=0;
	}
	else
	{
		FlashStart=start;
		FlashLength=length;
		F_DispFresh=1;
	}
}

void PrintLine1(unsigned char *pStr1)
{
	unsigned char i;
	for(i=0;i<16;i++)
	{
		if(*pStr1)
		{
			DispBuff[i]=*pStr1;
			pStr1++;
		}
		else
			DispBuff[i]=' ';
	}
	Display(DISP_REFRESH);
}

void PrintLine2(unsigned char *pStr1)
{
	unsigned char i;
	for(i=16;i<32;i++)
	{
		if(*pStr1)
		{
			DispBuff[i]=*pStr1;
			pStr1++;
		}
		else
			DispBuff[i]=' ';
	}
	
	Display(DISP_REFRESH);
}

void PrintString(unsigned char *pStr1,unsigned char *pStr2)
{
	unsigned char i;
	for(i=0;i<16;i++)
	{
		if(*pStr1)
		{
			DispBuff[i]=*pStr1;
			pStr1++;
		}
		else
			DispBuff[i]=' ';
	}
	for(i=16;i<32;i++)
	{
		if(*pStr2)
		{
			DispBuff[i]=*pStr2;
			pStr2++;
		}
		else
			DispBuff[i]=' ';
	}
	Display(DISP_REFRESH);
}

void DisplayRefresh(void)
{
	unsigned char i;
	WaitWhenBusy();
	DisplaySendCommand(y10000000); //address 0
	for (i=0;i<16;i++)
	{
		WaitWhenBusy();
		if(F_DispFresh && F_HalfSecond && i>=FlashStart && i<FlashStart+FlashLength)
			DisplaySendData(' ');
		else
			DisplaySendData(DispBuff[i]);
	}

	WaitWhenBusy();
	DisplaySendCommand(y11000000); //address 0x40
	for (i=16;i<32;i++)
	{
		WaitWhenBusy();
		if(F_DispFresh && F_HalfSecond && i>=FlashStart && i<FlashStart+FlashLength)
			DisplaySendData(' ');
		else
			DisplaySendData(DispBuff[i]);
	}
}

unsigned char DisplayReadBusy(void)
{
	unsigned char readdata;
	PD_ALL_DB=0;// input

	Pin_DISP_RS=0;
	Pin_DISP_RW=1;
	NOP;
	Pin_DISP_E=1;
	NOP;
	readdata=Pin_ALL_DB>>7;
	Pin_DISP_E=0;

	PD_ALL_DB=0xFF;//output
	   
	return(readdata);
}


void WaitWhenBusy(void)
{
	unsigned char i;
	/*for(i=0;i<4&&DisplayReadBusy();i++)
		Wait10us(100);*/
	while(DisplayReadBusy());
}

void DisplaySendCommand(unsigned char sendcommand)
{
	Pin_DISP_RS=0;
	Pin_DISP_RW=0;
	NOP;
	Pin_DISP_E=1;
	NOP;
	Pin_ALL_DB=sendcommand;
	Pin_DISP_E=0;
}

void DisplaySendData(unsigned char senddata)
{
	Pin_DISP_RS=1;
	Pin_DISP_RW=0;
	NOP;
	Pin_DISP_E=1;
	NOP;
	Pin_ALL_DB=senddata;
	Pin_DISP_E=0;
}

void DisplayTimer100ms(void)
{
	if(AniTimer>0)AniTimer--;
	
}

/*********************************************************
				File End
*********************************************************/

⌨️ 快捷键说明

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