12864液晶循环显示三屏汉字

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

 

#define lcd_data P0

uchar code table1[]="钟山风雨起苍黄毛""百万雄师过大江泽""亦将剩勇追穷寇东""不可沽名学霸王七";

uchar code table2[]="学习技术天天向上""努力学习才有提高""总结经验不断前进""电子设计一路领先";

uchar code table3[]="爱一个人难却还爱""交结朋友可路更宽""诚实守信加油努力""成功做人成功做事";

 

sbit lcden=P2^7;

sbit rd=P2^6;

sbit wr=P2^5;

sbit psb=P3^2;                         //并/串方式选择

 

 

void delay(uint z)       //延迟函数

{

     uint x,y;

     for(x=z;x>0;x--)

     for(y=110;y>0;y--)

     ;

}

 

 

void write_com(uchar com)     //写指令

{

     rd=0;

     wr=0;

     lcden=0;

     P0=com;

     delay(5);        //这个延迟函数必须要有,因为读数据时当E为高时,数据必须保持稳定

     lcden=1;

     lcden=0;

}

 

 

void write_date(uchar date)      //写数据

{

     rd=1;

     wr=0;

     lcden=0;

     P0=date;

     delay(5);        //这个延迟必须要有

     lcden=1;

     lcden=0;;

}

 

 

void write_word(uchar *add)   //用指针

{

     uchar i;

     write_com(0x80);           //从第一行开始显示

     for(i=0;i<64;i++)        //一个汉字占两个字节

     {

         write_date(*add);

         add++;            //指针加,指向下一个字节

 

     }

 

}

 

 

void init()           //初始化

{

     psb=1;            //设置并口方式

     write_com(0x 0c);  //显示状态 整体显示开

     write_com(0x01);  //游标左移

     write_com(0x30);  //功能设定基本指令操作

     write_com(0x10);  //游标左移

}

 

 

void main()

{

     init();

     while(1)

     {

 

     write_word(table1);

     delay(3000);          //每一屏显示秒钟

 

 

     write_word(table2);

     delay(3000);

 

 

     write_word(table3);

     delay(3000);

 

     }

}

 

posted on 2013-03-15 15:38  AI_JJ  阅读(282)  评论(0)    收藏  举报

导航