ra8803.c
来自「带中文字库的液晶驱动芯片RA8803驱动程序。一般用于大尺寸液晶模块,例程是32」· C语言 代码 · 共 137 行
C
137 行
#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]);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?