📄 lcd128_64main.c
字号:
lin=lin<<1; //lin*2
// Show88(lin,column,HZTable[hzcode]);
// Show88(lin,column+1,HZTable[hzcode]+8);
// Show88(lin+1,column,HZTable[hzcode]+16);
// Show88(lin+1,column+1,HZTable[hzcode]+24);
}
/*----------------------------------------------------------------------------------------------*/
//显示图片
//旋转90度 :字模被竖着切分
//startline :开始行
//startcolumn:开始列
//linechar :图片行点除8(图片以8*8点阵为单位)
//columnchar :图片列点除8(图片以8*8点阵为单位)
//address : 字模区首地址
void ShowPicture(unsigned char startline,unsigned char startcolumn,unsigned char linechar,unsigned char columnchar,unsigned int address)
{ unsigned char i,j;
for(i=0;i<columnchar;i++)
for(j=0;j<linechar;j++)
Show88(startline+i , startcolumn+j , address+(i*linechar+j)*8 );
}
/*----------------------------------------------------------------------------------------------*/
//显示一行字符串(汉字,字母混排,一行16字节)
//lin:行
//lineheadaddr: 此行汉字代码区首地址
void ShowLine(unsigned char lin,unsigned char linehead[])
{ unsigned char i;
unsigned char byte;
unsigned int hzcode;
for( i=0; i<16; )
{ byte=linehead[i];
if(byte < 0x80) //字母
{
if(i>15) return; //!!编译器有问题,须强制退出
ShowChar(lin, i , byte);
i=i+1;
}
else // byte >= 0x80(汉字)
{
if(i>15) return; //!!编译器有问题,须强制退出
byte=byte & 0x7f; //最高位置0,即:减去0x8000
hzcode=(unsigned int)byte<<8; //?? //高8位
hzcode=hzcode+linehead[i+1]; //加低8位,组合成整型数地址
ShowHZ( lin,i,hzcode);
i=i+2;
}
}
}
/*----------------------------------------------------------------------------------------------------*/
//显示一屏汉字
//pageheadaddr:此屏汉字代码地址区首地址
void ShowPage(unsigned char pagehead[][16])
{ unsigned char i;
for(i=0;i<4;i++) ShowLine(i,pagehead[i]); //1行8个汉字,16字节
}
/*----------------------------------------------------------------------------------------------------*/
//读显示数据
unsigned char ReadByte()
{
unsigned char dat;
CheckState();
di=1; rw=1;
LCD12864DataPort=0xff;
en=1; dat=LCD12864DataPort; en=0;
return(dat);
}
/*----------------------------------------------------------------------------------------------------*/
//反显一个8*8字块
//lin:行(0-3), column: 列(0-7)
void ReverseShow88(unsigned char lin,unsigned char column)
{ unsigned char i;
unsigned char tab[8];
if(column<8) SelectScreen(1); //如果列数<4(0,1,2,3),则写在第一屏上
else SelectScreen(2); //否则 (4,5,6,7), 写在第二屏上
//读上部8列
column=column<<3; //每个方块8*8大小
SetLine(lin);
SetColumn(column);
tab[0]=ReadByte(); //空读!!!!! //?
for(i=0;i<8;i++) tab[i]=~ReadByte();
//写回
SetLine(lin);
SetColumn(column);
for(i=0;i<8;i++) WriteByte(tab[i]);
}
/*----------------------------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------------------------*/
//反显一个字符
//lin:行(0-4), column: 列(0-15)
void ReverseShowChar(unsigned char lin,unsigned char column)
{ lin=lin<<1;
ReverseShow88(lin ,column);
ReverseShow88(lin+1,column);
}
/*----------------------------------------------------------------------------------------------------*/
//反显一个汉字
//lin:行(0-3), column: 列(0-7)
ReverseShowHZ(unsigned char lin,unsigned char column)
{
lin=lin<<1;
column=column<<1;
ReverseShow88(lin ,column );
ReverseShow88(lin ,column+1);
ReverseShow88(lin+1,column );
ReverseShow88(lin+1,column+1);
}
/*----------------------------------------------------------------------------------------------------*/
//反显一行汉字
//lin:行
ReverseShow(unsigned char lin)
{ unsigned char i;
for(i=0;i<8;i++) ReverseShowHZ(lin,i);
}
/*----------------------------------------------------------------------------------------------------*/
void InitLCD() //初始化LCD
{ unsigned char i=250; //延时
while(i--);
//reset=0;//复位
//reset=1;
SelectScreen(0);
SetOnOff(0); //关显示
ClearScreen(1);//清屏
ClearScreen(2);
SelectScreen(0);
SetOnOff(1); //开显示
SelectScreen(0);
SetStartLine(0); //开始行:0
}
/*----------------------------------------------------------------------------------------------------*/
void Reset() //液晶复位
{
//reset 低复位 _ -
reset=0;
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
mydelay();
reset=1;
//全屏
cs1=0;
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
cs2=0;
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
SendCommandToLCD(0x3F);
//--------------------
P0=0x55;
}
//--------------
void mydelay(void){
unsigned int i,n;
i=8000;
while(i--){
n=30;while(n--);
}
}
main()
{ //unsigned char str1[]="dfsdfdsfdsfds";
P3 = 0xff;
P2=0xff;
P1=0xff;
P0=0xfe;
//while(1);
mydelay();
Reset();
mydelay();
P0=0xfd;
InitLCD();
mydelay();
P0=0xfb;
{ //InitLCD();
ShowChar(1,1,'A');
mydelay();
ShowChar(2,4,'B');
mydelay();
}
while(1);
}
//---------------
unsigned char code ASCII0816[] =
{
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x38,0xfc,0xfc,0x38,0x0,0x0,0x0,0x0,0x0,0xd,0xd,0x0,0x0,0x0,
0x0,0xe,0x1e,0x0,0x0,0x1e,0xe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x20,0xf8,0xf8,0x20,0xf8,0xf8,0x20,0x0,0x2,0xf,0xf,0x2,0xf,0xf,0x2,0x0,
0x38,0x7c,0x44,0x47,0x47,0xcc,0x98,0x0,0x6,0xc,0x8,0x38,0x38,0xf,0x7,0x0,
0x30,0x30,0x0,0x80,0xc0,0x60,0x30,0x0,0xc,0x6,0x3,0x1,0x0,0xc,0xc,0x0,
0x80,0xd8,0x7c,0xe4,0xbc,0xd8,0x40,0x0,0x7,0xf,0x8,0x8,0x7,0xf,0x8,0x0,
0x0,0x10,0x1e,0xe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0xf0,0xf8,0xc,0x4,0x0,0x0,0x0,0x0,0x3,0x7,0xc,0x8,0x0,0x0,
0x0,0x0,0x4,0xc,0xf8,0xf0,0x0,0x0,0x0,0x0,0x8,0xc,0x7,0x3,0x0,0x0,
0x80,0xa0,0xe0,0xc0,0xc0,0xe0,0xa0,0x80,0x0,0x2,0x3,0x1,0x1,0x3,0x2,0x0,
0x0,0x80,0x80,0xe0,0xe0,0x80,0x80,0x0,0x0,0x0,0x0,0x3,0x3,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x1e,0xe,0x0,0x0,0x0,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc,0xc,0x0,0x0,0x0,
0x0,0x0,0x0,0x80,0xc0,0x60,0x30,0x0,0xc,0x6,0x3,0x1,0x0,0x0,0x0,0x0,
0xf0,0xf8,0xc,0xc4,0xc,0xf8,0xf0,0x0,0x3,0x7,0xc,0x8,0xc,0x7,0x3,0x0,
0x0,0x10,0x18,0xfc,0xfc,0x0,0x0,0x0,0x0,0x8,0x8,0xf,0xf,0x8,0x8,0x0,
0x8,0xc,0x84,0xc4,0x64,0x3c,0x18,0x0,0xe,0xf,0x9,0x8,0x8,0xc,0xc,0x0,
0x8,0xc,0x44,0x44,0x44,0xfc,0xb8,0x0,0x4,0xc,0x8,0x8,0x8,0xf,0x7,0x0,
0xc0,0xe0,0xb0,0x98,0xfc,0xfc,0x80,0x0,0x0,0x0,0x0,0x8,0xf,0xf,0x8,0x0,
0x7c,0x7c,0x44,0x44,0x44,0xc4,0x84,0x0,0x4,0xc,0x8,0x8,0x8,0xf,0x7,0x0,
0xf0,0xf8,0x4c,0x44,0x44,0xc0,0x80,0x0,0x7,0xf,0x8,0x8,0x8,0xf,0x7,0x0,
0xc,0xc,0x4,0x84,0xc4,0x7c,0x3c,0x0,0x0,0x0,0xf,0xf,0x0,0x0,0x0,0x0,
0xb8,0xfc,0x44,0x44,0x44,0xfc,0xb8,0x0,0x7,0xf,0x8,0x8,0x8,0xf,0x7,0x0,
0x38,0x7c,0x44,0x44,0x44,0xfc,0xf8,0x0,0x0,0x8,0x8,0x8,0xc,0x7,0x3,0x0,
0x0,0x0,0x0,0x30,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x6,0x0,0x0,0x0,
0x0,0x0,0x0,0x30,0x30,0x0,0x0,0x0,0x0,0x0,0x8,0xe,0x6,0x0,0x0,0x0,
0x0,0x80,0xc0,0x60,0x30,0x18,0x8,0x0,0x0,0x0,0x1,0x3,0x6,0xc,0x8,0x0,
0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x0,
0x0,0x8,0x18,0x30,0x60,0xc0,0x80,0x0,0x0,0x8,0xc,0x6,0x3,0x1,0x0,0x0,
0x18,0x1c,0x4,0xc4,0xe4,0x3c,0x18,0x0,0x0,0x0,0x0,0xd,0xd,0x0,0x0,0x0,
0xf0,0xf8,0x8,0xc8,0xc8,0xf8,0xf0,0x0,0x7,0xf,0x8,0xb,0xb,0xb,0x1,0x0,
0xe0,0xf0,0x98,0x8c,0x98,0xf0,0xe0,0x0,0xf,0xf,0x0,0x0,0x0,0xf,0xf,0x0,
0x4,0xfc,0xfc,0x44,0x44,0xfc,0xb8,0x0,0x8,0xf,0xf,0x8,0x8,0xf,0x7,0x0,
0xf0,0xf8,0xc,0x4,0x4,0xc,0x18,0x0,0x3,0x7,0xc,0x8,0x8,0xc,0x6,0x0,
0x4,0xfc,0xfc,0x4,0xc,0xf8,0xf0,0x0,0x8,0xf,0xf,0x8,0xc,0x7,0x3,0x0,
0x4,0xfc,0xfc,0x44,0xe4,0xc,0x1c,0x0,0x8,0xf,0xf,0x8,0x8,0xc,0xe,0x0,
0x4,0xfc,0xfc,0x44,0xe4,0xc,0x1c,0x0,0x8,0xf,0xf,0x8,0x0,0x0,0x0,0x0,
0xf0,0xf8,0xc,0x84,0x84,0x8c,0x98,0x0,0x3,0x7,0xc,0x8,0x8,0x7,0xf,0x0,
0xfc,0xfc,0x40,0x40,0x40,0xfc,0xfc,0x0,0xf,0xf,0x0,0x0,0x0,0xf,0xf,0x0,
0x0,0x0,0x4,0xfc,0xfc,0x4,0x0,0x0,0x0,0x0,0x8,0xf,0xf,0x8,0x0,0x0,
0x0,0x0,0x0,0x4,0xfc,0xfc,0x4,0x0,0x7,0xf,0x8,0x8,0xf,0x7,0x0,0x0,
0x4,0xfc,0xfc,0xc0,0xe0,0x3c,0x1c,0x0,0x8,0xf,0xf,0x0,0x1,0xf,0xe,0x0,
0x4,0xfc,0xfc,0x4,0x0,0x0,0x0,0x0,0x8,0xf,0xf,0x8,0x8,0xc,0xe,0x0,
0xfc,0xfc,0x38,0x70,0x38,0xfc,0xfc,0x0,0xf,0xf,0x0,0x0,0x0,0xf,0xf,0x0,
0xfc,0xfc,0x38,0x70,0xe0,0xfc,0xfc,0x0,0xf,0xf,0x0,0x0,0x0,0xf,0xf,0x0,
0xf8,0xfc,0x4,0x4,0x4,0xfc,0xf8,0x0,0x7,0xf,0x8,0x8,0x8,0xf,0x7,0x0,
0x4,0xfc,0xfc,0x44,0x44,0x7c,0x38,0x0,0x8,0xf,0xf,0x8,0x0,0x0,0x0,0x0,
0xf8,0xfc,0x4,0x4,0x4,0xfc,0xf8,0x0,0x7,0xf,0x8,0xe,0x3c,0x3f,0x27,0x0,
0x4,0xfc,0xfc,0x44,0xc4,0xfc,0x38,0x0,0x8,0xf,0xf,0x0,0x0,0xf,0xf,0x0,
0x18,0x3c,0x64,0x44,0xc4,0x9c,0x18,0x0,0x6,0xe,0x8,0x8,0x8,0xf,0x7,0x0,
0x0,0x1c,0xc,0xfc,0xfc,0xc,0x1c,0x0,0x0,0x0,0x8,0xf,0xf,0x8,0x0,0x0,
0xfc,0xfc,0x0,0x0,0x0,0xfc,0xfc,0x0,0x7,0xf,0x8,0x8,0x8,0xf,0x7,0x0,
0xfc,0xfc,0x0,0x0,0x0,0xfc,0xfc,0x0,0x1,0x3,0x6,0xc,0x6,0x3,0x1,0x0,
0xfc,0xfc,0x0,0xc0,0x0,0xfc,0xfc,0x0,0x7,0xf,0xe,0x3,0xe,0xf,0x7,0x0,
0xc,0x3c,0xf0,0xe0,0xf0,0x3c,0xc,0x0,0xc,0xf,0x3,0x1,0x3,0xf,0xc,0x0,
0x0,0x3c,0x7c,0xc0,0xc0,0x7c,0x3c,0x0,0x0,0x0,0x8,0xf,0xf,0x8,0x0,0x0,
0x1c,0xc,0x84,0xc4,0x64,0x3c,0x1c,0x0,0xe,0xf,0x9,0x8,0x8,0xc,0xe,0x0,
0x0,0x0,0xfc,0xfc,0x4,0x4,0x0,0x0,0x0,0x0,0xf,0xf,0x8,0x8,0x0,0x0,
0x38,0x70,0xe0,0xc0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x3,0x7,0xe,0x0,
0x0,0x0,0x4,0x4,0xfc,0xfc,0x0,0x0,0x0,0x0,0x8,0x8,0xf,0xf,0x0,0x0,
0x8,0xc,0x6,0x3,0x6,0xc,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x0,0x0,0x3,0x7,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0xa0,0xa0,0xa0,0xe0,0xc0,0x0,0x0,0x7,0xf,0x8,0x8,0x7,0xf,0x8,0x0,
0x4,0xfc,0xfc,0x20,0x60,0xc0,0x80,0x0,0x0,0xf,0xf,0x8,0x8,0xf,0x7,0x0,
0xc0,0xe0,0x20,0x20,0x20,0x60,0x40,0x0,0x7,0xf,0x8,0x8,0x8,0xc,0x4,0x0,
0x80,0xc0,0x60,0x24,0xfc,0xfc,0x0,0x0,0x7,0xf,0x8,0x8,0x7,0xf,0x8,0x0,
0xc0,0xe0,0xa0,0xa0,0xa0,0xe0,0xc0,0x0,0x7,0xf,0x8,0x8,0x8,0xc,0x4,0x0,
0x40,0xf8,0xfc,0x44,0xc,0x18,0x0,0x0,0x8,0xf,0xf,0x8,0x0,0x0,0x0,0x0,
0xc0,0xe0,0x20,0x20,0xc0,0xe0,0x20,0x0,0x27,0x6f,0x48,0x48,0x7f,0x3f,0x0,0x0,
0x4,0xfc,0xfc,0x40,0x20,0xe0,0xc0,0x0,0x8,0xf,0xf,0x0,0x0,0xf,0xf,0x0,
0x0,0x0,0x20,0xec,0xec,0x0,0x0,0x0,0x0,0x0,0x8,0xf,0xf,0x8,0x0,0x0,
0x0,0x0,0x0,0x0,0x20,0xec,0xec,0x0,0x0,0x30,0x70,0x40,0x40,0x7f,0x3f,0x0,
0x4,0xfc,0xfc,0x80,0xc0,0x60,0x20,0x0,0x8,0xf,0xf,0x1,0x3,0xe,0xc,0x0,
0x0,0x0,0x4,0xfc,0xfc,0x0,0x0,0x0,0x0,0x0,0x8,0xf,0xf,0x8,0x0,0x0,
0xe0,0xe0,0x60,0xc0,0x60,0xe0,0xc0,0x0,0xf,0xf,0x0,0x7,0x0,0xf,0xf,0x0,
0x20,0xe0,0xc0,0x20,0x20,0xe0,0xc0,0x0,0x0,0xf,0xf,0x0,0x0,0xf,0xf,0x0,
0xc0,0xe0,0x20,0x20,0x20,0xe0,0xc0,0x0,0x7,0xf,0x8,0x8,0x8,0xf,0x7,0x0,
0x20,0xe0,0xc0,0x20,0x20,0xe0,0xc0,0x0,0x40,0x7f,0x7f,0x48,0x8,0xf,0x7,0x0,
0xc0,0xe0,0x20,0x20,0xc0,0xe0,0x20,0x0,0x7,0xf,0x8,0x48,0x7f,0x7f,0x40,0x0,
0x20,0xe0,0xc0,0x60,0x20,0xe0,0xc0,0x0,0x8,0xf,0xf,0x8,0x0,0x0,0x0,0x0,
0x40,0xe0,0xa0,0x20,0x20,0x60,0x40,0x0,0x4,0xc,0x9,0x9,0xb,0xe,0x4,0x0,
0x20,0x20,0xf8,0xfc,0x20,0x20,0x0,0x0,0x0,0x0,0x7,0xf,0x8,0xc,0x4,0x0,
0xe0,0xe0,0x0,0x0,0xe0,0xe0,0x0,0x0,0x7,0xf,0x8,0x8,0x7,0xf,0x8,0x0,
0x0,0xe0,0xe0,0x0,0x0,0xe0,0xe0,0x0,0x0,0x3,0x7,0xc,0xc,0x7,0x3,0x0,
0xe0,0xe0,0x0,0x80,0x0,0xe0,0xe0,0x0,0x7,0xf,0xc,0x7,0xc,0xf,0x7,0x0,
0x20,0x60,0xc0,0x80,0xc0,0x60,0x20,0x0,0x8,0xc,0x7,0x3,0x7,0xc,0x8,0x0,
0xe0,0xe0,0x0,0x0,0x0,0xe0,0xe0,0x0,0x47,0x4f,0x48,0x48,0x68,0x3f,0x1f,0x0,
0x60,0x60,0x20,0xa0,0xe0,0x60,0x20,0x0,0xc,0xe,0xb,0x9,0x8,0xc,0xc,0x0,
0x0,0x40,0x40,0xf8,0xbc,0x4,0x4,0x0,0x0,0x0,0x0,0x7,0xf,0x8,0x8,0x0,
0x0,0x0,0x0,0xbc,0xbc,0x0,0x0,0x0,0x0,0x0,0x0,0xf,0xf,0x0,0x0,0x0,
0x0,0x4,0x4,0xbc,0xf8,0x40,0x40,0x0,0x0,0x8,0x8,0xf,0x7,0x0,0x0,0x0,
0x8,0xc,0x4,0xc,0x8,0xc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x80,0xc0,0x60,0x30,0x60,0xc0,0x80,0x0,0x7,0x7,0x4,0x4,0x4,0x7,0x7,0x0
};
unsigned char code hz[]={
/*解: 0*/
0x20,0x10,0xec,0x27,0xf4,0x2c,0xe4,0x40,
0x22,0x9e,0x2,0xd2,0x22,0x1f,0x2,0x0,
0x80,0x40,0x3f,0x9,0x3f,0x89,0xff,0x8,
0xa,0x9,0x9,0xff,0x9,0x9,0x8,0x0
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -