#include <reg52.h>
#define DATA_PORT P0//êy¾Y¿ú
sbit LCD12864_RS = P2^6;
sbit LCD12864_RW = P2^5;
sbit LCD12864_EN = P2^7;
sbit LCD12864_PSB = P3^2;//1Îa′®DD0λ2¢DD
sbit LCD12864_RST = P3^4;//¸′λ
//Ñó3ùoˉêy
void delay(unsigned int xms) //1ms
{
unsigned char i,j;
for(j = 0; j < xms; j++)
{
for(i = 0;i < 110;i++);
}
}
//Ã|¼ì2é
//bit LcdBusyCheck()
//{
// bit result;
// LCD12864_RS = 0;
// LCD12864_RW = 1;
// LCD12864_EN = 1;
// result = (bit)(DATA_PORT&0x80);//=1.ËμÃ÷Ã|
// LCD12864_EN = 0;
// return result;
//}
//D′Ãüáî
void WriteCmdToLCD(unsigned char cmd)
{
// while(LcdBusyCheck());
delay(10);
LCD12864_RS = 0;
LCD12864_RW = 0;
LCD12864_EN = 1;
DATA_PORT = cmd;
delay(5);
LCD12864_EN = 0;
delay(5);
LCD12864_EN = 1;
}
//D′êy¾Y
void WriteDatToLcd(unsigned char dat)
{
//while(LcdBusyCheck());
delay(10);
LCD12864_RS = 1;
LCD12864_RW = 0;
LCD12864_EN = 1;
DATA_PORT = dat;
delay(5);
LCD12864_EN = 0;
delay(5);
LCD12864_EN = 1;
}
//′«êäêy¾Y
void WriteStrToLcd(unsigned char *str)
{
while(*str != '\0')
{
WriteDatToLcd(*str++);//′«Ëíêy¾Y
delay(5);
}
}
//éèÖÃ×ø±ê
void LcdPos(unsigned char x,unsigned char y)
{
unsigned char pos;
if(x == 1)//μúò»DD
{
x = 0x80;
}
else if(x == 2)//μú¶tDD
{
x = 0x90;
}
else if(x == 3)//μúèyDD
{
x = 0x88;
}
else if(x == 4)//μúËÄDD
{
x = 0x98;
}
pos = x + y ;
WriteCmdToLCD(pos);//′«êäÃüáî
}
//LCD128643õê¼»ˉ
void LcdInit()
{
LCD12864_PSB = 1;//2¢DD
LCD12864_RST = 0;//¸′λ
delay(10);
LCD12864_RST = 1;//2»¸′λ
WriteCmdToLCD(0x30);//oo×Öģ꽣¨±ê׼ģ꽣©
delay(5);
// WriteCmdToLCD(0x30);
// delay(5);
WriteCmdToLCD(0x18);//
delay(5);
WriteCmdToLCD(0x10);//
delay(5);
WriteCmdToLCD(0x01);//
delay(5);
WriteCmdToLCD(0x06);//
delay(5);
WriteCmdToLCD(0x0c);//
delay(5);
}
int main()
{
//P0 = 0xff;//3õê¼»ˉ
//P1 = 0xff;
LcdInit();
while(1)
{
LcdPos(1,0);//μúò»DDÏÔê¾
WriteStrToLcd(" ÎòÖÕóú3é1|áË ");//
delay(5);
LcdPos(2,0);
WriteStrToLcd("Îaé¶ÏÔê¾2»áË");
delay(5);
LcdPos(3,0);
WriteStrToLcd("12864 3é1|£¬1t1t");
delay(5);
LcdPos(4,0);
WriteStrToLcd("¼á3Ö¾íêÇê¤àû!!!");
delay(5);
}
}
这是程序 |