示例#1
0
//*******************************************
//*函数名称:void LCD_CheckBusy(void)	*
//*函数功能:并行方式查忙					*
//*形式参数:无								*
//*形参说明:无								*
//*返回参数:无								*
//*使用说明:无								*
//*******************************************
void LCD_CheckBusy(void)
{
#if PARALLEL == 1
	unsigned char temp;
	LCD_DATA_IN();	//P1 = 0xff;	//输入前置1
	LCD_RS_LOW();	//RS = 0;		//指令
	LCD_RW_HIGH();	//RW = 1;		//读模式
	_delay_us(5);	//延时
	LCD_E_HIGH();	//E  = 1;	 //使能
	do
	{	
		temp = LCD_DATA_GET();	//temp = BUSY;
	}
  	while( 0x80==(temp&0x80) );	//等待不忙,temp=0x00时不忙
	
	LCD_E_LOW();	//E  = 0;
	//_delay_ms(20);
#else
	unsigned char temp = 0xFC,temp2;
	do
	{
		LCD_SendByte(temp);
		temp = LCD_ReceiveByte();
		temp2 = LCD_ReceiveByte();
		temp &= 0x80;
	}while( temp==0x80 );
#endif	//#if PARALLEL == 1
}
void LCD_CHAR(unsigned char data)
{
	LCD_E_LOW();
	LCD_RS_HIGH();
	LCD_DATA(data);
	LCD_E_HIGH();
	tme_tempo(1);
	LCD_E_LOW();
}
示例#3
0
//************************************************************************************
//*函数名称:void LCD_Write(unsigned char Data_Command , unsigned char uc_Content ) *
//*函数功能:并行模式向LCD发送数据或指令												 *
//*形式参数:unsigned char Data_Command , unsigned char uc_Content					 *
//*形参说明:数据或指令的标志位,指令或数据的内容										 *
//*返回参数:无																		 *
//*使用说明:无																		 *
//************************************************************************************
void LCD_Write( unsigned char Data_Command , unsigned char uc_Content )
{ 
#if PARALLEL == 1

	LCD_CheckBusy();
	LCD_DATA_OUT();

	if(Data_Command)
	{
		LCD_RS_HIGH();	//RS = 1;   //数据
		//LCD_RW_LOW();	//RW = 0;   //写模式
	}
	else 
	{
		LCD_RS_LOW();	//RS = 0;	//指令
		//LCD_RW_LOW();	//RW = 0;   //写模式
	}
	LCD_RW_LOW();		//RW = 0;   //写模式

  	LCD_DATA_PORT = uc_Content;//数据放到P1口上
  	LCD_E_HIGH();	//E = 1;
	_delay_us(1);	//延时
  	//_nop_();//很重要 
	//_nop_();
   	//_nop_();
    LCD_E_LOW();	//E = 0;		
#else
	unsigned char temp;

	LCD_CheckBusy();
	
	if(Data_Command)
	{
		temp = 0xFA;	//RS = 1,数据; RW = 0,写模式
	}
	else 
	{
		temp = 0xF8;	//RS = 0,指令; RW = 0,写模式
	}
	LCD_SendByte(temp);

	temp = uc_Content&0xF0;
	LCD_SendByte(temp);

	temp = (uc_Content<<4)&0xF0;
	LCD_SendByte(temp);
#endif	//#if PARALLEL == 1												
}
示例#4
0
//********************************************
//*函数名称:LCD_ReadData		 *
//*函数功能:并行读LCD数据					 *
//*形式参数:无								 *
//*形参说明:无								 *
//*返回参数:读回的数据						 *
//*使用说明:无								 *
//********************************************
unsigned char LCD_ReadData(void)
{
#if PARALLEL == 1
 	unsigned char uc_Content;
	LCD_CheckBusy();
	//_delay_us(2);

	LCD_DATA_IN();	//P1 = 0xff;//输入前置1
    LCD_RS_HIGH();	//RS = 1;   //数据
    LCD_RW_HIGH();	//RW = 1;	//读模式

  	LCD_E_HIGH();	//E = 1;	//使能
	_delay_us(1);	//延时很重要 
  	uc_Content = LCD_DATA_GET();	//uc_Content = P1;    //P1口的内容放到变量中
  	LCD_E_LOW();	//E = 0;

	_delay_us(1);	//延时很重要 

	return uc_Content;
#endif	//#if PARALLEL == 1
}