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

📄 display.c

📁 我个人编写的车载dvd上的程序
💻 C
字号:

#include "public.h"

void DisplayInit(void)
{
	Wait1ms(20);

	PDDR_DISP_RS=1;
	PCR1_DISP_RS=1;
	PCR2_DISP_RS=0;

	PDDR_DISP_RW=1;
	PCR1_DISP_RW=1;
	PCR2_DISP_RW=0;

	PDDR_DISP_E=1;
	PCR1_DISP_E=1;
	PCR2_DISP_E=0;

	PDDR_DISP_DB0=1;
	PCR1_DISP_DB0=1;
	PCR2_DISP_DB0=0;

	PDDR_DISP_DB1=1;
	PCR1_DISP_DB1=1;
	PCR2_DISP_DB1=0;

	PDDR_DISP_DB2=1;
	PCR1_DISP_DB2=1;
	PCR2_DISP_DB2=0;

	PDDR_DISP_DB3=1;
	PCR1_DISP_DB3=1;
	PCR2_DISP_DB3=0;

	PDDR_DISP_DB4=1;
	PCR1_DISP_DB4=1;
	PCR2_DISP_DB4=0;

	PDDR_DISP_DB5=1;
	PCR1_DISP_DB5=1;
	PCR2_DISP_DB5=0;

	PDDR_DISP_DB6=1;
	PCR1_DISP_DB6=1;
	PCR2_DISP_DB6=0;

	PDDR_DISP_DB7=1;
	PCR1_DISP_DB7=1;
	PCR2_DISP_DB7=0;

	/*Pin_DISP_RS=1;
	Pin_DISP_RW=1;
	Pin_DISP_E=1;
	Pin_DISP_DB7=1;
	Pin_DISP_DB6=1;
	Pin_DISP_DB5=1;
	Pin_DISP_DB4=1;
	Pin_DISP_DB3=1;
	Pin_DISP_DB2=1;
	Pin_DISP_DB1=1;
	Pin_DISP_DB0=1;
	NOP;
	Pin_DISP_RS=0;
	Pin_DISP_RW=0;
	Pin_DISP_E=0;
	Pin_DISP_DB7=0;
	Pin_DISP_DB6=0;
	Pin_DISP_DB5=0;
	Pin_DISP_DB4=0;
	Pin_DISP_DB3=0;
	Pin_DISP_DB2=0;
	Pin_DISP_DB1=0;
	Pin_DISP_DB0=0;
	NOP;
	Pin_DISP_RS=1;
	Pin_DISP_RW=1;
	Pin_DISP_E=1;
	Pin_DISP_DB7=1;
	Pin_DISP_DB6=1;
	Pin_DISP_DB5=1;
	Pin_DISP_DB4=1;
	Pin_DISP_DB3=1;
	Pin_DISP_DB2=1;
	Pin_DISP_DB1=1;
	Pin_DISP_DB0=1;
	NOP;*/
	
	
	
	DisplaySendCommand(y00111000);
	Wait1ms(5);
	DisplaySendCommand(y00111000);
	Wait10us(100);
	DisplaySendCommand(y00111000);
	Wait10us(100);
	// Display Off
	DisplaySendCommand(y00001000);
	// Display Clear
	DisplaySendCommand(y00000001);
	// Increase Mode
	DisplaySendCommand(y00000110);
	// Display On
	DisplaySendCommand(y00001100);

	Display(DISP_CLEAR);

}

void DisplayMain(void)
{
	DisplayRefresh();
}

void Display(unsigned char command)
{
	unsigned char i,j;
	switch(command)
	{
		case DISP_CLEAR0:
			for (j=0;j<20;j++)
				DispBuff[0][j]=' ';
			break;
		case DISP_CLEAR1:
			for (j=0;j<20;j++)
				DispBuff[1][j]=' ';
			break;
		case DISP_CLEAR2:
			for (j=0;j<20;j++)
				DispBuff[2][j]=' ';
			break;
		case DISP_CLEAR3:
			for (j=0;j<20;j++)
				DispBuff[3][j]=' ';
			break;
		case DISP_CLEAR:
			for (i=0;i<4;i++)
				for (j=0;j<20;j++)
					DispBuff[i][j]=' ';
		case DISP_REFRESH:
			F_DispRefresh0=1;
			F_DispRefresh1=1;
			F_DispRefresh2=1;
			F_DispRefresh3=1;
			break;
		case DISP_REFRESH0:
			F_DispRefresh0=1;
			break;
		case DISP_REFRESH1:
			F_DispRefresh1=1;
			break;
		case DISP_REFRESH2:
			F_DispRefresh2=1;
			break;
		case DISP_REFRESH3:
			F_DispRefresh3=1;
			break;
	}
}


void PrintLine(unsigned char linenum, unsigned char @far *pStr1)
{
	unsigned char i;
	if(linenum>3)return;
	
	for(i=0;i<20;i++)
	{
		if(*pStr1)
		{
			DispBuff[linenum][i]=*pStr1;
			pStr1++;
		}
		else
			DispBuff[linenum][i]=' ';
	}
	Display(linenum);
}

void PrintString(unsigned char @far *pStr1)
{
	unsigned char i,j;
	for(i=0;i<4;i++)
		for(j=0;j<20;j++)
		{
			if(*pStr1)
			{
				DispBuff[i][j]=*pStr1;
				pStr1++;
			}
			else
				DispBuff[i][j]=' ';
		}
	Display(DISP_REFRESH);
}

void DisplayRefresh(void)
{
	unsigned char i;
	if(F_DispRefresh0)
	{
		F_DispRefresh0=0;
		DisplaySendCommand(y10000000); //address 0
		for (i=0;i<20;i++)
		{
			DisplaySendData(DispBuff[0][i]);
		}
	}

	if(F_DispRefresh1)
	{
		F_DispRefresh1=0;
		DisplaySendCommand(y11000000); //address 0x40
		for (i=0;i<20;i++)
		{
			DisplaySendData(DispBuff[1][i]);
		}
	}

	if(F_DispRefresh2)
	{
		F_DispRefresh2=0;
		DisplaySendCommand(y10010100); //address 0x14
		for (i=0;i<20;i++)
		{
			DisplaySendData(DispBuff[2][i]);
		}
	}

	if(F_DispRefresh3)
	{
		F_DispRefresh3=0;
		DisplaySendCommand(y11010100); //address 0x54
		for (i=0;i<20;i++)
		{
			DisplaySendData(DispBuff[3][i]);
		}
	}

	
}

unsigned char DisplayReadBusy(void)
{
	unsigned char readdata;
	Pin_DISP_DB0=1;
	Pin_DISP_DB1=1;
	Pin_DISP_DB2=1;
	Pin_DISP_DB3=1;
	Pin_DISP_DB4=1;
	Pin_DISP_DB5=1;
	Pin_DISP_DB6=1;
	Pin_DISP_DB7=1;
	M_WAIT;
	
	// input
	PDDR_DISP_DB0=0;
	PDDR_DISP_DB1=0;
	PDDR_DISP_DB2=0;
	PDDR_DISP_DB3=0;
	PDDR_DISP_DB4=0;
	PDDR_DISP_DB5=0;
	PDDR_DISP_DB6=0;
	PDDR_DISP_DB7=0;
	M_WAIT;
	
	Pin_DISP_RS=0;
	Pin_DISP_RW=1;
	M_WAIT;
	Pin_DISP_E=1;
	M_WAIT;
	if(PinIn_DISP_DB7)
		readdata=1;
	else
		readdata=0;
	Pin_DISP_E=0;
	M_WAIT;

	// output
	PDDR_DISP_DB0=1;
	PDDR_DISP_DB1=1;
	PDDR_DISP_DB2=1;
	PDDR_DISP_DB3=1;
	PDDR_DISP_DB4=1;
	PDDR_DISP_DB5=1;
	PDDR_DISP_DB6=1;
	PDDR_DISP_DB7=1;
	   
	return(readdata);
	
}


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

void DisplaySendCommand(unsigned char sendcommand)
{
	UCharField temp;
	temp.byte=sendcommand;

	WaitWhenBusy();
	
	Pin_DISP_RS=0;
	Pin_DISP_RW=0;
	M_WAIT;
	Pin_DISP_E=1;
	M_WAIT;
	if(temp.field.B0)
		Pin_DISP_DB0=1;
	else
		Pin_DISP_DB0=0;
	if(temp.field.B1)
		Pin_DISP_DB1=1;
	else
		Pin_DISP_DB1=0;
	if(temp.field.B2)
		Pin_DISP_DB2=1;
	else
		Pin_DISP_DB2=0;
	if(temp.field.B3)
		Pin_DISP_DB3=1;
	else
		Pin_DISP_DB3=0;
	if(temp.field.B4)
		Pin_DISP_DB4=1;
	else
		Pin_DISP_DB4=0;
	if(temp.field.B5)
		Pin_DISP_DB5=1;
	else
		Pin_DISP_DB5=0;
	if(temp.field.B6)
		Pin_DISP_DB6=1;
	else
		Pin_DISP_DB6=0;
	if(temp.field.B7)
		Pin_DISP_DB7=1;
	else
		Pin_DISP_DB7=0;
	M_WAIT;
	Pin_DISP_E=0;
	M_WAIT;
	
}

void DisplaySendData(unsigned char senddata)
{
	UCharField temp;
	temp.byte=senddata;

	WaitWhenBusy();
	
	Pin_DISP_RS=1;
	Pin_DISP_RW=0;
	M_WAIT;
	Pin_DISP_E=1;
	M_WAIT;
	if(temp.field.B0)
		Pin_DISP_DB0=1;
	else
		Pin_DISP_DB0=0;
	if(temp.field.B1)
		Pin_DISP_DB1=1;
	else
		Pin_DISP_DB1=0;
	if(temp.field.B2)
		Pin_DISP_DB2=1;
	else
		Pin_DISP_DB2=0;
	if(temp.field.B3)
		Pin_DISP_DB3=1;
	else
		Pin_DISP_DB3=0;
	if(temp.field.B4)
		Pin_DISP_DB4=1;
	else
		Pin_DISP_DB4=0;
	if(temp.field.B5)
		Pin_DISP_DB5=1;
	else
		Pin_DISP_DB5=0;
	if(temp.field.B6)
		Pin_DISP_DB6=1;
	else
		Pin_DISP_DB6=0;
	if(temp.field.B7)
		Pin_DISP_DB7=1;
	else
		Pin_DISP_DB7=0;
	M_WAIT;
	Pin_DISP_E=0;
	M_WAIT;

}

unsigned char ReturnDispNum(unsigned int inputnum,unsigned int pos)
{
	/*volatile unsigned int temp;
	temp=inputnum/pos;
	temp=temp%10;
	temp+='0';
	return((unsigned char)temp);*/
	return((inputnum/pos)%10+'0');
}

⌨️ 快捷键说明

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