C51驱动QC12864b展示汉字

C51驱动QC12864b显示汉字
我最近刚刚学单片机,找人借了快QC12864b想显示汉字,但折腾了一天多还没弄出来,我查了资料,这个是带字库的,但不晓得怎样弄,使用说明也有,试了半天没反应,希望哪位高手教一下显示汉字的步骤,感谢了。
------最佳解决方案--------------------
#include<reg52.h>
#define uchar unsigned char
sfr WDT_CONTR=0x0C1;
/***********************端口定义*************************/
#define DAT P1
sbit RS=P3^5;
sbit RW=P3^4;
sbit E=P3^3;

int inBUF=0;  //接收标志,用以显示工作状态
int newBUF=0; //初始化为1,用于显示开机
int newflag=1;  //用于检测开机时发出的第一个字符,延时用

/***********************函数声明*************************/
void busy();
void write(bit,uchar);
void INIT_LCD();
void display(bit ,uchar *dat);  //参考帮助文档 c235 error 
void displayzt(uchar *dat);

/*UART接收,使用中断方式*/
void inteReceive (void) interrupt 4 using 1
{
if(RI == 1)
{
RI = 0;
inBUF=SBUF;
newBUF=1;
}
}
//单字符发送
void sendChar(unsigned char ch)
{
SBUF = ch;
while(TI == 0);
TI = 0;
}

/*22.1184MHZ下精确延时1ms*/
void delayms(unsigned int n) 
{
 unsigned int i,j;
 for(i=0;i<n;i++)
  for(j=0;j<2000;j++)
{
WDT_CONTR=0x3F;
}
}

/*void delay10us(unsigned int n) 
{
 unsigned int i,j;
 for(i=0;i<n;i++)
  for(j=0;j<11;j++)
{
}
}
 */
/***********************主函数****************************/
void main()
{
int timeus=0;   //计时标志
int times=0;    //
WDT_CONTR=0x3F;

SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr
TMOD = 0x20; //TMOD: timer 1, mode 2, 8-bit reload
// PCON = 0x00; //SMOD=0;
TH1 = 0xfd; //Baud:19200 fosc=22.1184MHz
IE = 0x90; //interrupt enable
TR1 = 1; //Run

INIT_LCD();
display(0,"XXXXXXXX");
display(1,"XXXX:XX..");  

while(inBUF!=170);
{
  WDT_CONTR=0x3F;  //清看门狗
}

while(1)
{
  WDT_CONTR=0x3F;  //清看门狗

///////////////用于计时/////////////////////////
  timeus++;
  if(timeus>2001)
  {
   times++;
timeus=0;
if(times>10000)  //计时约30秒,显示异常
   {
newBUF=1;
inBUF=85;
times=0;
   }
  }
 ///////////////用于计时///////////////////////// 


  if(newBUF)
  {
     if(newflag)
  {
   delayms(8000);
newflag=0;
  }
  switch(inBUF)
  {
  
case 102:  //0x66
   displayzt("缺纸..");
delayms(10000);
newBUF=0;
times=0;
break;
case 119:  //0x77
   displayzt("卡纸..");
delayms(10000);
newBUF=0;
times=0;
break;
case 136:  //0x88
   displayzt("缺墨..");
delayms(10000);
newBUF=0;
times=0;
break;
case 153:  //0x99
   displayzt("打印错");