www.pudn.com > Ra8803.rar > Ra8803.c


#include "msp430x14x.h" 
#include "Lcd.h" 
 
////////////////////////////////////////////////////////////////////// 
void SendCommandToLcm(BYTE command) 
{ 
    RS_0; 
    LCM_BUS=command; 
    CS_0; 
    WR_0; 
    WR_0; 
    WR_1; 
    CS_1; 
} 
 
void SendDataToLcm(BYTE data) 
{ 
    RS_1; 
    LCM_BUS=data; 
    CS_0; 
    WR_0; 
    WR_0; 
    WR_1; 
    CS_1; 
} 
 
BYTE ReadDataFromLcm(void) 
{ 
    BYTE data; 
 
    RS_1; 
    CS_0; 
    READ_LCM; 
    RD_0; 
    RD_0; 
    data=LCM_Read_BUS; 
    RD_1; 
    CS_1; 
    WRITE_LCM; 
    return data; 
} 
 
////////////////////////////////////////////////////////////////////// 
void InitializeLcm(void) 
{ 
    BYTE data; 
 
    P1OUT&=0xbf;						//Reset LCM 
    for(data=0;data<10;data++) 
    { 
        Delay(50000); 
    } 
    P1OUT|=0x40; 
    for(data=0;data<10;data++) 
    { 
        Delay(10000); 
    } 
 
    SendCommandToLcm(0x00);SendCommandToLcm(0xCD);Delay(500); // Whole Chip LCD Controller Reg(Char Mode) 
    SendCommandToLcm(0x10);SendCommandToLcm(0x29);Delay(500); // Whole Chip Cursor Control Reg(disable cursor) 
    SendCommandToLcm(0x11);SendCommandToLcm(0xF0);Delay(500); // Distance of Words or Lines Reg(cursor=16,gap=0) 
    SendCommandToLcm(0x90);SendCommandToLcm(0x04);Delay(500); // Shift Clock Control Reg(320x240, 61Hz) 
    SendCommandToLcm(0xF0);SendCommandToLcm(0xA0);Delay(500); // Font Control Reg 
    SendCommandToLcm(0xF1);SendCommandToLcm(0x0F);Delay(500); // Font size Reg 
    SendCommandToLcm(0x20);SendCommandToLcm(0x27);Delay(500); // Active Window Right  Reg 
    SendCommandToLcm(0x30);SendCommandToLcm(0xEF);Delay(500); // Active Window Bottom Reg(240 duty) 
    SendCommandToLcm(0x40);SendCommandToLcm(0x00);Delay(500); // Active Window Left   Reg 
    SendCommandToLcm(0x50);SendCommandToLcm(0x00);Delay(500); // Active Window Top    Reg 
    SendCommandToLcm(0x21);SendCommandToLcm(0x27);Delay(500); // Display Window Right  Reg 
    SendCommandToLcm(0x31);SendCommandToLcm(0xEF);Delay(500); // Display Window Bottom Reg(240 duty) 
    SendCommandToLcm(0x41);SendCommandToLcm(0x00);Delay(500); // Display Window Left   Reg 
    SendCommandToLcm(0x51);SendCommandToLcm(0x00);Delay(500); // Display Window Top    Reg 
    SendCommandToLcm(0x80);SendCommandToLcm(0x20);Delay(500); //  
    SendCommandToLcm(0x81);SendCommandToLcm(0x40);Delay(500); // by default	 
    data=Mmi.Constrast; 
    if(data>9)data=5; 
    SendCommandToLcm(0xD0);SendCommandToLcm(2*data);Delay(500); // enable the contrast control, set to 32	 
 
    ClearGraphicScreen(); 
} 
 
void WriteTextScreen(BYTE *string,BYTE xadd,BYTE yadd,BYTE attribute) 
{ 
    BYTE i=0,data; 
 
    SendCommandToLcm(0x60);SendCommandToLcm(xadd);  // set cursor X 
    SendCommandToLcm(0x70);SendCommandToLcm(yadd);  // set cursor Y 
    SendCommandToLcm(0x00);SendCommandToLcm(0xCD);  // normal power mode, txt mode 
                                                    // display on, normal display 
    if(attribute==1) 
    { 
        SendCommandToLcm(0x10); 
        SendCommandToLcm(0x09); 
    } 
 
    data=*string; 
    do 
    { 
        SendDataToLcm(data); 
        data=*(string+(++i)); 
        Delay(30); 
    }while(data!=0); 
 
    SendCommandToLcm(0x10); 
    SendCommandToLcm(0x29); 
} 
 
void ClearTextScreen(void) 
{ 
} 
 
void ClearGraphicScreen(void) 
{ 
    UWORD i; 
 
    SendCommandToLcm(0x60);SendCommandToLcm(0x00);  // set cursor X location to 0 
    SendCommandToLcm(0x70);SendCommandToLcm(0x00);  // set cursor Y location to 0 
    SendCommandToLcm(0x00);SendCommandToLcm(0xC5);  // normal power mode, Graphical mode 
                                                                // display on, normal display 
    for(i=0;i<9600;i++)SendDataToLcm(0x00); 
} 
 
void DisplayArrow(BYTE xadd,BYTE yadd) 
{ 
    BYTE i; 
 
    SendCommandToLcm(0x00);SendCommandToLcm(0xC5);          // normal power mode, Graphical mode 
                                                            // display on, normal display 
    for(i=0;i<16;i++) 
    { 
        SendCommandToLcm(0x60);SendCommandToLcm(xadd);      // set cursor X location 
        SendCommandToLcm(0x70);SendCommandToLcm(yadd+i);    // set cursor Y location 
        SendDataToLcm(GraphicArrow[2*i]); 
        SendDataToLcm(GraphicArrow[2*i+1]); 
    } 
}