lcm.c File Reference

#include "includes.h"

Go to the source code of this file.

Defines

#define LcmIdleState   0
#define LcmUpdateState   1
#define LcmHigh4bitSubstate   0
#define LcmLow4bitSubstate   1
#define LcmData0   RJ4
#define LcmData1   RJ5
#define LcmData2   RJ6
#define LcmData3   RJ7
#define LcmBackLightEn   RB4
#define LcmRs   RB1
#define LcmRw   RB2
#define LcmEn   RB3

Functions

void LcmInit (void)
INT8U LcmStateGet (void)
ERROR LcmUpdate (INT8U *pLcmData, INT8U DataType)
void LcmSvc (void)
void LcmCommandWrite (INT8U Command)
void LcmDramWrite (INT8U Data)

Variables

INT8U LcmClean [] = {0x01,0x00}
INT8U LcmInitialCommand0 [] = {0x33,0x32,0x08,0x01,0x06,0x0c,0x00}
INT8U Lcm1stLineStart [] = {0x80,0x00}
INT8U Lcm2ndLineStart [] = {0xc0,0x00}
INT8U LcmBuffer [17]
LCM_CONTROL LcmCtrl


Define Documentation

#define LcmBackLightEn   RB4

Definition at line 24 of file lcm.c.

#define LcmData0   RJ4

Definition at line 19 of file lcm.c.

#define LcmData1   RJ5

Definition at line 20 of file lcm.c.

#define LcmData2   RJ6

Definition at line 21 of file lcm.c.

#define LcmData3   RJ7

Definition at line 22 of file lcm.c.

#define LcmEn   RB3

Definition at line 27 of file lcm.c.

#define LcmHigh4bitSubstate   0

Definition at line 16 of file lcm.c.

#define LcmIdleState   0

Definition at line 13 of file lcm.c.

#define LcmLow4bitSubstate   1

Definition at line 17 of file lcm.c.

#define LcmRs   RB1

Definition at line 25 of file lcm.c.

#define LcmRw   RB2

Definition at line 26 of file lcm.c.

#define LcmUpdateState   1

Definition at line 14 of file lcm.c.


Function Documentation

void LcmCommandWrite ( INT8U  Command  ) 

Definition at line 137 of file lcm.c.

00137                                    {
00138     LcmRw=0;                // Read 1/ write 0
00139     LcmRw=0; 
00140     LcmRw=0; 
00141     LcmRs=0;                // Select command register 
00142     LcmRs=0;
00143     LcmRs=0;
00144     if(Command&0x01) LcmData0=1;
00145     else LcmData0=0;
00146     if(Command&0x02) LcmData1=1;
00147     else LcmData1=0;
00148     if(Command&0x04) LcmData2=1;
00149     else LcmData2=0;
00150     if(Command&0x08) LcmData3=1;
00151     else LcmData3=0;
00152     LcmEn=1;
00153     LcmEn=1;
00154     LcmEn=1;
00155     LcmEn=0;
00156     LcmEn=0;
00157     LcmEn=0;
00158 }

void LcmDramWrite ( INT8U  Data  ) 

Definition at line 160 of file lcm.c.

00160                              {
00161     LcmRw=0;                // Read 1/ write 0
00162     LcmRw=0; 
00163     LcmRw=0; 
00164     LcmRs=1;                // lcm dram
00165     LcmRs=1;
00166     LcmRs=1;
00167     if(Data&0x01) LcmData0=1;
00168     else LcmData0=0;
00169     if(Data&0x02) LcmData1=1;
00170     else LcmData1=0;
00171     if(Data&0x04) LcmData2=1;
00172     else LcmData2=0;
00173     if(Data&0x08) LcmData3=1;
00174     else LcmData3=0;
00175     LcmEn=1;
00176     LcmEn=1;
00177     LcmEn=1;
00178     LcmEn=0;
00179     LcmEn=0;
00180     LcmEn=0;
00181 }

void LcmInit ( void   ) 

Definition at line 42 of file lcm.c.

