void SendByte(uchar Data){
	ReadStatus(3);
//    CLREA;
	LCD_DATA_OUT(Data);
	ClrCMD;
	ClrCE;				//Разрешение записи в дисплей
	ClrWR;
	Delay(1);
	SetWR;
	SetCE;				//Запрещение записи в дисплей
//    SETEA;

}
void SendCmd(uchar Cmd){
	ReadStatus(3);

//    CLREA;
	LCD_DATA_OUT(Cmd);
	SetCMD;
	ClrCE;				//Разрешение записи в дисплей
	ClrWR;
	Delay(1);
	SetWR;
	SetCE;				//Запрещение записи в дисплей
//    SETEA;

}
Example #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												
}
void ClearGraf(void){
int i;
	InitLCD();
	Send2(cmdAddrPtr,GrfHomeAddr);
	SendCmd(cmdOnAutoWr);
//---- очистка графического экрана -------
	for(i=0; i < 40*64; i++) {
		ReadStatus(8);
//		CLREA;
		LCD_DATA_OUT(0);
		ClrCMD;
		ClrCE;				//Разрешение записи в дисплей
		ClrWR;
		Delay(1);
		SetWR;
		SetCE;				//Запрещение записи в дисплей
//    	SETEA;
		}
	SendCmd(cmdOffAuto);
}
void SendSim(char vSim, char NumStr){
char vDisplCols;
	vDisplCols=DisplCols;
	Send2(cmdAddrPtr,TxtHomeAddr+NumStr*DisplCols);
	SendCmd(cmdOnAutoWr);
	while (vDisplCols--) {
		ReadStatus(8);
//		CLREA;
		LCD_DATA_OUT(vSim);
		ClrCMD;
		ClrCE;				//Разрешение записи в дисплей
		ClrWR;
		Delay(1);
		SetWR;
		SetCE;				//Запрещение записи в дисплей
//		SETEA;

		}
	SendCmd(cmdOffAuto);
}
void SendBlockPM(char *Src, int Dst, int Size){
char ch;
	Send2(cmdAddrPtr,Dst);
	SendCmd(cmdOnAutoWr);
	while (Size--) {
		ch=Src - 0x20;
		Src++;
		ReadStatus(8);
//		CLREA;
		LCD_DATA_OUT(ch);
		ClrCMD;
		ClrCE;				//Разрешение записи в дисплей
		ClrWR;
		Delay(1);
		SetWR;
		SetCE;				//Запрещение записи в дисплей
//		SETEA;
		}
	SendCmd(cmdOffAuto);
}
void SendFirstScreen(char tmSec){
int i;
	if(!tmSec) return;
	GrafView=tmSec;
	SendCmd(cmdTxtOffGrafOn);
	Send2(cmdAddrPtr,GrfHomeAddr);
	SendCmd(cmdOnAutoWr);
	for(i=0; i < 40*64; i++) {
		ReadStatus(8);

//		CLREA;
		LCD_DATA_OUT(FirstScreen[i]);
		ClrCMD;
		ClrCE;				//Разрешение записи в дисплей
		ClrWR;
		Delay(1);
		SetWR;
		SetCE;				//Запрещение записи в дисплей
//    	SETEA;
		}
	SendCmd(cmdOffAuto);
}