мк SiLabs c8051F120
LCD t6963c
CODE
#include "c8051F120.h"
#define DATA P4
#define BUSY P4&0x03
sbit WR=P2^0;
sbit RD=P2^1;
sbit CE=P2^2;
sbit CD=P2^3;
sbit RST=P2^4;
sbit FS=P2^5;
sbit RV=P2^6;
void GetStatusLCD(void);
void LcdInit (void);
void Send8LCD(unsigned char cmd, unsigned char bt);
void LcdInit(void);
void delay(unsigned int i);
int a;
void main (void)
{ WDTCN = 0xDE;
WDTCN = 0xAD;
SFRPAGE = CONFIG_PAGE;
P2MDOUT = 0xFF;
P4MDOUT = 0xFF;
XBR2 = 0x40;
LcdInit();
while (1) {};
}
void GetStatusLCD(void)
{
RD=0;
WR=1;
CE=0;
CD=1;
for (a=0;a<2;a++);
while(BUSY != 0x03);
CE = 1;
CD = 1;
WR = 1;
RD = 1;
delay(50);
}
void delay(unsigned int i)
{
while ( i--!=0);
}
void Send8LCD(unsigned char cmd, unsigned char bt)
{
char i;
if (cmd)
CD=1;
else
CD=0;
for (i=0;i<2;i++);
CE=0;
WR=0;
DATA=bt;
for (i=0;i<2;i++);
CE=1;
WR=1;
CD=1;
}
void LcdInit()
{
delay(1000);
RST=0;
GetStatusLCD();
RST=1;
Send8LCD(1,0x80);
GetStatusLCD();
Send8LCD(0,0x00);//graphic home
GetStatusLCD();
Send8LCD(0,0x00);
GetStatusLCD();
Send8LCD(1,0x42);
GetStatusLCD();
Send8LCD(0,0x28);//graphic ar
GetStatusLCD();
Send8LCD(0,0x00);
GetStatusLCD();
Send8LCD(1,0x43);
GetStatusLCD();
Send8LCD(0,0x00);//text home
GetStatusLCD();
Send8LCD(0,0x17);
GetStatusLCD();
Send8LCD(1,0x40);
GetStatusLCD();
Send8LCD(0,0x28);//text ar
GetStatusLCD();
Send8LCD(0,0x00);
GetStatusLCD();
Send8LCD(1,0x41);
GetStatusLCD();
Send8LCD(0,0x17);
GetStatusLCD();
Send8LCD(0,0x00);
GetStatusLCD();
Send8LCD(1,0x24);
GetStatusLCD();
Send8LCD(0,0x24);
GetStatusLCD();
Send8LCD(1,0xc0);
GetStatusLCD();
Send8LCD(0,0x25);
GetStatusLCD();
Send8LCD(1,0xc0);
GetStatusLCD();
Send8LCD(0,0x2e);
GetStatusLCD();
Send8LCD(1,0xc0);
GetStatusLCD();
Send8LCD(1,0x9c);
}
#define DATA P4
#define BUSY P4&0x03
sbit WR=P2^0;
sbit RD=P2^1;
sbit CE=P2^2;
sbit CD=P2^3;
sbit RST=P2^4;
sbit FS=P2^5;
sbit RV=P2^6;
void GetStatusLCD(void);
void LcdInit (void);
void Send8LCD(unsigned char cmd, unsigned char bt);
void LcdInit(void);
void delay(unsigned int i);
int a;
void main (void)
{ WDTCN = 0xDE;
WDTCN = 0xAD;
SFRPAGE = CONFIG_PAGE;
P2MDOUT = 0xFF;
P4MDOUT = 0xFF;
XBR2 = 0x40;
LcdInit();
while (1) {};
}
void GetStatusLCD(void)
{
RD=0;
WR=1;
CE=0;
CD=1;
for (a=0;a<2;a++);
while(BUSY != 0x03);
CE = 1;
CD = 1;
WR = 1;
RD = 1;
delay(50);
}
void delay(unsigned int i)
{
while ( i--!=0);
}
void Send8LCD(unsigned char cmd, unsigned char bt)
{
char i;
if (cmd)
CD=1;
else
CD=0;
for (i=0;i<2;i++);
CE=0;
WR=0;
DATA=bt;
for (i=0;i<2;i++);
CE=1;
WR=1;
CD=1;
}
void LcdInit()
{
delay(1000);
RST=0;
GetStatusLCD();
RST=1;
Send8LCD(1,0x80);
GetStatusLCD();
Send8LCD(0,0x00);//graphic home
GetStatusLCD();
Send8LCD(0,0x00);
GetStatusLCD();
Send8LCD(1,0x42);
GetStatusLCD();
Send8LCD(0,0x28);//graphic ar
GetStatusLCD();
Send8LCD(0,0x00);
GetStatusLCD();
Send8LCD(1,0x43);
GetStatusLCD();
Send8LCD(0,0x00);//text home
GetStatusLCD();
Send8LCD(0,0x17);
GetStatusLCD();
Send8LCD(1,0x40);
GetStatusLCD();
Send8LCD(0,0x28);//text ar
GetStatusLCD();
Send8LCD(0,0x00);
GetStatusLCD();
Send8LCD(1,0x41);
GetStatusLCD();
Send8LCD(0,0x17);
GetStatusLCD();
Send8LCD(0,0x00);
GetStatusLCD();
Send8LCD(1,0x24);
GetStatusLCD();
Send8LCD(0,0x24);
GetStatusLCD();
Send8LCD(1,0xc0);
GetStatusLCD();
Send8LCD(0,0x25);
GetStatusLCD();
Send8LCD(1,0xc0);
GetStatusLCD();
Send8LCD(0,0x2e);
GetStatusLCD();
Send8LCD(1,0xc0);
GetStatusLCD();
Send8LCD(1,0x9c);
}