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

📄 lcd.c

📁 NH1232的驱动,51版的,知识源于网络,源于www.pudn.com
💻 C
字号:

#include <lcd.h>

char code  FontSystem5x8[][6]= {

0x7e,0x11,0x11,0x11,0x7e,0x00, /* A */
0x7f,0x49,0x49,0x49,0x36, 0x00,/* B */
0x3e,0x41,0x41,0x41,0x22, 0x00,/* C */
0x7f,0x41,0x41,0x22,0x1c, 0x00,/* D */
0x7f,0x49,0x49,0x49,0x41, 0x00,/* E */
0x7f,0x09,0x09,0x09,0x01, 0x00,/* F */
0x3e,0x41,0x49,0x49,0x7a, 0x00,/* G */
0x7f,0x08,0x08,0x08,0x7f, 0x00,/* H */
0x00,0x41,0x7f,0x41,0x00, 0x00,/* I */
0x20,0x40,0x41,0x3f,0x01, 0x00,/* J */
0x7f,0x08,0x14,0x22,0x41, 0x00,/* K */
0x7f,0x40,0x40,0x40,0x40, 0x00,/* L */
0x7f,0x02,0x0c,0x02,0x7f, 0x00,/* M */
0x7f,0x04,0x08,0x10,0x7f, 0x00,/* N */
0x3e,0x41,0x41,0x41,0x3e, 0x00,/* O */
0x7f,0x09,0x09,0x09,0x06, 0x00,/* P		0x50 */
0x3e,0x41,0x51,0x21,0x5e, 0x00,/* Q */
0x7f,0x09,0x19,0x29,0x46,0x00, /* R */
0x26,0x49,0x49,0x49,0x32, 0x00,/* S */
0x01,0x01,0x7f,0x01,0x01, 0x00,/* T */
0x3f,0x40,0x40,0x40,0x3f, 0x00,/* U */
0x1f,0x20,0x40,0x20,0x1f, 0x00,/* V */
0x3f,0x40,0x38,0x40,0x3f, 0x00,/* W */
0x63,0x14,0x08,0x14,0x63, 0x00,/* X */
0x07,0x08,0x70,0x08,0x07, 0x00,/* Y */
0x61,0x51,0x49,0x45,0x43, 0x00,/* Z */
0x00,0x7f,0x41,0x41,0x00, 0x00,/* [ */
0x02,0x04,0x08,0x10,0x20, 0x00,/* \ */ 
0x00,0x41,0x41,0x7f,0x00, 0x00,/* ] */
0x04,0x02,0x01,0x02,0x04, 0x00,/* ^ */
0x40,0x40,0x40,0x40,0x40, 0x00,/* _ */
0x00,0x00,0x03,0x05,0x00, 0x00,/* `		0x60 */
0x20,0x54,0x54,0x54,0x78, 0x00,/* a */
0x7F,0x44,0x44,0x44,0x38, 0x00,/* b */
0x38,0x44,0x44,0x44,0x44, 0x00,/* c */
0x38,0x44,0x44,0x44,0x7f, 0x00,/* d */
0x38,0x54,0x54,0x54,0x18, 0x00,/* e */
0x04,0x04,0x7e,0x05,0x05, 0x00,/* f */
0x08,0x54,0x54,0x54,0x3c, 0x00,/* g */
0x7f,0x08,0x04,0x04,0x78, 0x00,/* h */
0x00,0x44,0x7d,0x40,0x00, 0x00,/* i */
0x20,0x40,0x44,0x3d,0x00, 0x00,/* j */
0x7f,0x10,0x28,0x44,0x00, 0x00,/* k */
0x00,0x41,0x7f,0x40,0x00, 0x00,/* l */
0x7c,0x04,0x7c,0x04,0x78, 0x00,/* m */
0x7c,0x08,0x04,0x04,0x78, 0x00,/* n */
0x38,0x44,0x44,0x44,0x38, 0x00,/* o */
0x7c,0x14,0x14,0x14,0x08, 0x00,/* p		0x70 */
0x08,0x14,0x14,0x14,0x7c, 0x00,/* q */
0x7c,0x08,0x04,0x04,0x00, 0x00,/* r */
0x48,0x54,0x54,0x54,0x24, 0x00,/* s */
0x04,0x04,0x3f,0x44,0x44, 0x00,/* t */
0x3c,0x40,0x40,0x20,0x7c, 0x00,/* u */
0x1c,0x20,0x40,0x20,0x1c, 0x00,/* v */
0x3c,0x40,0x30,0x40,0x3c, 0x00,/* w */
0x44,0x28,0x10,0x28,0x44, 0x00,/* x */
0x0c,0x50,0x50,0x50,0x3c, 0x00,/* y */
0x44,0x64,0x54,0x4c,0x44, 0x00,/* z */

};

 char code Hanzi[][32]= 
 {
  /*--  文字:  阿  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0xFE,0x12,0x2A,0xC6,0x00,0xE2,0x22,0x22,0x22,0xE2,0x02,0xFE,0x02,0x02,0x00,
0x00,0xFF,0x02,0x04,0x03,0x00,0x03,0x02,0x02,0x02,0x43,0x80,0x7F,0x00,0x00,0x00,

/*--  文字:  啊  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0xFE,0x02,0x02,0xFE,0x00,0xFE,0x32,0xCE,0x00,0xF2,0x12,0xF2,0x02,0xFE,0x02,0x00,
0x07,0x02,0x02,0x07,0x00,0xFF,0x04,0x07,0x00,0x07,0x04,0x47,0x80,0x7F,0x00,0x00,

/*--  文字:  哎  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0xFC,0x04,0x04,0x04,0xFC,0x08,0x08,0xDF,0x08,0x08,0x08,0xDF,0x08,0x08,0x08,0x00,
0x07,0x02,0x02,0x02,0x87,0x40,0x20,0x10,0x0B,0x04,0x0B,0x30,0x60,0xC0,0x40,0x00,

/*--  文字:  哀  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x04,0x04,0xF4,0x94,0x94,0x94,0x95,0x96,0x94,0x94,0xF4,0x04,0x04,0x04,0x00,
0x00,0x10,0x10,0x09,0xFC,0x42,0x21,0x02,0x04,0x0C,0x16,0x33,0x62,0x20,0x20,0x00,

/*--  文字:  唉  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0xFC,0x04,0x04,0xFC,0x00,0x80,0x68,0x5C,0x4B,0xC8,0x48,0x48,0x4A,0x5C,0x08,0x00,
0x07,0x01,0x01,0x03,0x81,0x42,0x22,0x12,0x0A,0x07,0x0A,0x12,0x62,0xC2,0x42,0x00,

/*--  文字:  埃  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x20,0x20,0x20,0xFF,0x20,0x20,0x80,0x68,0x5C,0x4B,0xCA,0x48,0x4A,0x5C,0x08,0x00,
0x10,0x30,0x10,0x0F,0x08,0x49,0x42,0x22,0x12,0x0A,0x07,0x0A,0x12,0x62,0x22,0x00,

/*--  文字:  挨  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x10,0x10,0x10,0xFF,0x90,0x50,0x00,0x88,0x6C,0x4B,0xC8,0x48,0x4C,0x58,0x00,0x00,
0x02,0x42,0x81,0x7F,0x00,0x82,0x82,0x42,0x22,0x1A,0x0F,0x12,0x62,0xC2,0x42,0x00,

/*--  文字:  皑  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0xF8,0x8C,0x8B,0xF8,0x00,0x5E,0x50,0x50,0x5F,0x50,0x50,0xD0,0x1E,0x00,0x00,
0x00,0x3F,0x08,0x08,0x1F,0x00,0x3E,0x42,0x42,0x42,0x42,0x42,0x47,0x40,0x70,0x00,

};


uchar Busy;/*判忙*/
//uchar data i,j,k,Disp_Page;

uchar data Column;/*定义列*/
uchar data Page;/*定义页*/


void GLCD_Locate (uchar  u8Column, uchar u8Line)
{
	Column = u8Column;
	Page = u8Line;
}
void LcdSelectSide(uchar u8LcdSide)
{
	LcdData=0xff; 
	if(u8LcdSide==Left)
	{
		
 		E1=1;/*左半屏片选*/
 		Busy=LcdData;
 		E1=0;/*左半屏片选*/	
	}
	else
	{
		
 		E2=1;/*右半屏片选*/
 		Busy=LcdData;
 		E2=0;
	}
}
void LcdWaitBusy (uchar u8LcdSide)
{
	R_W=1;
 	A0=0;/*读状态指令*/
	 do
 	{
		LcdSelectSide(u8LcdSide);
	}while(Busy&0x80);
}

/********************写屏指令子程序********************/
void LcdInstructionWrite (uchar  u8Instruction,uchar u8LcdSide)
{
	LcdWaitBusy (u8LcdSide);
	R_W=0;/*写数据*/
 	A0=0;
 	LcdData=u8Instruction;
	if(u8LcdSide==Left)
	{
		E1=1;
 		LcdData=u8Instruction;
 		E1=0;/*屏处于未选状态*/
	}
	else
	{
		E2=1;
 		LcdData=u8Instruction;
 		E2=0;/*屏处于未选状态*/
	}
 

}
/********************送屏显示字符子程序********************/
void LcdDataWrite (uchar u8Data,uchar u8LcdSide)
{
	LcdWaitBusy (u8LcdSide);
	A0=1;
 	R_W=0;/*写数据指令*/
	LcdData=u8Data;
	if(u8LcdSide==Left)
	{
		E1=1;
 		LcdData=u8Data;
 		E1=0;/*屏处于未选状态*/
	}
	else
	{
		E2=1;
 		LcdData=u8Data;
 		E2=0;/*屏处于未选状态*/
	}

}

/********************清屏子程序********************/
void Clearlcd()
{
	uchar data i,j,Disp_Page;
 	for(i=0;i<4;i++)
  	{
   		Disp_Page=i|0xb8;/*设置页地址*/
   		LcdInstructionWrite(Disp_Page,Left);		/*送入左半屏*/
   		LcdInstructionWrite(0x00,Left);			/*设置列地址*/
   		/*左半屏清屏*/
   		for(j=0;j<61;j++)
   		{
   			LcdDataWrite(0x00,Left);
		}
  	}              
 	for(i=0;i<4;i++)
  	{
   			Disp_Page=i|0xb8;/*设置页地址*/
			LcdInstructionWrite(Disp_Page,Right);	/*送入右半屏*/   			
   			LcdInstructionWrite(0x00,Right);/*设置列地址*/
			/*右半屏清屏*/
   			for(j=0;j<61;j++)
   			{
				LcdDataWrite(0x00,Right);
			}
  	}              
}
/********************初始化子程序********************/
void GLCD_LcdInit()
{
 	P0=0xff;
 	P1=0xff;
	P2=0xff;
 	P3=0xff;
 	E1=0;
 	E2=0; /*屏幕处于未选状态*/
 	Delay();
 	/*复位*/
 	LcdInstructionWrite(0xE2,Left);
 	LcdInstructionWrite(0xE2,Right);

	/*正常工作状态设置*/
 	LcdInstructionWrite(0xA4,Left);
 	LcdInstructionWrite(0xA4,Right);
 
 	/*占空比选择*/
 	LcdInstructionWrite(0xA9,Left);
 	LcdInstructionWrite(0xA9,Right);

	/*ADC选择指令*/
	LcdInstructionWrite(0xA0,Left);
 	LcdInstructionWrite(0xA0,Right);

 	/*关显示指令*/
	LcdInstructionWrite(0xAE,Left);
 	LcdInstructionWrite(0xAE,Right);
	/*设置起始行*/
	LcdInstructionWrite(0xC0,Left);
 	LcdInstructionWrite(0xC0,Right);

	LcdInstructionWrite(0xe0,Left);
 	LcdInstructionWrite(0xee,Left);

	LcdInstructionWrite(0xe0,Right);
 	LcdInstructionWrite(0xee,Right);
  
 	Clearlcd();
	/*开显示指令*/
	LcdInstructionWrite(0xAF,Left);
 	LcdInstructionWrite(0xAF,Right);
 	
}
/********************延时子程序********************/
void Delay()
{
 uchar data i,j;
 for(i=0;i<255;i++)
  for(j=0;j<255;j++);
}


/********************汉字子程序********************/

//写单字节
void GLCD_Write_Byte (uchar  u8Byte)
{     
   if(Column<61)
   {
   		LcdInstructionWrite(0xe0,Left);
 		LcdInstructionWrite(0xee,Left);
		/*设置页地址*/
     	LcdInstructionWrite(Page|0xb8,Left);
		/*设置页地址*/
     	LcdInstructionWrite(Column|0x00,Left);
     	LcdDataWrite (u8Byte,Left);
   }
   else 
   {
   		LcdInstructionWrite(0xe0,Right);
 		LcdInstructionWrite(0xee,Right);
     	LcdInstructionWrite(Page|0xb8,Right);
     	LcdInstructionWrite((Column-61)|0x00,Right);
     	LcdDataWrite (u8Byte,Right);
   }      
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -