//12864工作于串行方式下,这样只用三个端口就可以实现对液晶的控制#includereg52.hsbitcs=P1^7;//片选端口定义sbitsid=P1^6;//写数据线的定义sbitsclk=P2^3;//时钟线定义unsignedchart0,m=1,t;//变量定义/**************************延时函数***********************************/voiddelay(unsignedinti)//延时程序,美执行一次所用时间为10US{while(i--);}/***********************写串行数据*************************************/voidsendbyte(unsignedcharbyte){unsignedchari;cs=1;//片选置一,对可以向液晶写数据for(i=0;i8;i++)//将一个字节拆分为八次{sclk=0;//时钟线置零sid=(bit)(byte&0x80);//计算出数据的最高位,其他的置零sclk=1;//时钟线置一,数据写入byte=1;//数据左移以为}sclk=0;delay(200);//延时,12864中不读忙的时候必须用延时}/***********************向12864写数据函数********************************/voidwrite_data(unsignedchardat)//写命令rs=1;rw=0;写数据rs=0;{cs=1;//片选置一,可以写数据sendbyte(0xfa);//写数据前五位为11111,然后是rw,rs,然后是0,一共八位,写0xfa时,为写数据sendbyte(dat&0xf0);//写入数据高四位sendbyte(0xf0&(dat4));//写入数据低四位cs=0;//}/***********************向12864写命令函数*************************************/voidwrite_com(unsignedcharcom){cs=1;//片选置一,可以写数据sendbyte(0xf8);//写数据前五位为11111,然后是rw,rs,然后是0,一共八位,写0xf8时,为写命令sendbyte(com&0xf0);//写入命令高四位sendbyte(0xf0&(com4));//写入命令低四位cs=0;}/*******************************初始化函数*************************************/voidinit(){write_com(0x01);//清平write_com(0x0f);//设置开显示,光标TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;//定时器TR0=1;EA=1;ET0=1;}/***********************向12864写汉字程序*************************************/voidprintf(unsignedchar*s)//定义一指针函数{while(*s!='\0')//当汉字数据到末尾时会有结束标志‘\0’,,未结束时一直循环{write_data(*s);//写汉字的数据s++;//指针加一}}/***********************中断函数*************************************/voidtim()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;t0++;if(t0==20){t0=0;m++;if(m%5==0){write_com(0x01);}if(m==20){m=1;}}}/***********************主函数*************************************/voidmain(){init();while(1){switch(m){case1:write_com(0x80);printf(窗前明月光);break;case2:write_com(0x90);printf(疑是地上霜);break;case3:write_com(0x88);printf(举头望明月);break;case4:write_com(0x98);printf(低头思故乡);break;case6:write_com(0x80);printf(河北软件学院);break;case7:write_com(0x90);printf(五号楼);break;case8:write_com(0x88);printf(我的名字梁鹏飞);break;case9:write_com(0x98);printf(好好珍惜我的生活);break;case11:write_com(0x80);printf(相信我们都会有个);break;case12:write_com(0x90);printf(很好的未来);break;case13:write_com(0x88);printf(我们都应该好好的);break;case14:write_com(0x98);printf(快乐你懂的);break;case16:write_com(0x80);printf(他妈的看的头疼);break;case17:write_com(0x90);printf(哎~~~~~~~~~);break;case18:write_com(0x88);printf(还是好好睡觉吧);break;case19:write_com(0x98);printf(晚安喽哈哈~~);break;}}}