基于89C51的T6963液晶驱动程序(通过验证的)

发布者:心灵捕手最新更新时间:2018-01-24 来源: eefocus关键字:89C51  T6963  液晶驱动 手机看文章 扫描二维码
随时随地手机看文章

//file://汉字液晶子程 液晶屏分为4行*12列汉字,全部使用模拟接口方式。
//   TGLCMLIMIT64A接口程序(模拟方式)
/***************************************************************************
;连线图:
;*LCM---89C52*  *LCM---89C52*   *LCM-------89C52*     *LCM----------89C52* *

;*DB0---P0.0*   *DB4---P0.4*    *D/I-------P2.6*      *CS1----------P2.4*  *
;*DB1---P0.1*   *DB5---P0.5*    *R/W-------P2.7*      *CS2----------P2.5*  *
;*DB2---P0.2*   *DB6---P0.6*    *RST--------VCC*      *CS3----------P3.2*  * 
;*DB3---P0.3*   *DB7---P0.7*    *E---------P2.3*                           *
;注:89C52的晶振频率为12MHz                                                 *
***************************************************************************/
//file://画线部分请参照avr的c程序。
/*#pragma SRC   /*生成ASM文件开关,必要时打开 */
#include
#include
#include
#define Uchar unsigned char
/***********液晶显示器接口引脚定义***************/
sbit Elcm= P2^3;  //
sbit CS1LCM= P2^4;  //
sbit CS2LCM= P2^5;  //
sbit CS3LCM= P3^2;  /*这个连接只是做实验的临时接法。*/
sbit DILcm= P2^6;  //
sbit Rwlcm= P2^7;  //
sfr Datalcm= 0x80; // file://数据口
unsigned char testi[]={"浸渠叁绳漱塔烃威牺晓玄瑶"};
/***********常用操作命令和参数定义***************/
#define  DISPON  0x3f /*显示on  */
#define  DISPOFF 0x3e /*显示off  */
#define  DISPFIRST 0xc0 /*显示起始行定义 */
#define  SETX  0x40 /*X定位设定指令(页) */
#define  SETY  0xb8 /*Y定位设定指令(列) */
#define  LCDbusy 0x80 /*LCM忙判断位  */
/**************显示分区边界位置*****************/
#define  MODL  0x00 /*左区   */
#define  MODM  0x40 /*左区和中区分界 */
#define  MODR  0x80 /*中区和右区分界 */
#define LCMLIMIT 0xC0 /*显示区的右边界 */
/****************全局变量定义*******************/
Uchar col,row,cbyte;  /*列x,行(页)y,输出数据 */
bit xy;    /*画线方向标志:1水平 */
/*****************函数列表**********************/
void Lcminit(void);   /*液晶模块初始化 */
void Delay(Uchar);    /*延时,入口数为Ms */
void lcdbusyL(void);  /*busy判断、等待(左区) */
void lcdbusyM(void);  /*busy判断、等待(中区) */
void lcdbusyR(void);  /*busy判断、等待(右区) */
void Putedot(Uchar);  /*半角字符输出  */
void Putcdot(Uchar);  /*全角(汉字)输出 */
void Wrdata(Uchar);   /*数据输出给LCM  */
void Lcmcls( void );  /*LCM全屏幕清零(填充0) */
void wtcom(void);     /*公用busy等待  */
void LOCatexy(void);  /*光标定位  */
void WrcmdL(Uchar);   /*左区命令输出  */
void WrcmdM(Uchar);   /*中区命令输出  */
void WrcmdR(Uchar);   /*右区命令输出  */
void Putstr(Uchar *puts,Uchar i); /*中英文字符串输出 */
void Rollscreen(Uchar x); /*屏幕向上滚动演示 */
void Rddata(void);  /*  从液晶片上读数据 */
void Linehv(Uchar length); /*横(竖)方向画线 */
void point(void);  /*打点   */
void Linexy(Uchar endx,Uchar endy);
/******************数组列表*********************/
Uchar code Ezk[];  /*ASCII常规字符点阵码表 */
Uchar code Hzk[];  /*自用汉字点阵码表 */
Uchar code STR1[];  /*自定义字符串  */
Uchar code STR2[];  //
Uchar code STR3[];  //
Uchar code STR4[];  //


/********************************/
/* 演示主程序   */
/********************************/
void main(void)
{
 Uchar x,y;
 col=0;
 row=0;
 Delay(40);  /*延时大约40Ms,等待外设准备好 */
 Lcminit();  /*液晶模块初始化,包括全屏幕清屏*/
 Putstr(STR2,24); /*第一行字符输出,24字节 */
 col=0;
 row=2;
 Putstr(STR1,12); /*第二行字符输出,12字节 */
 col=0;
 row=4;
 Putstr(STR3,24); /*第三行字符输出,24字节 */
 col=0;
 row=6;
 Putstr(STR4,24); /*第四行字符输出,12字节 */
 x=0;
 col=0;
 row=0;
 xy = 1;   /*方向标志。定为水平方向 */
 Linehv(192);  /*画一条横线(0,0)-(191,0) */
 col=0;
 row=15;
 xy = 1;
 Linehv(192);  /*画一条横线(0,15)-(191,15) */
 col=0;
 row=32;
 xy = 1;
 Linehv(192);  /*画一条横线(0,32)-(191,32) */
 col=0;
 row=1;
 xy = 0;   /*方向标志。定为垂直方向 */
 Linehv(31);  /*画一条竖线(0,1)-(0,31) */
 col=191;
 row=1;
 xy = 0;
 Linehv(31);  /*画一条竖线(191,1)-(191,31) */
 col=0;   /*设定斜线的起点坐标  */
 row=63;
 Linexy(44,31);  /*画一段斜线(0,63)-(44,31) */
 col=44;
 row=31;
 Linexy(190,62);  /*继续画斜线(44,31)-(191,63) */
 while(1){
  Rollscreen(y); /*定位新的显示起*/
  y++;
  y %=8;
  x=testi[y];
  Delay(100); /*延时,控制滚动速度 */
  };
}

