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; }
//************************************************************************************ //*函数名称: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); }