00042                   {
00043     TRISJ=0;
00044     TRISB=0;
00045 
00046     LcmData0=1;
00047     LcmData1=1;
00048     LcmData2=1;
00049     LcmData3=1;
00050     LcmBackLightEn=1;
00051     LcmRs=1;
00052     LcmRw=1;
00053     LcmEn=1;
00054 
00055     LcmCtrl.HasData=FALSE;
00056     LcmCtrl.Length=0;
00057     LcmCtrl.Timer=200;
00058     LcmCtrl.State=LcmIdleState;
00059     LcmCtrl.SubState=LcmHigh4bitSubstate;
00060 }

INT8U LcmStateGet ( void   ) 

Definition at line 66 of file lcm.c.

00066                        {
00067     return LcmCtrl.State;
00068 }

void LcmSvc ( void   ) 

Definition at line 106 of file lcm.c.

00106                  {
00107     if(LcmCtrl.HasData==FALSE) return; // prevent previous command not finished
00108     if(LcmCtrl.Timer!=0) return;       // prevent previous command not finished
00109     LcmCtrl.Timer=10;
00110     if(LcmCtrl.DataType==LCM_COMMAND){
00111         if(LcmCtrl.SubState==LcmHigh4bitSubstate){
00112             LcmCommandWrite((*LcmCtrl.pData&0xf0)>>4);
00113             LcmCtrl.SubState=LcmLow4bitSubstate;
00114         }
00115         else{
00116             LcmCommandWrite(*LcmCtrl.pData&0x0f);
00117             LcmCtrl.Length--;
00118             LcmCtrl.pData++;
00119             LcmCtrl.SubState=LcmHigh4bitSubstate;
00120         }
00121     }
00122     else{
00123         if(LcmCtrl.SubState==LcmHigh4bitSubstate){
00124             LcmDramWrite((*LcmCtrl.pData&0xf0)>>4);
00125             LcmCtrl.SubState=LcmLow4bitSubstate;
00126         }
00127         else{
00128             LcmDramWrite(*LcmCtrl.pData&0x0f);
00129             LcmCtrl.Length--;
00130             LcmCtrl.pData++;
00131             LcmCtrl.SubState=LcmHigh4bitSubstate;
00132         }
00133     }
00134     if(LcmCtrl.Length==0) LcmCtrl.HasData=FALSE; 
00135 }

ERROR LcmUpdate ( INT8U pLcmData,
INT8U  DataType 
)

Definition at line 74 of file lcm.c.

00074                                                {
00075     INT8U Length;
00076     const INT8U *pData;     
00077 
00078     if(LcmCtrl.State!=LcmIdleState){
00079          DebugStringPrint("\r\n Lcm0 error");
00080          return IS_ERROR;
00081     }
00082     pData=pLcmData;
00083     for(Length=0;Length<50;){
00084         if(*pData!=0){
00085             Length++;
00086             pData++;
00087         }
00088         else break;
00089     }
00090     if(Length>=50){ // length too long
00091          DebugStringPrint("\r\n Lcm1 error");
00092          return IS_ERROR;
00093     } 
00094     LcmCtrl.DataType=DataType;
00095     LcmCtrl.Length=Length;
00096     LcmCtrl.pData=pLcmData;    
00097     LcmCtrl.SubState=LcmHigh4bitSubstate;
00098     LcmCtrl.State=LcmUpdateState;
00099     TMR1ON=0;                // stop timer 1
00100     LcmCtrl.HasData=TRUE;
00101     TMR1ON=1;                // start timer 1
00102     while(LcmStateGet()!=0) LcmSvc();
00103     return NO_ERROR;
00104 }


Variable Documentation

INT8U Lcm1stLineStart[] = {0x80,0x00}

Definition at line 32 of file lcm.c.

INT8U Lcm2ndLineStart[] = {0xc0,0x00}

Definition at line 33 of file lcm.c.

Definition at line 35 of file lcm.c.

INT8U LcmClean[] = {0x01,0x00}

Definition at line 30 of file lcm.c.

Definition at line 36 of file lcm.c.

INT8U LcmInitialCommand0[] = {0x33,0x32,0x08,0x01,0x06,0x0c,0x00}

Definition at line 31 of file lcm.c.


Generated on Tue Jul 7 20:39:55 2009 for A SIMPLE APPLICATION FOR PIC18F87J10 by  doxygen 1.5.9