📄 lcd.h
字号:
#ifndef _LCD_12864
#define _LCD_12864
/*****************************预定义**************************************/
#define uchar unsigned char
#define uint unsigned int /***************************12864管脚配置****************************/
#define port P1
sbit rs=P3^0;
sbit rw=P3^1;
sbit e=P3^2;
sbit cs1=P3^6;
sbit cs2=P3^7;
uchar code ershi_logo[27][32] =
{
/*-- 文字: 小 0 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x80,0x60,0x00,0xFF,0x00,0x20,0x40,0x80,0x00,0x00,0x00,0x00,
0x00,0x08,0x04,0x02,0x01,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x01,0x06,0x00,0x00,
/*-- 文字: 寒 1 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x0C,0x04,0x54,0x54,0xFC,0x55,0x56,0x54,0xFC,0x54,0x54,0x04,0x14,0x0C,0x00,
0x20,0x21,0x11,0x09,0x05,0x23,0x25,0x45,0x49,0x93,0x05,0x09,0x11,0x31,0x10,0x00,
/*-- 文字: 大2 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,0xA0,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
0x00,0x40,0x40,0x20,0x10,0x0C,0x03,0x00,0x01,0x06,0x08,0x10,0x20,0x60,0x20,0x00,
/*-- 文字: 立 3 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x10,0x10,0x90,0x10,0x10,0x11,0x16, 0x10,0x10,0x10,0xD0,0x18,0x10,0x00,0x00,
0x40,0x40,0x40,0x40,0x43,0x5C,0x40,0x40, 0x50,0x4C,0x43,0x40,0x40,0x60,0x40,0x00,
/*-- 文字: 春 4 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x22,0x2A,0x2A,0xAA,0x6A,0x3A,0x2F, 0x2A,0x6A,0xAA,0x2A,0x2A,0x22,0x20,0x00,
0x04,0x04,0x02,0x01,0xFF,0x49,0x49,0x49, 0x49,0x49,0xFF,0x01,0x02,0x06,0x02,0x00,
/*-- 文字: 雨 5 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x02,0x02,0xF2,0x12,0x92,0x12,0x12,0xFE, 0x12,0x92,0x12,0x12,0xFA,0x13,0x02,0x00,
0x00,0x00,0xFF,0x00,0x08,0x11,0x00,0x7F, 0x00,0x08,0x51,0x80,0x7F,0x00,0x00,0x00,
/*-- 文字: 水 6 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x20,0x20,0x20,0x20,0xE0,0x00,0xFF, 0xC0,0x40,0x20,0x10,0x18,0x00,0x00,0x00,
0x20,0x10,0x08,0x04,0x03,0x40,0x80,0x7F, 0x00,0x01,0x02,0x04,0x08,0x18,0x08,0x00,
/*-- 文字: 惊 7 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x80,0x70,0x00,0xFF,0x10,0x24,0xE4,0x24, 0x25,0x26,0x24,0x24,0xF4,0x26,0x04,0x00,
0x00,0x00,0x00,0xFF,0x00,0x20,0x13,0x4A, 0x82,0x7E,0x02,0x0A,0x13,0x30,0x00,0x00,
/*-- 文字: 蛰 8 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x04,0x24,0xA4,0x24,0xFF,0x14,0x14,0x84, 0x94,0x7F,0x44,0x04,0xFE,0x04,0xC0,0x00,
0x00,0x40,0x40,0x5F,0x52,0x52,0x52,0x7F, 0x52,0x52,0x52,0x5E,0x40,0xE1,0x01,0x00,
/*-- 文字: 分 9 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x80,0x40,0x20,0x98,0x86,0x80,0x80, 0x83,0x8C,0x90,0x20,0xC0,0x80,0x80,0x00,
0x01,0x00,0x80,0x40,0x20,0x1F,0x00,0x40, 0x80,0x40,0x3F,0x00,0x00,0x01,0x00,0x00,
/*-- 文字: 清 10 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x22,0x64,0x0C,0xC0,0x44,0x54,0x54, 0x54,0x7F,0x54,0x54,0xD6,0x44,0x40,0x00,
0x04,0x04,0xFE,0x01,0x00,0x00,0xFF,0x15, 0x15,0x15,0x55,0x95,0x7F,0x01,0x00,0x00,
/*-- 文字: 明11 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0xFC,0x44,0x44,0x44,0xFE,0x04,0x00, 0xFE,0x22,0x22,0x22,0x22,0xFF,0x02,0x00,
0x00,0x0F,0x04,0x04,0x04,0x8F,0x40,0x30, 0x0F,0x02,0x02,0x42,0x82,0x7F,0x00,0x00,
/*-- 文字: 谷12 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x10,0x08,0x04,0x83,0x40,0x20,0x18, 0x20,0x41,0x82,0x86,0x0C,0x00,0x00,0x00,
0x02,0x02,0x01,0xFD,0x44,0x44,0x44,0x44, 0x44,0x44,0x44,0xFC,0x01,0x03,0x01,0x00,
/*-- 文字: 夏13 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x01,0x01,0xFD,0x55,0x55,0x57,0x55, 0x55,0x55,0x55,0xFD,0x01,0x01,0x00,0x00,
0x00,0x20,0x90,0x89,0x87,0x4D,0x55,0x25, 0x25,0x55,0x4D,0x85,0x80,0x80,0x00,0x00,
/*-- 文字: 满14 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x21,0x62,0x06,0x24,0x24,0x24,0xEF, 0x24,0x24,0xEF,0x24,0x34,0xA6,0x04,0x00,
0x04,0x04,0xFE,0x01,0xFF,0x11,0x09,0x07, 0x09,0x09,0x07,0x49,0x91,0x7F,0x01,0x00,
/*-- 文字: 芒15 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x84,0x84,0x84,0x84,0x9F,0x84,0xA4,0xC4, 0x84,0x84,0x9F,0x84,0x84,0xC6,0x84,0x00,
0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x40, 0x40,0x40,0x40,0x60,0x40,0x00,0x00,0x00,
/*-- 文字: 种16 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x24,0x24,0xA4,0xFE,0xA3,0x22,0x20,0xF0, 0x10,0x10,0xFF,0x10,0x10,0xF8,0x10,0x00,
0x08,0x06,0x01,0xFF,0x00,0x03,0x00,0x07, 0x02,0x02,0xFF,0x02,0x02,0x07,0x00,0x00,
/*-- 文字: 至17 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x02,0x42,0x62,0x52,0x4A,0x46,0xC2, 0x42,0x42,0x52,0x62,0xC3,0x02,0x00,0x00,
0x40,0x40,0x44,0x44,0x44,0x44,0x44,0x7F, 0x44,0x44,0x44,0x46,0x44,0x60,0x40,0x00,
/*-- 文字: 暑18 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x40,0x5F,0x55,0x55,0xF5,0x55, 0xD5,0x55,0x75,0x5F,0x10,0x88,0x00,0x00,
0x11,0x11,0x09,0x09,0xFD,0x57,0x55,0x55, 0x55,0x55,0x55,0x55,0xFF,0x05,0x01,0x00,
/*-- 文字: 秋19 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x24,0x24,0xA4,0xFE,0x23,0x22,0x80,0x70, 0x00,0xFF,0x00,0x40,0x20,0x30,0x00,0x00,
0x08,0x06,0x01,0xFF,0x81,0x42,0x20,0x18, 0x06,0x01,0x06,0x08,0x30,0x60,0x20,0x00,
/*-- 文字: 处20 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xE0,0x1E,0x10,0x10,0xF0,0x00, 0x00,0xFF,0x20,0x40,0x80,0x80,0x00,0x00,
0x82,0x41,0x20,0x1B,0x04,0x1B,0x20,0x40, 0x40,0x5F,0x40,0x40,0x40,0x61,0x20,0x00,
/*-- 文字: 白21 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xF8,0x08,0x0C,0x0A,0x09,0x08, 0x08,0x08,0x08,0x08,0xFC,0x08,0x00,0x00,
0x00,0x00,0x7F,0x21,0x21,0x21,0x21,0x21, 0x21,0x21,0x21,0x21,0x7F,0x00,0x00,0x00,
/*-- 文字: 露22 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x0C,0xC5,0x45,0x6D,0x55,0xC5,0x3F, 0x05,0xD5,0xAD,0x85,0x85,0x14,0x0C,0x00,
0x00,0x40,0xFB,0x42,0x3E,0x2A,0x2B,0x12, 0xF1,0x9A,0x94,0x9A,0xF1,0x10,0x10,0x00,
/*-- 文字: 霜23 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x0C,0x04,0x55,0xD5,0x55,0x05,0x7F, 0x05,0x55,0x55,0x55,0x04,0x94,0x0C,0x00,
0x00,0x22,0x12,0x0A,0xFF,0x0A,0x12,0x00, 0xFF,0x55,0x55,0x55,0x55,0xFF,0x01,0x00,
/*-- 文字: 降24 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0xFE,0x02,0x22,0xDA,0x06,0x88,0x44, 0x57,0xA4,0x54,0x4C,0x84,0x80,0x80,0x00,
0x00,0xFF,0x08,0x10,0x08,0x07,0x10,0x1E, 0x12,0xFF,0x12,0x12,0x18,0x11,0x00,0x00,
/*-- 文字: 冬25 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x20,0x10,0x08,0x17,0xA4,0x44, 0xA4,0x94,0x0C,0x04,0x00,0x00,0x00,0x00,
0x04,0x04,0x02,0x02,0x01,0x25,0x24,0x48, 0x48,0x80,0x01,0x01,0x02,0x06,0x02,0x00,
/*-- 文字: 雪26 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x0C,0x04,0x55,0x55,0x55,0x05,0xFF, 0x05,0x55,0x55,0x55,0x84,0x14,0x0C,0x00,
0x00,0x00,0x41,0x49,0x49,0x49,0x49,0x49, 0x49,0x49,0x49,0x49,0xFF,0x01,0x00,0x00
};
/********************************************************************************************
* 函数名称:Delay()
* 功 能:延迟时间=a*1ms
* 入口参数:
* 出口参数:无
*********************************************************************************************/
void Delay(uint a)
{
uchar i;
while(a--)
for(i=0;i<125;i++);
}
/********************************************************************************************
* 函数名称:Lcd_Display_On()
* 功 能:LCD显示开
* 入口参数:无
* 出口参数:无
*********************************************************************************************/
void Lcd_Display_On()
{
port=0x3f;
rs=0;
rw=0;
e=1;
e=0;
}
/********************************************************************************************
* 函数名称:Lcd_Display_Off()
* 功 能:LCD显示关
* 入口参数:无
* 出口参数:无
*********************************************************************************************/
void Lcd_Display_Off()
{
port=0x3e;
rs=0;
rw=0;
e=1;
e=0;
}
/********************************************************************************************
* 函数名称:Lcd_Set_X(uchar x)
* 功 能:LCD设置X坐标
* 入口参数:x
* 出口参数:无
*********************************************************************************************/
void Lcd_Set_X(uchar x)
{
port=0xb8|x;
rs=0;
rw=0;
e=1;
e=0;
}
/********************************************************************************************
* 函数名称:Lcd_Set_Y(uchar y)
* 功 能:LCD设置Y坐标
* 入口参数:y
* 出口参数:无
*********************************************************************************************/
void Lcd_Set_Y(uchar y)
{
port=0x40|y;
rs=0;
rw=0;
e=1;
e=0;
}
/********************************************************************************************
* 函数名称:Lcd_Set_X_Y(uchar x, uchar y )
* 功 能:LCD设置x y坐标
* 入口参数:x y
* 出口参数:无
*********************************************************************************************/
void Lcd_Set_X_Y(uchar x, uchar y)
{
if( y<64 )
{ cs1=1; cs2=0; Lcd_Set_Y( y ); }
else
{ cs1=0; cs2=1; Lcd_Set_Y( y-64 ); }
Lcd_Set_X( x);
}
/********************************************************************************************
* 函数名称:Lcd_Write_Command()
* 功 能:写指令代码
* 入口参数:无
* 出口参数:无
*********************************************************************************************/
void Lcd_Write_Command(uchar temp)
{
port=temp;
rs=0;
rw=0;
e=1;
e=0;
}
/********************************************************************************************
* 函数名称:Lcd_Write_Byte()
* 功 能:写数据
* 入口参数:无
* 出口参数:无
*********************************************************************************************/
void Lcd_Write_Byte(uchar temp)
{
port=temp;
rs=1;
rw=0;
e=1;
e=0;
}
/****************************************************************************
*名称:Lcd_Character_16X8( bit bit_flag, uchar x, uchar y, uchar code *point )
*功能:显示16X8字符(字母)
*入口参数:
*出口参数:
*说明:bit_flag = 1 正常显示 bit_flag = 0 黑白反相显示
****************************************************************************/
void Lcd_Character_16X8( bit bit_flag, uchar x, uchar y, uchar code *point )
{
uchar i , j,temp;
temp=y;
if( bit_flag )
{
for( i=0; i<2; i++ )
{
x+=i;
y=temp;
for( j=0;j<8;j++ )
{
Lcd_Set_X_Y( x, y ); y++;
Lcd_Write_Byte( point[ i*8 + j] );
}
}
}
else
{
for( i = 0; i < 2; i++ )
{
x += i;
y = temp;
for( j = 0; j < 8; j++ )
{
Lcd_Set_X_Y( x, y ); y++;
Lcd_Write_Byte( ~point[ i * 8 + j ] );
}
}
}
}
/****************************************************************************
* 名称:Lcd_Character_16X16( bit bit_flag, uchar x, uchar y, uchar code *point )
* 功能:显示16*16字符(汉字)
* 入口参数:x y data
* 出口参数:无
*说明:bit_flag = 1 正常显示 bit_flag = 0 黑白反相显示
****************************************************************************/
void Lcd_Character_16X16( bit bit_flag, uchar x, uchar y, uchar code *point )
{
uchar i,j,temp ;
temp=y;
if( bit_flag )
{
for( i=0; i<2; i++ )
{
x+=i;
y=temp;
for( j=0;j<16;j++ )
{
Lcd_Set_X_Y( x, y ); y++;
Lcd_Write_Byte( point[ i*16 + j] );
}
}
}
else
{
for( i = 0; i<2; i++ )
{
x += i;
y = temp;
for( j = 0; j < 16; j++ )
{
Lcd_Set_X_Y( x, y ); y++;
Lcd_Write_Byte( ~ point[ i * 16 + j ] );
}
}
}
}
/****************************************************************************
* 名称:Lcd_Clear(void)
* 功能:清屏
* 入口参数:无
* 出口参数:无
****************************************************************************/
void Lcd_Clear()
{
uchar i,j;
cs1=1;cs2=1;
for(i=0;i<8;i++)
{
Lcd_Set_X( i );
Lcd_Set_Y( 0 );
for(j=0;j<64;j++)
Lcd_Write_Byte(0x00);
}
}
/*******************************************************************************************
* 函数名称:Lcd_Initial()
* 功 能:初始化LCD
* 入口参数:无
* 出口参数:无
*********************************************************************************************/
void Lcd_Initial()
{
Lcd_Display_Off();
Lcd_Write_Command(0xb8); //Page_Add
Lcd_Write_Command(0x40); //Col_Add
Lcd_Write_Command(0xc0); //Start_Line
Lcd_Display_On();
Lcd_Clear();
}
/****************************************************************************
* 名称:Lcd_Time(uchar * clock_time )
* 功能:显示时间
* 入口参数:无
* 出口参数:无
* 说明 : 时间数组 BCD 码形式
****************************************************************************/
void Lcd_Time(uchar * clock_time )
{
uchar i=0;
//显示 "hour时min分sec秒"
i= * clock_time >> 4;
Lcd_Character_16X8( 1, 2, 80, letter_logo[i]); //显示 sec的高位
i= * clock_time & 0x0f;
Lcd_Character_16X8( 1, 2, 88, letter_logo[i]); //显示 sec的低位
Lcd_Character_16X16( 1, 2, 96 , time_logo[2]); //显示 秒
clock_time ++;
i= * clock_time >> 4;
Lcd_Character_16X8( 1, 2, 48, letter_logo[i]); //显示 min的高位
i= * clock_time & 0x0f;
Lcd_Character_16X8( 1, 2, 56, letter_logo[i]); //显示 min的低位
Lcd_Character_16X16( 1, 2, 64 , time_logo[1]); //显示 分
clock_time ++;
i= * clock_time >> 4;
Lcd_Character_16X8( 1, 2, 16 , letter_logo[i]); //显示 hour的高位
i= * clock_time & 0x0f;
Lcd_Character_16X8( 1, 2, 24 , letter_logo[i]); //显示 hour的低位
Lcd_Character_16X16( 1, 2, 32 , time_logo[0]); //显示 分
}
/****************************************************************************
* 名称:Lcd_Data(uchar * clock_time )
* 功能:显示日期
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -