51单片机和12864液晶显示实例——C语言

  • 格式:doc
  • 大小:28.00 KB
  • 文档页数:3

#include

#define unchar unsigned char

#define unint unsigned int

sbit RS=P2^7;

sbit RW=P2^6;

sbit E=P2^5;

void delay(unsigned int t)

{

unsigned int i,j;

for(i=0;i

for(j=0;j<10;j++);

}

void busy()

{

RS=0;

RW=1;

E=1;

P0=0xff;

while((P0&0X80)==0x80);

}

void write_com(unchar com)

{

busy();

RS=0;

RW=0;

E=1;

P0=com;

delay(5);

E=0;

delay(5);

}

void write_date(unchar date)

{

busy();

RS=1;

RW=0;

E=1;

P0=date;

// delay(5);

E=0;

// delay(5);

}

void init()

{

delay(2000);

write_com(0x30); //选择基本指令,选择8位数据流

delay(5);

write_com(0x0c); //开显示(无游标,不反白)

delay(10);

write_com(0x01); //清除显示,并且设定地址指针为00H

delay(500);

write_com(0x06);// 设定游标移动方向

}

void sendaddr(unchar n,unchar m)

{

switch(n)

{

case 1:write_com(0x80+m);break;

case 2:write_com(0x90+m);break;

case 3:write_com(0x88+m);break;

case 4:write_com(0x98+m);break;

}

}

void display(unchar n,unchar m,unchar *s)

{

sendaddr(n,m);

while(*s>0)

{

write_date(*s);

s++;

delay(100);

}

}

void main()

{

unchar *s;

init();

s="甲:“我来了”";

display(1,0,s);

s="乙:“热烈欢迎。";

delay(10000);

display(2,0,s);

s="。。。热烈欢迎”";

delay(10000);

display(3,0,s);

s="麻烦跟我去派出所";

delay(10000);

display(4,0,s);

delay(10000);

write_com(0x01) ;

s="乙“为什么?”" ;

delay(10000);

display(1,0,s);

s="我们发现你偷税漏税。。。";

delay(10000);

display(2,0,s);

delay(10000);

write_com(0x01) ;

write_com(0x80);

write_date(0x32);

while(1);

}