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

📄 lcd_show.c

📁 基于51的LCD+PS2程序
💻 C
字号:
#include"PS2.H"

sbit CS = P2^5;
sbit SID=P2^6;
sbit CLK=P2^7;
sbit FSB=P2^4;
sbit RST=P2^3;

					 
uchar code addr[]={ 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 
                    0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 
                    0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,
                    0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f };//DDRAM地址
extern unsigned char Time[];
					 
/*****************************函数列表*******************************/
void InitLcd( void );
void Send(unsigned char senddata);
void delay( uint t );
void WriteCmd( uchar cmd );
void WriteData( uchar Data );
void display( uchar *x_add,uchar *dat1,uchar *dat2 );
void DisHz16x16(uchar x,uchar y,uchar *Data);
void Dis5bitNumber( uchar x,uchar y, uint Number );
void DisMhz( uchar x,uchar y  );
void WhiteLine( uchar line );
void CleanScreen( void );
void CleanUnit( uchar x,uchar y );
void DisTab( uchar x,uchar y );
void DisMenu( void );
void MenuLoop( uchar Tab_X,uchar Tab_Y );
void DisSaveChannelNote( void );
void DisInput(unsigned char Input);
void DisString(unsigned char *String,unsigned char Length);

unsigned char CountInput = 0;
/*****************************初始化子程序******************************/
void InitLcd(void)
{

  delay( 50000 );//延时45MS

  FSB = 0;
  CS  = 1;
  WriteCmd( 0x30 );
  delay( 150 );//延时150us

  WriteCmd(0x30);
  delay( 45 );//延时45us

  WriteCmd( 0x0C );
  delay( 150 );//延时150us
  
  CleanScreen();
  delay( 15000 );//延时12MS
  
  WriteCmd(0x06);
}

/*****************************延时子程序***************************/
void delay( uint t )
{
  while( t-- );      
}
/*********************************************************** 
函数名称: 
函数功能: 
入口参数: 
出口参数: 
备 注: 
***********************************************************/
void DelayUS(unsigned int n)       //N us延时函数
  {
   unsigned int i=0;
   for (i=0;i<n;i++)
       _nop_();
  }
/*********************************************************** 
函数名称: 
函数功能: 发送命令
入口参数: 
出口参数: 
备 注: 
***********************************************************/
void Send(unsigned char senddata)
{
	unsigned char i;
	for(i=0;i<8;i++)
	{
		if((senddata)&0x80)
		    SID = 1;
		else
			SID = 0;	
		CLK = 1;
		_nop_();
		CLK = 0;
		senddata<<=1;
	}
}


/*******************************写指令子程序***************************/
void WriteCmd( uchar cmd )
{ 	
	Send(0xf8);
	Send(cmd&0xf0);
	Send(cmd<<4);	
	DelayUS(20);
}

/***********************************写数据子程序****************************/
void WriteData(unsigned char Data)
{
	Send(0xfa);
	Send(Data&0xf0);
	Send(Data<<4);
	DelayUS(20);     
}


