51单片机汉字液晶子程序 液晶屏分为4行*12列汉字

发布者:自由思考最新更新时间:2018-01-16 来源: eefocus关键字:51单片机  汉字液晶  液晶屏  4行*12列 手机看文章 扫描二维码
随时随地手机看文章

/*写汉字液晶子程 液晶屏分为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                                                 *
;***************************************************************************/
//画线部分请参照avr的c程序。
/*#pragma SRC /*生成ASM文件开关,必要时打开 */
#i nclude
#i nclude
#i nclude

#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; //数据口
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;xscol = ys + xs;
point();}
}
else {xs = row;
for (ys=0;ysrow = 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--;
}
}

/********************************/
//定义字符串数组 */
/********************************/

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,
};


关键字:51单片机  汉字液晶  液晶屏  4行*12列 引用地址:51单片机汉字液晶子程序 液晶屏分为4行*12列汉字

上一篇:T6963C液晶控制器快速显示汉字的方法
下一篇:LCD1502驱动程序

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

51单片机控制舵机实验
简介:这里用到PCF8591 ADDA芯片和51单片机和一个电位器。通过控制电位器,产生PWM波,控制舵机旋转。并在数码管上显示角度。 电路图 这是程序,、 /*----------------------------------------------- 名称:IIC协议 PCF8591ADDA转换 内容:此程序通过IIC协议对DAAD芯片操作,读取电位器的电压,并输出模拟量,用LED亮度渐变指示,晶体选用12MHz ------------------------------------------------*/ #include reg52.h #include intrins.h //包
[单片机]
<font color='red'>51单片机</font>控制舵机实验
关于51单片机使用printf串口调试
在51系列单片机上面使用串口的时候,有时候为了方便调试看一下输出结果,会用到printf函数输出到电脑终端,再用串口助手显示。但是单片机使用printf的时候有一点需要注意的地方。 1、首先添加头文件#include stdio.h ,因为printf在这个里面 2、然后配置串口,但是在串口初始化的时候需要吧 TI = 1;否则无法发送。因为printf函数会调用putchar函数,而putchar函数会判断 TI ,不为 1 则等待,相当于死机,为 1 则清零。 3、也可以使用接受中断,但是中断里面不要再有 TI = 1;这句,否则无法发送。 就这三点,然后就可以很方便的使用printf输出了。 但是方便归方便,这个只
[单片机]
关于<font color='red'>51单片机</font>使用printf串口调试
小米科技向夏普大量订购IGZO高性能液晶屏
    据Record Japan网站援引日媒30日消息,日本夏普公司29日公布,中国北京小米科技有限公司已经向夏普大量订购了夏普独自研发的IGZO智能手机用低耗电高精细液晶屏,预计月产量将达到100万件,订购液晶屏将由夏普龟山第二工厂生产,小米公司也与苹果并列成为夏普的大型订购商。   小米科技是中国国内的新兴智能手机制造商,据统计,小米去年智能手机销量同比增加了60%,达1870万部,营业额同比增50%,达316亿元,以小米、华为等为首的中国智能手机品牌商,近几年也加速了高性能机种的开发,因此也增加了向夏普、索尼等企业的手机配件订购量。   夏普龟山第二工厂原本主要面向液晶电视生产大型面板,为了加速经营重建,于2012年起开始导
[手机便携]
mcs51单片机加法指令(4条)有例子
算术运算 指令 共有24条,算术运算主要是执行加、减、乘、除法四则运算。另外MCS-51指令系统中有相当一部分是进行加、减1操作,BCD码的运算和调整,我们都归类为运算指令。虽然MCS-51单片机的算术逻辑单元ALU仅能对8位无符号整数进行运算,但利用进位标志C,则可进行多字节无符号整数的运算。同时利用溢出标志,还可以对带符号数进行补码运算。需要指出的是,除加、减1指令外,这类指令大多数都会对PSW(程序状态字)有影响。这在使用中应特别注意。 . 加法指令(4条) 这4条指令的作用是把立即数,直接地址、工作寄存器及间接地址内容与累加器A的内容相加,运算结果存在A中。 ADD A,#data ;(A)+#data→(A) 累加器
[单片机]
单片机项目:51单片机之蓝牙控制风扇
这个是我大二才学51单片机的时候做的一个项目,其实这个项目比较简单,只不过是我们自己把它想得太难了,下面我来总结一下具体设计过程,我会上传代码和研究报告:点击这里! 首先买一个蓝牙模块,我买的是HC-06,在手机上下载一个蓝牙串口调试助手,等同于单片机的UART串口通信,利用BUFF来获取接受到的数据,这里只需要重视一个问题,就是测试编码,如果APP发送0xFF,(APP蓝牙串口调试助手已经支持手动设置按钮名字和发送的字符了)但是蓝牙模块很有可能接受到的是0xF8,0xF2,0xFE。所以这里我们首先应该测试编码。HC-06一般有5个端口,RX,TX,VCC,GND,AT,AT这里我们没有用到,是指更改密码,默认密码一般是12
[单片机]
单片机项目:<font color='red'>51单片机</font>之蓝牙控制风扇
什么叫51单片机最小系统
单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路.下面给出一个51单片机的最小系统电路图. 说明 复位电路:由电容串联电阻构成,由图并结合"电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C取10u,R取8.2K.当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平.至于如何具体定量计算,可以参
[单片机]
什么叫<font color='red'>51单片机</font>最小系统
mcs-51单片机CPU的内部结构及工作原理
单片机内部有一个8位的CPU,同时知道了CPU内部包含了运算器,控制器及若干寄存器。51单片机CPU的内部结构及工作原理。 从图中我们可以看到,在虚线框内的就是CPU的内部结构了,8位的MCS-51单片机的CPU内部有数术逻辑单元ALU(Arithmetic Logic Unit)、累加器A(8位)、寄存器B(8位)、程序状态字PSW(8位)、程序计数器PC(有时也称为 指令 指针,即IP,16位)、地址寄存器AR(16位)、数据寄存器DR(8位)、指令寄存器IR(8位)、指令译码器ID、控制器等部件组成。 图片1 1、运算器(ALU)的主要功能 A)算术和逻辑运算,可对半字节(一个字节是8位,半个字节就是4位)和
[单片机]
mcs-<font color='red'>51单片机</font>CPU的内部结构及工作原理
44780 16x2 字符液晶屏驱动演示程序总线方式
连接线图: LCM-------51  LCM-------51  LCM--------51          DB0-----P0.0  DB4-----P0.4  RW-------P2.0          DB1-----P0.1  DB5-----P0.5  RC-------P2.1          DB2-----P0.2  DB6-----P0.6  E--------P2.7 = 74ls00+wr+rd          DB3-----P0.3  DB7-----P0.7  VLCD接1K2电阻到GND :AT89C51的晶振频率为12MHz //#pragma src        // 产生
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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