lcd12864的驱动和显示
- 格式:doc
- 大小:34.00 KB
- 文档页数:4
#include
#include
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit RS =P2^4;
sbit WRD=P2^5;
sbit E= P2^6;
sbit PSB=P2^1;
sbit RES=P2^3;
void TransferData(char data1,bit DI);
void display(void);
void display_grapic(void);
void delayms(unsigned int n);
void DisplayLine(unsigned char line1,unsigned char line2); void DisplayGraphic(unsigned char code *adder);
void delay(unsigned int m);
void lcd_mesg();
void ConfigUART(unsigned int baud) ;
void initinal(void)
{
delay(40);
PSB=1;
delay(1);
RES=0;
delay(1);
RES=1;
delay(10);
TransferData(0x30,0);
delay(100);
TransferData(0x30,0);
delay(37);
TransferData(0x08,0);
delay(100);
TransferData(0x10,0);
delay(100);
TransferData(0x0C,0);
delay(100);
TransferData(0x01,0);
delay(10);
TransferData(0x06,0);
delay(100);
}
void main(void)
{
while(1)
{
initinal();
ConfigUART(600);
lcd_mesg();
delayms(240);
delayms(240);
}
}
void lcd_mesg( )
{
uchar aa;
int b=0;
while( 1 )
{
if(b<8)
{ TransferData(0x80+b,0);
while(!RI);
{RI=0;
aa=SBUF;
TransferData(aa,1);
}while(!RI);
{RI=0;
aa=SBUF;
TransferData(aa,1);
}
b++;}
if(b>=8&&b<16)
{ TransferData(0x90+b-8,0); while(!RI);
{RI=0;
aa=SBUF;
TransferData(aa,1);
}while(!RI);
{RI=0;
aa=SBUF;
TransferData(aa,1);
}
b++;}
if(b>=16&&b<24)
{ TransferData(0x80+b-8,0); while(!RI);
{RI=0;
aa=SBUF;
TransferData(aa,1);
}while(!RI);
{RI=0;
aa=SBUF;
TransferData(aa,1);
}
b++;}
if(b>=24&&b<32)
{ TransferData(0x90+b-16,0); while(!RI);
{RI=0;
aa=SBUF;
TransferData(aa,1);
}while(!RI);
{RI=0;
aa=SBUF;
TransferData(aa,1);
}
b++;}}
}
void ConfigUART(unsigned int baud)
{SCON=0X50;
TMOD&=0X0F;
TMOD|=0X20;
TH1=256-(12000000/12/32)/baud;
TL1=TH1;
ET1=0;
TR1=1;}
void TransferData(char data1,bit DI)
{
WRD=0;
RS=DI;
delay(1);
P0=data1;
E=1;
delay(1);
E=0;
}
void delayms(unsigned int n)
{
unsigned int i,j;
for(i=0;i for(j=0;j<2000;j++); } void delay(unsigned int m) { unsigned int i,j; for(i=0;i for(j=0;j<10;j++); }