/*********************************************************** 
函数名称: 
函数功能:显示16X16汉字  带有X,Y坐标 
入口参数: 
出口参数: 
备 注:  X(0~~7)Y(0~~3)
***********************************************************/
void DisHz16x16(uchar x,uchar y,uchar *Data)
{
	WriteCmd( addr[(8*y+x)] );
	WriteData( *Data );
	WriteData( *(Data+1) );
}
/*********************************************************** 
函数名称: 
函数功能: 显示2位数字
入口参数: 
出口参数: 
备 注: 
***********************************************************/
void Dis2bitNumber( uchar x,uchar y, uint Number )
{
	WriteCmd( addr[(8*y+x)] );
	WriteData( LCDNumber[(Number/16)] );
	WriteData( LCDNumber[(Number%16)] );
	WriteCmd( 0x30 );	
}
/*********************************************************** 
函数名称: 
函数功能: 显示4位数字
入口参数: 
出口参数: 
备 注: 
***********************************************************/
void Dis4bitNumber( uchar x,uchar y, uint Number )
{
	WriteCmd( addr[(8*y+x)] );
	WriteData( LCDNumber[Number/1000] );
	WriteData( LCDNumber[(Number/100)%10] );
	WriteCmd( addr[(8*y+x+1)] );
	WriteData( LCDNumber[(Number/10)%10] );
	WriteData( LCDNumber[(Number%10)] );
	WriteCmd( 0x30 );	
}
/*********************************************************** 
函数名称: 
函数功能: 
入口参数: 
出口参数: 
备 注: 
***********************************************************
void DisInput(unsigned char Input)
{
	if(CountInput%2==0)
	{
		if(CountInput==64)
			{
			CountInput = 0;
			CleanScreen();
			}

	WriteCmd( addr[CountInput/2] );
	}
	WriteData(Input);
	
	if(Input==99)
	{
	WriteData(0x20);
	}
	else  
	{
	WriteData(LCDNumber[Input]);
	}

	CountInput++;

}
/*********************************************************** 
函数名称: 
函数功能:显示4位数字,其中两位为小数 
入口参数: 
出口参数: 
备 注: 
***********************************************************
void Dis5bitNumber( uchar x,uchar y, uint Number )
{
	WriteCmd( addr[(8*y+x)] );
	WriteData( LCDNumber[Number/1000] );
	WriteData( LCDNumber[(Number/100)%10] );
	WriteCmd( addr[(8*y+x+1)] );
	WriteData(0x2e);
	WriteData( LCDNumber[(Number/10)%10] );
	WriteCmd( addr[(8*y+x+2)] );
	WriteData( LCDNumber[(Number%10)] );

	WriteCmd( 0x30 );	
}
/*********************************************************** 
函数名称: 
函数功能:清屏 
入口参数: 
出口参数: 
备 注: 
***********************************************************/
void CleanScreen( void )
{
	WriteCmd( 0x01 );
	
}	
/*********************************************************** 
函数名称: 
函数功能:清除单位块 
入口参数: 
出口参数: 
备 注: 
***********************************************************
void CleanUnit( uchar x,uchar y )
{
	WriteCmd( addr[(8*y+x)] );
	WriteData( 0x20 );
	WriteData( 0x20 );
}

/*********************************************************** 
函数名称: 
函数功能:
入口参数: 
出口参数: 
备 注: 
***********************************************************/
void DisString(unsigned char *String,unsigned char Length)
{
	unsigned char i;
	WriteCmd( addr[0] );
 	for(i=0;i<=Length;i++)
	{
	if(i%2==0)
	{
		if(i==64)
			{
			CleanScreen();
			}
	WriteCmd( addr[i/2] );
	}
	WriteData(String[i]);
	}
} 
/*********************************************************** 
函数名称: 
函数功能:显示声音 
入口参数: 
出口参数: 
备 注: 
***********************************************************
void DisSoundValue( void )
{


			
}


/*********************************************************** 
函数名称: 
函数功能: 
入口参数: 
出口参数: 
备 注: 秒 分 时 日 月 星期 年 
***********************************************************
void DisDs1302( void )
{
	Get1302(&Time[0]);
	Dis2bitNumber(0,0,Time[6]);
	DisHz16x16(1,0,&nian);
	Dis2bitNumber(2,0,Time[4]);
	DisHz16x16(3,0,&yue);
	Dis2bitNumber(4,0,Time[3]);
	DisHz16x16(5,0,&ri);
//	Dis2bitNumber(6,0,Time[2]);
//	DisHz16x16(7,0,&ri);
	Dis2bitNumber(0,1,Time[2]);
	WriteData(0x3a);
	Dis2bitNumber(2,1,Time[1]);
	WriteData(0x3a);
	Dis2bitNumber(4,1,Time[0]);
	DisHz16x16(5,1,&xing);
	DisHz16x16(6,1,&qi);
	Dis2bitNumber(7,1,Time[5]);
}

/*********************************************************** 
函数名称: 
函数功能:控制对目录的操作 
入口参数:浮标X,Y坐标 
出口参数: 
备 注: 
***********************************************************/

⌨️ 快捷键说明

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