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

📄 lcd12864.c

📁 LPC2132 驅動 LCD12834的驅動程序.能顯示 基本的功能.
💻 C
字号:
#include "config.h"
#include"LCD12864.h"

const uint8  kuai[]={
/*--  文字:  帅  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0xF8,0x00,0x00,0xFF,0x00,0xF8,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0xF8,0x00,
0x80,0x47,0x20,0x18,0x07,0x00,0x1F,0x00,0x00,0x00,0xFF,0x00,0x08,0x18,0x0F,0x00,

};

const uint8  liao[]={
/*--  文字:  廖  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0xFE,0x8A,0x5A,0x2A,0x8A,0x7B,0x82,0x0A,0x5A,0xAA,0xFA,0x02,0x02,0x00,
0x80,0x60,0x1F,0x84,0xAC,0xAA,0xAA,0x55,0x54,0x4B,0x29,0x22,0x12,0x14,0x04,0x00,

};

const uint8  xu[]={
/*--  文字:  旭  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x10,0x10,0x10,0xFF,0x10,0xF0,0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0xFE,0x00,0x00,
0x40,0x30,0x0E,0x01,0x00,0x3F,0x40,0x40,0x47,0x44,0x44,0x44,0x44,0x47,0x70,0x00,

};

const uint8  ming[]={
/*--  文字:  明  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0xFE,0x22,0x22,0x22,0xFE,0x00,0x00,0xFF,0x11,0x11,0x11,0x11,0xFF,0x00,0x00,
0x00,0x03,0x02,0x02,0x02,0x43,0x20,0x18,0x07,0x01,0x01,0x41,0x81,0x7F,0x00,0x00,

};

const uint8  ge[]={
/*--  文字:  哥  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x02,0x02,0x7A,0x2A,0x2A,0x2A,0x2A,0x7A,0x02,0x02,0x7E,0x02,0x82,0x00,0x00,
0x01,0x01,0x01,0x3D,0x15,0x15,0x15,0x15,0x3D,0x41,0x81,0x7F,0x01,0x01,0x01,0x00,
};


/******************************************************************************************************************
* 函数名称:LCM12864_Delay()
* 功    能:软件延时函数。用于LCM12864显示输出时序控制。
* 入口参数:无
* 出口参数:无
*******************************************************************************************************************/
void LCM12864_Delay(void)
{
  uint8 i;

  for(i=0; i<100; i++);
}

/******************************************************************************************************************/
void DelayMS (uint32 dly)
{
	uint32 i;
	
	for ( ; dly>0; dly--)
		for (i=0; i<50000; i++);
}

void hz_disp16f(uint8 pag, uint8 col, const uint8  *hzk,uint8 CS0_CS1 )

{

uint8 j=0,i=0;
 CS0_CS1=CS0_CS1;

for(j=0;j<2;j++)
  {
    
	LCD_W_Code(LCM12864_ADDRSTRX+pag+j,CS0_CS1);
    
	LCD_W_Code(LCM12864_ADDRSTRY+col,CS0_CS1);

	for(i=0;i<16;i++) 
	{
		LCD_W_Data(~hzk[16*j+i],CS0_CS1);
	}
   }	

}

void hz_disp16(uint8 pag, uint8 col, const uint8  *hzk,uint8 CS0_CS1 )

{

uint8 j=0,i=0;
 CS0_CS1=CS0_CS1;

for(j=0;j<2;j++)
  {
    
	LCD_W_Code(LCM12864_ADDRSTRX+pag+j,CS0_CS1);
    
	LCD_W_Code(LCM12864_ADDRSTRY+col,CS0_CS1);

	for(i=0;i<16;i++) 
	{
		LCD_W_Data(hzk[16*j+i],CS0_CS1);
	}
   }	

}


void InitLCD12864()
{
	
	L_LCM12864_RST();//LCDRest=0;
	DelayMS(2);                       //注意此时延时的时间  
	H_LCM12864_RST();//LCDRest=1;
	DelayMS(2);
	//LCD12864_Clear();
	//LCDCs1=0;
	//LCDCs2=1;
	DelayMS(1);
	LCD_W_Code(LCM12864_DISPON ,  CS0);
	LCD_W_Code(LCM12864_STARTROW ,CS0);
	LCD_W_Code(LCM12864_ADDRSTRX, CS0);
	LCD_W_Code(LCM12864_ADDRSTRY, CS0);
	
	LCD_W_Code(LCM12864_DISPON ,  CS1);
	LCD_W_Code(LCM12864_STARTROW ,CS1);
	LCD_W_Code(LCM12864_ADDRSTRX, CS1);
	LCD_W_Code(LCM12864_ADDRSTRY, CS1);
}

/******************************************************************************************************************
* 函数名称:LCD_W_Code()
* 功    能:向LCM12864写命令。
* 入口参数:LCDCode    要写入LCM12864的命令字  CS0_CS1
* 出口参数:无
*******************************************************************************************************************/
void LCD_W_Code(uint8 LCDCode, uint8 CS0_CS1)
{
	//	LCD_check_busy();
	
	if(0x00==CS0_CS1)
		{
			H_LCM12864_CSA();//LCDCs1=1;
			L_LCM12864_CSB();//LCDCs2=0;
		}
	else
		{
			L_LCM12864_CSA();//LCDCs1=0;
			H_LCM12864_CSB();//LCDCs2=1;
		}
		
    L_LCM12864_E(); 
	L_LCM12864_RS();//LCD_DI=0; RS=0,表示发送命令
	L_LCM12864_RW();//LCD_WR=0;
	OutData(LCDCode);
	LCM12864_Delay();
	H_LCM12864_E();
	LCM12864_Delay();
	L_LCM12864_E();
	LCM12864_Delay();
	
	//LCD_DATA=tpcode;
	//LCD_E=1;
	//_nop_();
	//LCD_E=0;
}
void LCD12864_Clear(void)
{
	unsigned char i,j;
	for(j=0;j<8;j++)
	{
		LCD_W_Code(LCM12864_ADDRSTRX+j,CS0);
		LCD_W_Code(LCM12864_ADDRSTRY,  CS0);
		LCD_W_Code(LCM12864_ADDRSTRX+j,CS1);
		LCD_W_Code(LCM12864_ADDRSTRY,  CS1);
		for(i=0;i<64;i++)
			{	
				LCD_W_Data(0x00,CS0);	
				LCD_W_Data(0x00,CS1);
			}
	}
      //LCD清屏函数
}

void LCD_W_Data(uint8 wDate ,uint8 CS0_CS1)
{

  if(0x00==CS0_CS1)
		{
			H_LCM12864_CSA();//LCDCs1=1;
			L_LCM12864_CSB();//LCDCs2=0;
		}
  else
		{
			L_LCM12864_CSA();//LCDCs1=0;
			H_LCM12864_CSB();//LCDCs2=1;
		}
		
  L_LCM12864_E();                // 将E置低
  H_LCM12864_RS();              // RS=1,表示发送数据
  L_LCM12864_RW();              //LCD_WR=0;
  OutData(wDate);
  LCM12864_Delay();
  H_LCM12864_E();
  LCM12864_Delay();
  L_LCM12864_E();
  LCM12864_Delay();
}


void OutData(uint8 Date)
{
  if((Date & 0x01)==1)   H_LCM12864_D0(); else L_LCM12864_D0();
  if((Date & 0x02)==2)   H_LCM12864_D1(); else L_LCM12864_D1();
  if((Date & 0x04)==4)   H_LCM12864_D2(); else L_LCM12864_D2();
  if((Date & 0x08)==8)   H_LCM12864_D3(); else L_LCM12864_D3();
  if((Date & 0x10)==16)  H_LCM12864_D4(); else L_LCM12864_D4();
  if((Date & 0x20)==32)  H_LCM12864_D5(); else L_LCM12864_D5();
  if((Date & 0x40)==64)  H_LCM12864_D6(); else L_LCM12864_D6();
  if((Date & 0x80)==128) H_LCM12864_D7(); else L_LCM12864_D7();
}

⌨️ 快捷键说明

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