📄 lcm12864ty.txt
字号:
0x00,0x00,0xFC,0xFC,0xFC,0xFC,0x0C,0x0C,0x0C,0x0C,0x1C,0xBC,0xFC,0xF8,0xF8,0xE0,
0x00,0xFC,0xFC,0xFC,0xFC,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x00,0x00,0xFC,0xFC,0xFC,
0xFC,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0xFC,0xFC,0x00,0x00,0xC0,0xF0,0xF8,0xF8,
0x3C,0x1C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x00,0x00,0x00,0xFC,0xFC,0xFC,0xFC,
0x00,0x00,0x7F,0x7F,0x7F,0x7F,0x06,0x06,0x06,0x06,0x07,0x07,0x07,0x03,0x03,0x00,
0x00,0xFF,0xFF,0xFF,0xFF,0xC3,0xC3,0xC3,0xC3,0xC3,0xC0,0x00,0x00,0x1F,0x7F,0x7F,
0xFF,0xE0,0xC0,0xC0,0xC0,0xE0,0xFF,0x7F,0x7F,0x1F,0x00,0x00,0x0F,0x3F,0x7F,0x7F,
0xF0,0xE0,0xC0,0xC0,0xC0,0xC0,0xFE,0xFE,0x7E,0x3E,0x00,0x00,0xFF,0xFF,0xFF,0xFF
};
code uchar Table8[]=
{
/*-- 文字: 相 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x10,0xD0,0xFF,0x30,0x50,0x90,0x00,0xFE,0x22,0x22,0x22,0x22,0xFE,0x00,0x00,
0x04,0x03,0x00,0xFF,0x00,0x00,0x01,0x00,0xFF,0x42,0x42,0x42,0x42,0xFF,0x00,0x00,
/*-- 文字: 约 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x40,0x60,0x58,0xC7,0x60,0x18,0x40,0x20,0x58,0x8F,0x08,0x08,0x08,0xF8,0x00,0x00,
0x10,0x32,0x13,0x12,0x0A,0x0A,0x08,0x00,0x00,0x00,0x43,0x80,0x40,0x3F,0x00,0x00,
/*-- 文字: 丛 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0xFE,0x80,0x00,0x00,0x00,0x00,0x00,
0x20,0x30,0x2C,0x23,0x20,0x21,0x36,0x2C,0x23,0x20,0x20,0x23,0x26,0x3C,0x28,0x00,
/*-- 文字: 林 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x10,0x90,0xFF,0x90,0x10,0x00,0x10,0x10,0xD0,0xFF,0x90,0x10,0x10,0x10,0x00,
0x08,0x06,0x01,0xFF,0x00,0x13,0x08,0x04,0x03,0x00,0xFF,0x01,0x06,0x18,0x08,0x00
};
code uchar Table9[]=
{
/*-- 文字: 浪 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x08,0x30,0x01,0xC6,0x30,0x00,0xFC,0x94,0x95,0x96,0x94,0x94,0xFC,0x00,0x00,0x00,
0x04,0x04,0xFE,0x01,0x00,0x00,0xFF,0x40,0x21,0x06,0x08,0x34,0x62,0xC2,0x40,0x00,
/*-- 文字: 漫 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x20,0x81,0x66,0x00,0xC0,0x5F,0xD5,0x55,0x55,0xD5,0x55,0x5F,0xC0,0x00,0x00,
0x04,0xFC,0x03,0x00,0x00,0x81,0x85,0x4D,0x55,0x25,0x35,0x4D,0xC5,0x41,0x00,0x00,
/*-- 文字: 野 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x7E,0x4A,0xFE,0x4A,0x4A,0x7E,0x00,0x42,0x52,0xD2,0x6A,0x46,0xC2,0x40,0x00,
0x22,0x22,0x22,0x1F,0x12,0x12,0x12,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 岭 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0xF0,0x00,0xFF,0x00,0xF0,0x40,0x20,0x10,0x2C,0x43,0x04,0x08,0x70,0x20,0x00,
0x08,0x1F,0x08,0x07,0x04,0x07,0x01,0x05,0x09,0x11,0x29,0x65,0x03,0x01,0x00,0x00
};
void Delay_us(unsigned int DelayTime)
{
while(DelayTime) DelayTime--;
}
void Delay_x10ms(unsigned char DelayTime) //***************10ms延时**********//
{
unsigned char i,j,k;
for(i=0;i<DelayTime;i++)
for(j=0;j<10;j++)
for(k=0;k<120;k++) {;}
}
/*----------------------------------------------------------------------------
下面这个函数用于液晶模块的忙信号检测。
----------------------------------------------------------------------------*/
void LCD_Check_Busy(void)
{
while(1)
{
LCD_EN = 0;
LCD_RS = 0;
LCD_RW = 1;
LCD_PORT = 0xff;
LCD_EN = 1;
if(!LCD_Busy) break;
}
LCD_EN = 0;
}
/*----------------------------------------------------------------------------
下面这个函数用于向液晶模块写入控制指令代码。
函数入口参数:Command ------ 向液晶模块写入的控制指令代码 。
CS_Num ------ 左右半屏的选数值
----------------------------------------------------------------------------*/
void LCD_WriteCommand(uchar Command, uchar CS_Num)
{
LCD_Check_Busy();
if(CS_Num==1) /*选择左半屏*/
{
LCD_CS1 = 0;
LCD_CS2 = 1;
}
else if(CS_Num==2) /*选择右半屏*/
{
LCD_CS1 = 1;
LCD_CS2 = 0;
}
LCD_EN = 0; /* 使能信号为L */
LCD_RS = 0; /* 置寄存器选择为L */
LCD_RW = 0; /* 置读/写选择为L */
LCD_PORT = Command; /* 将控制指令代码输出到的数据端口 */
LCD_EN = 1; /* 使能信号为H */
Delay_us(1); /* 延时2us */
LCD_EN = 0; /* 使能信号为L */
LCD_CS1 = 1; /* 置片选1为L */
LCD_CS2 = 1; /* 置片选2为L */
}
/*----------------------------------------------------------------------------
下面这个函数用于向液晶模块写入显示数据。
函数入口参数:Data------ 向液晶模块写入的显示数据 。
CS_Num-------左右半屏的选数值
----------------------------------------------------------------------------*/
void LCD_WriteData(uchar Data,uchar CS_Num)
{
LCD_Check_Busy();
if(CS_Num==1) /*选择左半屏*/
{
LCD_CS1 = 0;
LCD_CS2 = 1;
}
else if(CS_Num==2) /*选择右半屏*/
{
LCD_CS1 = 1;
LCD_CS2 = 0;
}
LCD_EN = 0;
LCD_RS = 1; /* 置寄存器选择为H */
LCD_RW = 0; /* 置读/写选择为L */
LCD_PORT = Data; /* 将显示数据输出到的数据端口 */
LCD_EN = 1; /* 使能信号为H */
Delay_us(1); /* 延时2us */
LCD_EN = 0; /* 使能信号为L */
LCD_CS1= 1; /* 置片选1为L */
LCD_CS2= 1; /* 置片选2为L */
}
/*---------------------------------------------------------------------------
*下面这个函数用于向液晶模块左右半屏写入图象显示数据。
*函数入口参数:DisBuf-----向液晶模块写入的图象显示数据
Side_Num-----液晶模块左右半屏的选择
---------------------------------------------------------------------------*/
void LCD_Graph_Play(uchar *DisBuf,uchar Side_Num)
{
uchar i,k,COM;
for(i=0;i<8;i++)
{
COM=0xB8+i;
LCD_WriteCommand(COM,Side_Num);
COM=0x40;
LCD_WriteCommand(COM,Side_Num);
for(k=0;k<64;k++)
{
LCD_WriteData(DisBuf[i*64+k],Side_Num);
}
}
Delay_us(2);
}
/*---------------------------------------------------------------------------
*下面这个函数用于向液晶模块左右半屏写入汉字显示数据。
*函数入口参数:DisBuf-----向液晶模块写入的汉字显示数据
Side_Num------液晶模块左右半屏的选择数
Page_Num------开始显示页数(0----7),共八页
Clm_Num------开始显示列数 (16的倍数),共64列
Word_Num------每页显示的汉字个数(最多为4个)
---------------------------------------------------------------------------*/
void LCD_Play(uchar Page_Num,uchar Clm_Num,uchar Word_Num,uchar *DisBuf,uchar Side_Num)
{
uchar i,k,COM;
COM=0xB8+Page_Num;
LCD_WriteCommand(COM,Side_Num);
COM=0x40+Clm_Num;
LCD_WriteCommand(COM,Side_Num);
for(i=0;i<Word_Num;i++)
{
for(k=0;k<16;k++)
{
LCD_WriteData(DisBuf[k+32*i],Side_Num);
}
}
Page_Num++;
COM=0xB8+Page_Num;
LCD_WriteCommand(COM,Side_Num);
COM=0x40+Clm_Num;
LCD_WriteCommand(COM,Side_Num);
for(i=0;i<Word_Num;i++)
{
for(k=16;k<32;k++)
{
LCD_WriteData(DisBuf[k+32*i],Side_Num);
}
}
Delay_us(2);
}
/*---------------------------------------------------------------------------
下面这个函数用于液晶模块的清屏。
---------------------------------------------------------------------------*/
void LCD_CLR(uchar Side_Num)
{
uchar i,k,COM;
for(i=0;i<8;i++)
{
COM=0xB8+i;
LCD_WriteCommand(COM,Side_Num);
COM=0x40;
LCD_WriteCommand(COM,Side_Num);
for(k=0;k<64;k++)
{
LCD_WriteData(0x00,Side_Num);
}
}
Delay_us(2);
}
/*---------------------------------------------------------------------------
下面这个函数用于向液晶模块初始化。
如果没有写完一个半屏的数据就要充分结合此函数来达到要显示的效果
---------------------------------------------------------------------------*/
void LCD_Initial(void)
{
LCD_RST = 0; /* 置复位信号为低电平 */
Delay_us(2);
LCD_RST = 1; /* 置复位信号为高电平 */
LCD_WriteCommand(0x3F,Left); /*显示开*/
LCD_WriteCommand(0x3F,Right);
LCD_WriteCommand(0xC0,Left); /*起始行*/
LCD_WriteCommand(0xC0,Right);
LCD_WriteCommand(0xB8,Left); /*起始页*/
LCD_WriteCommand(0xB8,Right);
LCD_WriteCommand(0x40,Left); /*起始列*/
LCD_WriteCommand(0x40,Right);
}
/*---------------------------------------------------------------------------
下面这个函数为主函数,根据程序要实现的功能写相应的应用程序
---------------------------------------------------------------------------*/
void main(void)
{
LCD_Initial();
LCD_CLR(Left);
LCD_CLR(Right);
LCD_Play(3,0,4,Table,Left);
LCD_Play(3,0,4,Table0,Right);
Delay_x10ms(250);
Delay_x10ms(250);
Delay_x10ms(250);
Delay_x10ms(250);
LCD_CLR(Left);
LCD_CLR(Right);
LCD_Graph_Play(Table1,Left);
LCD_Graph_Play(Table2,Right);
LCD_Play(6,0,4,Table8,Left);
LCD_Play(6,0,4,Table9,Right);
Delay_x10ms(250);
Delay_x10ms(250);
Delay_x10ms(250);
Delay_x10ms(250);
LCD_Graph_Play(Table5,Left);
LCD_Graph_Play(Table5,Right);
LCD_Play(6,0,4,Table3,Left);
LCD_Play(6,0,4,Table4,Right);
Delay_x10ms(250);
Delay_x10ms(250);
Delay_x10ms(250);
Delay_x10ms(250);
LCD_Graph_Play(Table6,Left);
LCD_Graph_Play(Table7,Right);
Delay_x10ms(250);
Delay_x10ms(250);
Delay_x10ms(250);
Delay_x10ms(250);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -