⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.h

📁 电子钟(有二十四节气)
💻 H
📖 第 1 页 / 共 2 页
字号:
#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 + -