/************************************************/
/*画线。任意方向的斜线,不支持垂直的或水平线 */
/************************************************/
void Linexy(Uchar endx,Uchar endy)
{
 register Uchar t;
 int xerr=0,yerr=0,delta_x,delta_y,distance;
 Uchar incx,incy;
/*  compute the distance in both directions */
 delta_x=endx-col;
 delta_y=endy-row;
/* compute  the direction of the increment ,
 an increment of "0" means either a vertICal or horizontal lines */
 if(delta_x>0) incx=1;
 else if( delta_x==0 ) incx=0;
  else incx=-1;

 if(delta_y>0) incy=1;
 else if( delta_y==0 ) incy=0;
  else incy=-1;
/*  determine which distance is greater */
delta_x = cabs( delta_x );
 delta_y = cabs( delta_y );
 if( delta_x > delta_y ) distance=delta_x;
 else distance=delta_y;
/* draw the line */
 for( t=0;t <= distance+1; t++ ) {
  point();
     xerr += delta_x ;
  yerr += delta_y ;
  if( xerr > distance ) {
   xerr-=distance;
       col+=incx;
  }
  if( yerr > distance ) {
   yerr-=distance;
       row+=incy;
  }
 }
}
/****************************************/
/*画线。只提供X或Y方向的,不支持斜线 */
/****************************************/
void Linehv(Uchar length)
 {
  Uchar xs,ys;
  if (xy){ys = col;
   for (xs=0;xs     col = ys + xs;
     point();}
    }
  else {xs = row;
   for (ys=0;ys     row = xs + ys;
     point();}
    }
}
/****************************************/
/* 画点    */
/****************************************/
void point(void)
 {
  Uchar x1,y1,x,y;
  x1=col;
  y1=row;
  row=y1>>3;  /*取Y方向分页地址 */
  Rddata();
  y=y1&0x07;  /*字节内位置计算 */
  x=0x01;
  x=x<  Wrdata(cbyte|x); /*画上屏幕  */
  col=x1;   /*恢复xy坐标  */
  row=y1;
 }
/****************************************/
/* 屏幕滚动定位   */
/****************************************/
void Rollscreen(Uchar x)
 {
  cbyte = DISPFIRST|x; /*定义显示起始行为x?*/
  WrcmdL(cbyte);
  WrcmdM(cbyte);
  WrcmdR(cbyte);
 }
/****************************************/
/* 一个字串的输出   */
/****************************************/
void Putstr(Uchar *puts,Uchar i)
 {
  Uchar j,X;
  for (j=0;j  {
  X = puts[j];
   if (X&0x80)
    {
     Putcdot(X&0x7f); /*只保留低7位*/
    }
   else Putedot(X-0x20);  /*ascii码表从0x20开始*/
  }
 }
/****************************************/
/*   半角字符点阵码数据输出  */
/****************************************/
void Putedot(Uchar Order)
 {
 Uchar i,bakerx,bakery; /*共定义4个局部变量   */
 int x;   /*偏移量,字符量少的可以定义为UCHAR */
 bakerx = col;  /*暂存x,y坐标,已备下半个字符使用 */
 bakery = row;
 x=Order * 0x10;  /*半角字符,每个字符16字节 */
/*上半个字符输出,8列 */
 for(i=0;i<8;i++)
  {
  cbyte = Ezk[x];    /*取点阵码,rom数组 */
  Wrdata(cbyte);    /*写输出一字节  */
  x++;
  col++;
  if (col==LCMLIMIT){col=0;row++;row++;}; /*下一列,如果列越界换行*/
   if (row>7) row=0;  /*如果行越界,返回首行 */
  }     /*上半个字符输出结束 */
 col = bakerx;     /*列对齐  */
 row = bakery+1;     /*指向下半个字符行 */
/*下半个字符输出,8列 */
 for(i=0;i<8;i++)
  {
  cbyte = Ezk[x];    /*取点阵码  */
  Wrdata(cbyte);    /*写输出一字节  */
  x++;
  col++;
  if (col==LCMLIMIT){col=0;row=row+2;}; /*下一列,如果列越界换行*/
   if (row>7) row=1;  /*如果行越界,返回首行 */
  }     /*下半个字符输出结束 */
 row=bakery;
 }      /*整个字符输出结束 */

/****************************************/
/*  全角字符点阵码数据输出  */
/****************************************/
void Putcdot(Uchar Order)
 {
 Uchar i,bakerx,bakery;  /*共定义3个局部变量  */
 int x;    /*偏移量,字符量少的可以定义为UCHAR */
 bakerx = col;   /*暂存x,y坐标,已备下半个字符使用 */
 bakery = row;
 x=Order * 0x20;   /*每个字符32字节 */
 
/*上半个字符输出,16列 */
 for(i=0;i<16;i++)
  {
  Wrdata(Hzk[x]);    /*写输出一字节  */
  x++;
  col++;
  if (col==LCMLIMIT){ col=0;row++;row++;} /*下一列,如果列越界换行*/
   if (row>6) row=0;  /*如果行越界,返回首行 */
  }     /*上半个字符输出结束 */
  
/*下半个字符输出,16列 */
 col = bakerx;
 row = bakery+1;
 for(i=0;i<16;i++)    /*下半部分*/
  {
  Wrdata(Hzk[x]);
  x++;
  col++;
  if (col==LCMLIMIT){col=0;row++;row++;} /*下一列,如果列越界换行*/
   if (row>7) row=1;  /*如果行越界,返回首行 */
  }     /*下半个字符输出结束 */
 row = bakery;
 }      /*整个字符输出结束 */
/****************************************/
/* 清屏,全屏幕清零  */
/****************************************/
void Lcmcls( void )
 {
 for(row=0;row<8;row++)
     for(col=0;col }
/****************************************/
/*  从液晶片上读数据,保留在全局变量中 */
/****************************************/
void Rddata(void)
 {
 Locatexy();  /*坐标定位,返回时保留分区状态不变 */
  Datalcm=0xFF;
 Dilcm = 1; /*数据*/
  Rwlcm = 1; /*读数据*/
  Elcm = 1; /*读入到LCM*/
  _nop_();
  cbyte = Datalcm; /*虚读一次 */
  Elcm = 0;
 Locatexy();  /*坐标定位,返回时保留分区状态不变 */
  Datalcm=0xFF;
  _nop_();
  Dilcm = 1; /*数据*/
  Rwlcm = 1; /*读数据*/
  Elcm = 1; /*读入到LCM*/
  _nop_();
  cbyte = Datalcm; /*从数据口读数据,真读 */
  Elcm = 0;
 }
/****************************************/
/* 数据写输出   */
/****************************************/
void Wrdata(Uchar X)
 {
 Locatexy();  /*坐标定位,返回时保留分区状态不变 */
// wtcom();
  Dilcm = 1; /*数据输出*/
  Rwlcm = 0; /*写输出  */
  Datalcm = X; /*数据输出到数据口 */
  Elcm = 1; /*读入到LCM*/
  _nop_();
  Elcm = 0;
 }
/****************************************/
/* 命令输出,每次输出一个分区控制口 */
/****************************************/
/*void Wrcmd(Uchar X)
// {
// Locatexy();  /*确定分区,返回时保留分区状态不变 */
// wtcom();  /*等待LCM操作允许 */
//  Dilcm = 0;   /*数据操作 */
//  Rwlcm = 0;   /*写输出   */
//  Datalcm = X;   /*数据输出到数据口 */
//  Elcm = 1;_nop_();Elcm = 0; /*读入到LCM*/
// }
/********************************/
/* 命令输出到左区控制口  */
/********************************/
void WrcmdL(Uchar X)
 {
  lcdbusyL();  /*确定分区,返回时保留分区状态不变*/
  Dilcm = 0;   /*命令操作 */
  Rwlcm = 0;   /*写输出   */
  Datalcm = X;   /*数据输出到数据口 */
  Elcm = 1;_nop_();Elcm = 0; /*读入到LCM*/
 }
/********************************/
/* 命令输出到中区控制口  */
/********************************/
void WrcmdM(Uchar X)
 {
  lcdbusyM();  /*确定分区,返回时保留分区状态不变*/
  Dilcm = 0;   /*命令操作 */
  Rwlcm = 0;   /*写输出   */
  Datalcm = X;   /*命令输出到数据口 */
  Elcm = 1;_nop_();Elcm = 0; /*读入到LCM*/
 }
/********************************/
/* 命令输出到右区控制口  */
/********************************/
void WrcmdR(Uchar X)
 {
  lcdbusyR(); /*确定分区,返回时保留分区状态不变 */
  Dilcm = 0;   /*命令操作 */
  Rwlcm = 0;   /*写输出   */
  Datalcm = X;   /*命令输出到数据口 */
  Elcm = 1;_nop_();Elcm = 0; /*读入到LCM*/
 }
/********************************************************/
/* 分区操作允许等待,返回时保留分区选择状态  */
/********************************************************/
void lcdbusyL(void)
 {
        CS1LCM = 0;  /*CLR CS1  */
        CS2LCM = 1;  /*SETB CS2  */
        CS3LCM = 1;  /*SETB CS3  */
 wtcom();  /* waitting for enable */
 }
void lcdbusyM(void)
 {
        CS1LCM = 1;  /*SETB CS1  */
        CS2LCM = 0;  /*CLR CS2  */
        CS3LCM = 1;  /*SETB CS3  */
 wtcom();  /* waitting for enable */
 }
void lcdbusyR(void)
 {
        CS1LCM = 1;  /*SETB CS1  */
        CS2LCM = 1;  /*SETB CS2  */
        CS3LCM = 0;  /*CLR CS3  */
 wtcom();  /* waitting for enable */
 }
void wtcom(void)
 {
 Dilcm = 0;  /*CLR DI  */
 Rwlcm = 1;  /*SETB RW  */
        Datalcm = 0xFF;  /*MOV DATA_LCM,#0FFH  */
 Elcm  = 1;_nop_();  
       while(Datalcm & Lcdbusy);
       Elcm  = 0;
 }
/********************************************************/
/*根据设定的坐标数据,定位LCM上的下一个操作单元位置 */
/********************************************************/
void Locatexy(void)
 {
 unsigned char  x,y;
 switch (col&0xc0)  /*  col.and.0xC0 */
  {   /*条件分支执行  */
  case 0:  {lcdbusyL();break;} /*左区 */
  case 0x40: {lcdbusyM();break;} /*中区 */
  case 0x80: {lcdbusyR();break;} /*右区 */
  }
 x = col&0x3F|SETX;  /*  col.and.0x3f.or.setx */
 y = row&0x07|SETY;  /*  row.and.0x07.or.sety */
  wtcom();  /*  waitting for enable  */
  Dilcm = 0;   /*CLR DI */
  Rwlcm = 0;   /*CLR RW */
  Datalcm = y;   /*MOV P0,Y */
  Elcm = 1;_nop_();Elcm = 0;
  wtcom();  /*  waitting for enable  */
  Dilcm = 0;   /*CLR DI */
  Rwlcm = 0;   /*CLR RW */
  Datalcm = x;   /*MOV P0,X */
  Elcm = 1;_nop_();Elcm = 0;
 }
/********************************/
/*液晶屏初始化   */
/********************************/
void Lcminit(void)
 {
  cbyte = DISPOFF; /*关闭显示屏 */
  WrcmdL(cbyte);
  WrcmdM(cbyte);
  WrcmdR(cbyte);
  cbyte = DISPON;  /*打开显示屏 */
  WrcmdL(cbyte);
  WrcmdM(cbyte);
  WrcmdR(cbyte);
  cbyte = DISPFIRST; /*定义显示起始行为零 */
  WrcmdL(cbyte);
  WrcmdM(cbyte);
  WrcmdR(cbyte);
  Lcmcls();
  col=0;  /*清屏  */
  row=0;
  Locatexy();
 }
/********************************/
/* 延时    */
/********************************/
void Delay(Uchar MS)
 {
  Uchar us,usn;
  while(MS!=0)
   { usn = 4;
    while(usn!=0)
     {
      us=0xf0;
      while (us!=0){us--;};
      usn--;
     }
    MS--;
   }
 }
/********************************/
//file://定义字符串数组  */
/********************************/
Uchar code STR1[]=
  {
  0x80,0x81,0x82,0x83,0x84,0x85,
  0x86,0x87,0x88,0x89,0x8a,0x8B
  };
   
Uchar code STR2[]="Our friend over the wold";
Uchar code STR3[]="Program by Keil C51 6.12";
Uchar code STR4[]="Thank you ~v~ 1234567890";
/********************************/
/*  定义中文字库  */
/********************************/
Uchar code Hzk[]={
/*茂 C3515 0 */
  0x04,0x04,0xC4,0x44,0x5F,0x44,0x44,0xF4,
  0x44,0x4F,0x54,0x64,0x44,0x46,0x04,0x00,
  0x80,0x40,0x3F,0x00,0x40,0x40,0x20,0x20,
  0x13,0x0C,0x18,0x24,0x43,0x80,0xE0,0x00,
/*兴 C4843 1 */
  0x00,0xFE,0x4A,0x4A,0x00,0xFE,0xEA,0xAA,
  0xAA,0xFE,0x00,0x4A,0x4A,0xFE,0x00,0x00,
  0x02,0x83,0x42,0x22,0x12,0x1B,0x02,0x02,
  0x02,0x0B,0x12,0x22,0x62,0xC3,0x02,0x00,
/*国 C2590 2 */
  0x00,0xFE,0x02,0xD2,0x52,0x52,0xD2,0x3E,
  0xD2,0x16,0x1A,0x12,0xFF,0x02,0x00,0x00,
  0x00,0xFF,0x50,0x53,0x52,0x4A,0x6B,0x50,
  0x4F,0x54,0x7B,0x40,0xFF,0x00,0x00,0x00,
/*际 C2842 3 */
  0x00,0xFE,0x22,0xD2,0x0E,0x20,0xB8,0x4F,
  0xB2,0x9E,0x80,0x9F,0x72,0x8A,0x06,0x00,
  0x00,0xFF,0x04,0x08,0x07,0x21,0x12,0x0A,
  0x46,0x82,0x7E,0x06,0x0A,0x12,0x31,0x00,
/*( C0308 4 */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0xC0,0x30,0x08,0x04,0x02,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x03,0x0C,0x10,0x20,0x40,0x00,0x00,
/*广 C2567 5 */
  0x00,0x00,0xFC,0x44,0x54,0x54,0x7C,0x55,
  0xD6,0x54,0x7C,0x54,0x54,0x44,0x44,0x00,
  0x80,0x60,0x1F,0x80,0x9F,0x55,0x35,0x15,
  0x1F,0x15,0x15,0x35,0x5F,0x80,0x00,0x00,
/*东 C2211 6 */
  0x00,0x08,0xE8,0xA8,0xA8,0xA8,0xA8,0xFF,
  0xA8,0xA8,0xA8,0xA8,0xE8,0x0C,0x08,0x00,
  0x00,0x40,0x23,0x12,0x0A,0x06,0x02,0xFF,
  0x02,0x06,0x0A,0x12,0x23,0x60,0x20,0x00,
/*) C0309 7 */
  0x00,0x00,0x02,0x04,0x08,0x30,0xC0,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x40,0x20,0x10,0x0C,0x03,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*有 C5148 8 */
  0x04,0x04,0x04,0x84,0xE4,0x3C,0x27,0x24,
  0x24,0x24,0x24,0xF4,0x24,0x06,0x04,0x00,
  0x04,0x02,0x01,0x00,0xFF,0x09,0x09,0x09,
  0x09,0x49,0x89,0x7F,0x00,0x00,0x00,0x00,
/*限 C4762 9 */
  0x00,0xFE,0x02,0x22,0xDA,0x06,0x00,0xFE,
  0x92,0x92,0x92,0x92,0xFF,0x02,0x00,0x00,
  0x00,0xFF,0x08,0x10,0x08,0x07,0x00,0xFF,
  0x42,0x24,0x08,0x14,0x22,0x61,0x20,0x00,
/*公 C2511 10 */
  0x00,0x00,0x80,0x40,0x30,0x0C,0x00,0xC0,
  0x07,0x1A,0x20,0x40,0x80,0x80,0x80,0x00,
  0x01,0x01,0x20,0x70,0x28,0x24,0x23,0x20,
  0x20,0x28,0x30,0x60,0x00,0x01,0x00,0x00,
/*司 C4330 11 */
0x10,0x10,0x92,0x92,0x92,0x92,0x92,0x92,
  0xD2,0x9A,0x12,0x02,0xFF,0x02,0x00,0x00,
  0x00,0x00,0x3F,0x10,0x10,0x10,0x10,0x10,
  0x3F,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,
};
/****************************************/
/* 定义ASCII字库8列*16行  */
/****************************************/
Uchar code Ezk[]={
/*-文字: --0x20 */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-文字:!--0x21 */
  0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x27,0x00,0x00,0x00,0x00,
/*-文字:"--0x22 */
  0x00,0x08,0x04,0x02,0x08,0x04,0x02,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-文字:#--0x23 */
  0x40,0x40,0xF8,0x40,0x40,0xF8,0x40,0x00,
  0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,
/*-文字:$--0x24 */
  0x00,0x70,0x88,0xFC,0x08,0x08,0x30,0x00,
  0x00,0x1C,0x20,0xFF,0x21,0x22,0x1C,0x00,
/*-文字:%--0x25 */
  0xF0,0x08,0xF0,0x80,0x70,0x08,0x00,0x00,
  0x00,0x31,0x0E,0x01,0x1E,0x21,0x1E,0x00,
/*-文字:&--0x26 */
  0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,
  0x1E,0x21,0x23,0x24,0x18,0x16,0x20,0x00,
/*-文字:'--0x27 */
  0x20,0x18,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-文字:(--0x28 */
  0x00,0x00,0x00,0x00,0xC0,0x30,0x08,0x04,
  0x00,0x00,0x00,0x00,0x03,0x0C,0x10,0x20,
/*-文字:)--0x29 */
  0x04,0x08,0x30,0xC0,0x00,0x00,0x00,0x00,
  0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x00,
/*-文字:*--0x2a */
  0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,
  0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,
/*-文字:+--0x2b */
  0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,
  0x01,0x01,0x01,0x0F,0x01,0x01,0x01,0x00,
/*-文字:,--0x2c */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x80,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
/*-文字:---0x2d */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
/*-文字:.--0x2e */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
/*-文字:/--ox2f */
  0x00,0x00,0x00,0x00,0x00,0xE0,0x18,0x04,
  0x00,0x40,0x30,0x0C,0x03,0x00,0x00,0x00,
/*-文字:0--0x30 */
  0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
  0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
/*-文字:1--0x31 */
  0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,
  0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
/*-文字:2--0x32 */
  0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,
  0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
/*-文字:3--0x33 */
  0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,
  0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
/*-文字:4--0x34 */
  0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,
  0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,
/*-文字:5--0x35 */
  0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,
  0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,
/*-文字:6--0x36 */
  0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,
  0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,
/*-文字:7--0x37 */
  0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,
  0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
/*-文字:8--0x38 */
  0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,
  0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,
/*-文字:9--0x39 */
  0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
 0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,
/*-文字::-- */
  0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,
  0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,
/*-文字:/-- */
  0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,
  0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,
/*-文字:<-- */
  0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,
  0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,
/*-文字:=-- */
  0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,
  0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,
/*-文字:>-- */
  0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,
  0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,
/*-文字:?-- */
  0x00,0x30,0x08,0x08,0x08,0x88,0x70,0x00,
  0x00,0x00,0x00,0x26,0x01,0x00,0x00,0x00,
/*-文字:@-- */
  0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,
  0x07,0x18,0x27,0x28,0x27,0x28,0x07,0x00,
/*-文字:A-- */
  0x00,0x00,0xE0,0x18,0x18,0xE0,0x00,0x00,
  0x30,0x0F,0x04,0x04,0x04,0x04,0x0F,0x30,
/*-文字:B-- */
  0xF8,0x08,0x08,0x08,0x08,0x90,0x60,0x00,
  0x3F,0x21,0x21,0x21,0x21,0x12,0x0C,0x00,
/*-文字:C-- */
  0xE0,0x10,0x08,0x08,0x08,0x10,0x60,0x00,
  0x0F,0x10,0x20,0x20,0x20,0x10,0x0C,0x00,
/*-文字:D-- */
  0xF8,0x08,0x08,0x08,0x08,0x10,0xE0,0x00,
  0x3F,0x20,0x20,0x20,0x20,0x10,0x0F,0x00,
/*-文字:E-- */
  0x00,0xF8,0x08,0x08,0x08,0x08,0x08,0x00,
  0x00,0x3F,0x21,0x21,0x21,0x21,0x20,0x00,
/*-文字:F-- */
  0xF8,0x08,0x08,0x08,0x08,0x08,0x08,0x00,
  0x3F,0x01,0x01,0x01,0x01,0x01,0x00,0x00,
/*-文字:G-- */
  0xE0,0x10,0x08,0x08,0x08,0x10,0x60,0x00,
  0x0F,0x10,0x20,0x20,0x21,0x11,0x3F,0x00,
/*-文字:H-- */
  0x00,0xF8,0x00,0x00,0x00,0x00,0xF8,0x00,
  0x00,0x3F,0x01,0x01,0x01,0x01,0x3F,0x00,
/*-文字:I-- */
  0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
/*-文字:J-- */
  0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,
  0x00,0x1C,0x20,0x20,0x20,0x20,0x1F,0x00,
/*-文字:K-- */
  0x00,0xF8,0x00,0x80,0x40,0x20,0x10,0x08,
  0x00,0x3F,0x01,0x00,0x03,0x04,0x18,0x20,
/*-文字:L-- */
  0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
/*-文字:M-- */
  0xF8,0xE0,0x00,0x00,0x00,0xE0,0xF8,0x00,
  0x3F,0x00,0x0F,0x30,0x0F,0x00,0x3F,0x00,
/*-文字:N-- */
  0x00,0xF8,0x30,0xC0,0x00,0x00,0xF8,0x00,
  0x00,0x3F,0x00,0x01,0x06,0x18,0x3F,0x00,
/*-文字:O-- */
  0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
  0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
/*-文字:P-- */
  0xF8,0x08,0x08,0x08,0x08,0x10,0xE0,0x00,
  0x3F,0x02,0x02,0x02,0x02,0x01,0x00,0x00,
/*-文字:Q-- */
  0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
  0x00,0x0F,0x10,0x20,0x2C,0x10,0x2F,0x00,
/*-文字:R-- */
  0xF8,0x08,0x08,0x08,0x08,0x90,0x60,0x00,
  0x3F,0x01,0x01,0x01,0x07,0x18,0x20,0x00,
/*-文字:S-- */
  0x60,0x90,0x88,0x08,0x08,0x10,0x20,0x00,
  0x0C,0x10,0x20,0x21,0x21,0x12,0x0C,0x00,
/*-文字:T-- */
  0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0x00,
  0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
/*-文字:U-- */
  0xF8,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,
  0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,
/*-文字:V-- */
  0x18,0xE0,0x00,0x00,0x00,0xE0,0x18,0x00,
0x00,0x01,0x0E,0x30,0x0E,0x01,0x00,0x00,
/*-文字:W-- */
  0xF8,0x00,0xC0,0x38,0xC0,0x00,0xF8,0x00,
  0x03,0x3C,0x03,0x00,0x03,0x3C,0x03,0x00,
/*-文字:X-- */
  0x08,0x30,0xC0,0x00,0xC0,0x30,0x08,0x00,
  0x20,0x18,0x06,0x01,0x06,0x18,0x20,0x00,
/*-文字:Y-- */
  0x08,0x30,0xC0,0x00,0xC0,0x30,0x08,0x00,
  0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
/*-文字:Z-- */
  0x08,0x08,0x08,0x08,0xC8,0x28,0x18,0x00,
  0x30,0x2C,0x22,0x21,0x20,0x20,0x20,0x00,
/*-文字:{-- */
  0x00,0x00,0x00,0x80,0x7E,0x02,0x00,0x00,
  0x00,0x00,0x00,0x00,0x3F,0x20,0x00,0x00,
/*-文字:\-- */
  0x00,0x08,0x70,0x80,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x01,0x0E,0x30,0xC0,0x00,
/*-文字:}-- */
  0x00,0x02,0x7E,0x80,0x00,0x00,0x00,0x00,
  0x00,0x20,0x3F,0x00,0x00,0x00,0x00,0x00,
/*-文字:^-- */
  0x00,0x08,0x04,0x02,0x02,0x04,0x08,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-文字:_-- */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
/*-文字:`-- */
  0x00,0x00,0x02,0x06,0x04,0x08,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-文字:a-- */
  0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,
  0x00,0x19,0x24,0x24,0x24,0x14,0x3F,0x00,
/*-文字:b-- */
  0x00,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,
  0x00,0x3F,0x11,0x20,0x20,0x20,0x1F,0x00,
/*-文字:c-- */
  0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,
  0x0E,0x11,0x20,0x20,0x20,0x20,0x11,0x00,
/*-文字:d-- */
  0x00,0x00,0x80,0x80,0x80,0x00,0xF8,0x00,
  0x00,0x1F,0x20,0x20,0x20,0x11,0x3F,0x00,
/*-文字:e-- */
  0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,
  0x0E,0x15,0x24,0x24,0x24,0x25,0x16,0x00,
/*-文字:f-- */
  0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x00,
  0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
/*-文字:g-- */
  0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,
  0x40,0xB7,0xA8,0xA8,0xA8,0xA7,0x40,0x00,
/*-文字:h-- */
  0x00,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,
  0x00,0x3F,0x01,0x00,0x00,0x00,0x3F,0x00,
/*-文字:i-- */
  0x00,0x00,0x00,0x98,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
/*-文字:j-- */
  0x00,0x00,0x00,0x00,0x98,0x00,0x00,0x00,
  0x00,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,
/*-文字:k-- */
  0x00,0xF8,0x00,0x00,0x00,0x80,0x00,0x00,
  0x00,0x3F,0x04,0x02,0x0D,0x10,0x20,0x00,
/*-文字:l-- */
  0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
/*-文字:m-- */
  0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,
  0x3F,0x00,0x00,0x3F,0x00,0x00,0x3F,0x00,
/*-文字:n-- */
  0x00,0x80,0x00,0x80,0x80,0x80,0x00,0x00,
  0x00,0x3F,0x01,0x00,0x00,0x00,0x3F,0x00,
/*-文字:o-- */
  0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,
  0x0E,0x11,0x20,0x20,0x20,0x11,0x0E,0x00,
/*-文字:p-- */
  0x00,0x80,0x00,0x80,0x80,0x80,0x00,0x00,
  0x00,0xFF,0x11,0x20,0x20,0x20,0x1F,0x00,
/*-文字:q-- */
  0x00,0x00,0x80,0x80,0x80,0x00,0x80,0x00,
  0x00,0x1F,0x20,0x20,0x20,0x11,0xFF,0x00,
/*-文字:r-- */
  0x00,0x00,0x80,0x00,0x00,0x80,0x80,0x00,
  0x00,0x00,0x3F,0x01,0x01,0x00,0x00,0x00,
/*-文字:s-- */
  0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,
 0x00,0x13,0x24,0x24,0x24,0x24,0x19,0x00,
/*-文字:t-- */
  0x00,0x80,0x80,0xE0,0x80,0x80,0x80,0x00,
  0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x00,
/*-文字:u-- */
  0x00,0x80,0x00,0x00,0x00,0x00,0x80,0x00,
  0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x00,
/*-文字:v-- */
  0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x00,
  0x00,0x07,0x18,0x20,0x18,0x07,0x00,0x00,
/*-文字:w-- */
  0x80,0x00,0x00,0x80,0x00,0x00,0x80,0x00,
  0x0F,0x30,0x0E,0x01,0x0E,0x30,0x0F,0x00,
/*-文字:x-- */
  0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x00,
  0x20,0x11,0x0A,0x04,0x0A,0x11,0x20,0x00,
/*-文字:y-- */
  0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x00,
  0x00,0x87,0x98,0x60,0x18,0x07,0x00,0x00,
/*-文字:z-- */
  0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,
  0x00,0x30,0x28,0x24,0x22,0x21,0x20,0x00,
/*-文字:{-- */
  0x00,0x00,0x00,0x80,0x7E,0x02,0x00,0x00,
  0x00,0x00,0x00,0x00,0x3F,0x20,0x00,0x00,
/*-文字:|-- */
  0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,
/*-文字:}-- */
  0x00,0x02,0x7E,0x80,0x00,0x00,0x00,0x00,
  0x00,0x20,0x3F,0x00,0x00,0x00,0x00,0x00,
/*-文字:~-- */
  0x00,0x06,0x01,0x01,0x06,0x04,0x03,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};


关键字:89C51  T6963  液晶驱动 引用地址:基于89C51的T6963液晶驱动程序(通过验证的)

上一篇:基于89C2051产生PWM信号来控制直流电机调速程序
下一篇:基于89C51的LCM12832模块128X64点阵液晶应用(验证OK)

推荐阅读最新更新时间:2024-03-16 15:53

122x32液晶1520控制器驱动程序(C51)
简介:本文主要介绍了122x32液晶1520控制器驱动程序(C51)。 #include reg51.h #include intrins.h #include absacc.h #include .incASCII816.h //标准ASCII码库 #include .incHZTable.h //自制的汉字库 #include .incmenu.h //自制的菜单库 sbit LCD12232_A0=P3^3; sbit LCD12232_RW=P3^1; //读写 sbit LCD12232_E1=P3^5; //片选1(Master) sbit LCD12232_E2=P3^4; /
[单片机]
89C51单片机I/O 口模拟串行通信的实现方法
目前普遍采用的MCS51 和PIC 系列单片机通常只有一个(或没有)UART异步串行通信接口,在应用系统中若需要多个串行接口(例如在多机通信系统中,主机既要和从机通信又要和终端通信)的情况下,通常的方法是扩展一片8251 或 8250 通用同步/异步接收发送芯片(USART),需额外占用单片机I/O 资源。本文介绍一种用单片机普通I/O 口实现串行通信的方法,可在单片机的最小应用系统中实现与两个以上串行接口设备的多机通信。 1.串行接口的基本通信方式 串行接口的有异步和同步两种基本通信方式。异步通信采用用异步传送格式,如图1 所示。数据发送和接收均将起始位和停止位作为开始和结束的标志。在异步通信中,起始位占用一位
[单片机]
<font color='red'>89C51</font>单片机I/O 口模拟串行通信的实现方法
基于LonWorks技术的远程抄表系统远程抄表
  前言   远程自动抄表系统是建筑智能化的重要标志。由于行业壁垒等因素,我国城市大部分住宅为上门抄表方式,浪费了大量的人力,给电力、自来水和煤气等企业的收费造成了时间上的延时,增加了物业管理部门的负担,也造成住户的一些不便,远程自动抄表系统有效的解决了这些问题。   设计采用数字化脉冲的电表、水表和煤气表,以实现三表数据的现场自动采集。家庭智能控制器采集各表发出的脉冲后,转换成真实的三表数据,存于E2PROM中。当物业管理中心监控管理计算机进行查询时,家庭智能控制器通过LON网络把数据传送到监控管理计算机。   LonWorks自动抄表节点与系统   LonWorks的测控单元使用以Neuron芯片为核心的一块LonWo
[单片机]
基于LonWorks技术的远程抄表系统远程抄表
ATMEAG16L驱动128x64点阵图形液晶模块的实验
  要实验对128x64点阵图形液晶模块的高效控制,必须按照模块设计方式,建立起相关的子程序模块,下面详细介绍各功能子程序。 10.在AVR 单片机 综合实验板上实现128x64LCM演示程序 在AVR单片机综合实验板上实现128x64点阵图形液晶上显示汉字:屏幕上第一行显示“朝辞白帝彩云间”第二行显示“千里江林一日还”,第三行显示“两岸猿声啼不住”,第四行显示“轻舟已过万重山。”其中第三、四行反白显示。在我的文档中新建一个ac20的文件夹。建立一个ac20.prj的工程项目,最后建立源程序文件ac20.c。因此程序较长,就不在正文中给出了。
[单片机]
ATMEAG16L<font color='red'>驱动</font>128x64点阵图形<font color='red'>液晶</font>模块的实验
单片机驱动 DS1302时钟+1602液晶
程序参考C语言代码如下: #include REGX52.H #include “LCD1602.h” #include “DS1302.h” void Delay1ms(unsigned int count) { unsigned int i,j; for(i=0;i count;i++) for(j=0;j 120;j++); } main() { SYSTEMTIME CurrentTime; LCD_Initial(); Initial_DS1302(); GotoXY(0,0); Print( www.ourhc.cn ); GotoXY(0,1); Print( Time: ); whil
[单片机]
单片机<font color='red'>驱动</font> DS1302时钟+1602<font color='red'>液晶</font>
STM8L TAB段式LCD液晶驱动程序
简介:STM8L152XX系列带有片上段式LCD驱动程序,这为低成本应用和高密度系统设计提供了保证,利用片上LCD驱动模块,可以有效的控制系统整体功耗,简化系统结构,从整体来说可靠性得到提高。此处不介绍LCD驱动模块的原理以及驱动时序,请参考STM8原版英文说明文档,已描述的很详细,以下介绍其寄存器的配置方法以及编程方法。 时钟,系统时钟同样用来产生LCD驱动时钟,通过时钟模块配置: CLK_PCKENR2|=S3; //LCD 使能LCD模块时钟 CLK_CRTCR=S7|S6|S5|S1; //RTC&LCD- FCLK/128 注意RTC和LCD是共同一路时钟 以上配置根据实际时钟进行调整,我在此处采用FCL
[单片机]
请问怎样用89C51采集多路脉冲信号?
问:怎样用89C51采集多路脉冲信号? 脉冲信号是一方波,需要用89C51进行脉冲计数,如果一路的话是不是可以用计数器啊?如果路数较多呢? 答: 要看频率多高,如果不高可以通过查询实现多路计数。(yanggt)2005-3-5 14:15:00 频率在1-3000Hz之间,好实现吗?(athome)2005-3-5 16:22:36 3000Hz,十几路也没问题。(yanggt)2005-3-5 22:55:08 yanggt:能指点的具体一点吗?我悟性差,两天也没悟出来!(athome)2005-3-11 15:56:35 比如说采样8路信号,把8路信号接在单片机某个口上(如p1口), 然后以信号的最高频率的两倍定时
[单片机]
89C51和8254-2实际步进式PWM输出
    摘要: 介绍一种新型PWM输出的方式。它是用89C51作为主控部分,用8254-2可编程定时器/计数器来实现1Hz~3kHz步进式PWM的输出;具有分辨率高、反应速度快及占用CPU时间少的优点。     关键词: 8254-2 89C51 脉宽调制(PWM) 分辨率 引言 脉宽调制(PWM)技术最初是在无线电技术中用于信号的调制,后来在电机调速中得到了很好的应用。本设计中要求输出PWM从1Hz~3kHz步进式递增,单步为1Hz。由于89C51的时钟最大能取24MHz,单指令周期为0.5 μs ,计数频率为×10 6Hz。当输出2999Hz和3000Hz时,若采用89C51内部计数器来计数
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved